我正在和opentsdb合作一个学校项目。在这个项目中,我应该创建一个存储机器人时间序列数据的结构。数据以每秒5次的速度收集,每个机器人最多可以有100个活动机器人。
我已经成功地建立了opentsdb并将其链接到hbase集群。然而,在阅读了opentsdb网站上的文档之后,我觉得我对数据模型没有清晰的认识。该网站称,每个时间序列数据点都需要以下数据:
米制的
时间戳
价值
标记-键/值
这就引出我的第一个问题。什么是 value
? 为什么需要它?
回到机器人那里;每个机器人由两个id标识,每个测量值总共由9个值组成。因此,每个测量值与总共11个值/标签相关联。再加上对度量、值和unixtimestamp的需求,在opentsdb中总共有14个标记。opentsdb的默认设置不支持那么多值。我知道通过更改opentsdb的配置文件可以增加标记的数量,但是互联网也告诉我增加标记的数量可以显著地降低查询的速度。
对我该如何处理这个问题有什么建议吗?我应该增加标签的数量吗?还是有别的办法解决这个问题?
注:与测量值相关的所有值将始终一起访问和绘制。
1条答案
按热度按时间brccelvz1#
所以我刚刚意识到opentsdb只能为每个度量绘制一个值-这就是值的目的…愚蠢的我:)
我最初的想法是标签(键/值)可以用作绘图的值。但是标签只提供实际值的搜索条件。因此,如果你有一个类似于我的结构,你将不得不存储在单独的度量值,并与机器人的价值相关联。在json中,它看起来像这样:
这意味着,对于我的每一个机器人测量,我需要存储9个不同的时间序列。由于每个机器人每秒发送5次数据,因此每个机器人每秒总共发送45个时间序列。如果我希望有100个活跃的机器人,这将达到每秒4500个指标。