关于 OpenTSDB 数据模型的说明

Clarification regarding OpenTSDB's data model

我正在使用 OpenTSDB 进行学校项目。在项目中,我应该创建一个结构来存储来自机器人的时间序列数据。每个机器人以每秒 5 次的速度收集数据,最多可以有 100 个活动机器人。

我已经成功设置了 OpenTSDB 并将其 link 到 HBase 集群。但是,在阅读 openTSDB's website 上的文档后,我觉得我对数据模型没有清晰的认识。网站说每个时间序列数据点需要以下数据:

这引出了我的第一个问题。 value 是什么?为什么需要它?

回到机器人;每个机器人由两个 ID 标识,每个测量值总共包含 9 个值。因此,每次测量都与总共 11 values/tags 个相关联。将其与对指标、值和 UnixTimestamp 的需求放在一起,在 OpenTSDB 中总共需要 14 个标签。 OpenTSDB 的默认设置不支持那么多值。我知道可以通过更改 OpenTSDB 的配置文件来增加标签的数量,但是网上也告诉我增加标签的数量可以显着 slow down queries

关于我应该如何解决这个问题有什么建议吗?我应该只增加标签的数量吗?或者有其他方法可以解决这个问题吗?

注意:与测量关联的所有值将始终一起访问和绘制。

所以我刚刚意识到 OpenTSDB 只能为每个指标绘制一个值 - 这就是值的目的......愚蠢的我 :)

我最初的想法是标签(key/value)可以用作绘图的值。但标签仅提供实际值的搜索条件。因此,如果您的结构与我相似,则必须将值存储在单独的指标中,并将该值与机器人相关联。在 JSon 中,它看起来像这样:

{"metric": "value1", "timestamp": 1429542213, "value": 10, "tags":            
{"robotName": 1}}
{"metric": "value2", "timestamp": 1429542213, "value": 20, "tags":            
{"robotName": 1}}
// value 3, 4, 5, 6, 7, 8, 9

这意味着对于我的每一个机器人测量,我需要存储 9 个不同的时间序列。由于每个机器人每秒发送 5 次数据,因此每个机器人每秒总共发送 45 个时间序列。如果我希望有 100 个活跃的机器人,这将达到每秒 4500 个指标。