物联网的KairoDB指标名称或标签

时间:2018-02-26 10:22:31

标签: nosql iot metrics kairosdb

我们有许多传感器,如能量计,并希望使用kairosdb存储数据。在我们使用一个简单的SQL存储之前,每个传感器都有自己的表,每个测量都是一行。

通过JSON对象从传感器向系统发布测量结果:

{
    time: 12363453,
    volt: 238.33,
    ampere: 9.3,
    watts: 29.0,
}

因此,例如,对于两个设备上的两个传感器,我们在数据库中有这个:

传感器A1234:

id, time, volt, ampere, watts
12, <unix-ts>, 238.33, 9.3, 29.0
13, <unix-ts>, 238.21, 9.1, 23.8
...

传感器B5678:

id, time, volt, ampere, watts
75, <unix-ts>, 230.12, 3.9, 19.5
76, <unix-ts>, 234.65, 2.8, 24.5
...

现在,我们正在调查存储相同信息但使用KairosDB的最佳解决方案。

我们的目标是回答一些“问题”,例如: - 最新伏特,瓦特,安培 - x(开始时间戳)和y(结束时间戳)之间的平均安培是多少? - 两个日期之间所有(或子集)传感器的总和是多少

等等。

那么,选择度量标准名称和/或标签的最佳方法是什么?

我们是否应该使用传感器名称作为度量标准名称(没有标记):

sensors.energy.a1234.volt=238.33
sensors.energy.a1234.ampere=9.3
sensors.energy.a1234.watts=29.0

sensors.energy.b5678.volt=230.12
sensors.energy.b5678.ampere=3.9
sensors.energy.b5678.watts=19.5

或者我们应该在所有传感器的相同指标上使用标签:

sensors.energy.volt=238.33, tag: sensor=a1234
sensors.energy.ampere=9.3, tag: sensor=a1234
sensors.energy.watts=29.0, tag: sensor=a1234

sensors.energy.volt=230.12, tag: sensor=b5678
sensors.energy.ampere=3.9, tag: sensor=b5678
sensors.energy.watts=19.5, tag: sensor=b5678

或者,我们是完全走错了路?

查询性能有差异吗?

1 个答案:

答案 0 :(得分:0)

这取决于您的使用情况和标签基数。

如果您需要分组传感器,那么在标签中使用它很有用。 如果您始终单独查询传感器,则可以通过使用度量标准名称来进行更简单的查询。

如果标签基数(指标的时间序列数)太高,则会影响查询性能(我会看到数十万+)。 有一些方法可以通过使用像kairosDB SolR搜索(https://github.com/kairosdb/kairos-solr)这样的索引/搜索插件来克服这种影响。

我希望这会有所帮助。