我是 TSDB 的新手,我有很多温度传感器以每秒一个点的速度存储在我的数据库中。每个传感器使用一个独特的指标,还是仅使用一个指标(例如温度)与不同的标签取决于传感器更好?
我在互联网上搜索最佳实践是什么,但我没有找到一个好的答案......
谢谢!:-)
编辑:我将有来自 2500 个来源的 8 种类型的测量值(温度、设定点、能量、功率……)
我是 TSDB 的新手,我有很多温度传感器以每秒一个点的速度存储在我的数据库中。每个传感器使用一个独特的指标,还是仅使用一个指标(例如温度)与不同的标签取决于传感器更好?
我在互联网上搜索最佳实践是什么,但我没有找到一个好的答案......
谢谢!:-)
编辑:我将有来自 2500 个来源的 8 种类型的测量值(温度、设定点、能量、功率……)
如果您将数据存储在 InfluxDB 中,我建议将所有指标存储在单个度量中并使用标签来区分来源,而不是为每个来源创建一个度量。原因是您可以使用度量中的标签轻松合并或分解指标,但在最新的 InfluxDB 中无法跨度量合并或连接。
最终决定取决于您对 TSDB 的选择以及您最关心运行的查询。
出于比较目的,在Axibase 时间序列数据库中,您可以将温度存储为指标,将传感器 ID 存储为实体名称。ATSD 模式有一个实体的概念,它是正在为其收集数据的系统的名称。优点是更紧凑的存储以及为实体本身定义标签的能力,例如传感器位置、传感器类型等。这样,您不仅可以按传感器 ID 还可以按传感器标签过滤和分组结果。
举个例子,在这篇博客文章中,0601911 代表实体 id - 即 EPA 站 id。该站收集多个环境指标,同时在数据库中使用多个标签进行描述:http: //axibase.com/environmental-monitoring-using-big-data/。
最重要的是,您不必为了存储有关传感器、服务器等的扩展信息而建立第二个数据库(通常是关系数据库)以进行高级报告。
更新 1:示例网络命令:
series e:sensor-001 d:2015-08-03T00:00:00Z m:temperature=42.2 m:humidity=72 m:precipitation=44.3
描述 sensor-001 的标签(例如位置、类型等)被单独存储,从而最大限度地减少存储空间并加快查询速度。如果您正在收集能量/功率指标,您通常必须为系列指定属性,例如状态,因为数据可能无法清理/验证。为此,您可以使用系列标签。
series e:sensor-001 d:2015-08-03T00:00:00Z m:temperature=42.2 ... t:status=Provisional
您应该为每个传感器使用一个指标。您可能不需要汇总来自不同温度传感器的值,但您需要汇总给定传感器的值(例如一分钟内的平均值)。
指标对应于来自同一来源的数据,或者至少是您可能汇总的数据。您可以根据需要创建几乎任意数量的指标(例如,在 OpenTSDB 中多达1600 万个指标)。
标签区分这些数据。例如,如果数据突然发生很大变化,您可以对数据进行不同的标记,以便在需要时仅检索相关数据,而不会丢失其余数据。尽管对于每秒获取数据的温度传感器,最好的方法可能是过滤并仅在值更改时存储数据...
这里总结了最佳实践