我们有很多传感器,例如能量计,并且希望使用 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
或者,我们是否完全走错了路?
查询性能有区别吗?