时间序列数据库 - 指标与标签

时间:2015-07-20 11:10:41

标签: time-series influxdb opentsdb

我是TSDB的新手,我有很多温度传感器存储在我的数据库中,每秒一点。是否更好的是每个传感器使用一个唯一的度量标准,或者只使用一个度量标准(例如温度),并根据传感器使用不同的标记?

我在互联网上搜索了什么是最佳做法,但我没有找到一个好的答案......

谢谢! : - )

编辑: 我将从2500个来源获得8种类型的测量(温度,设定点,能量,功率......)

3 个答案:

答案 0 :(得分:8)

如果您要将数据存储在InfluxDB中,我建议将所有指标存储在单个测量中,并使用标记来区分源,而不是为每个源创建一个度量。原因是您可以使用测量中的标记轻松合并或分解度量标准,但在最新的InfluxDB中无法跨测量进行合并或连接。

最终决定权取决于您选择的TSDB以及您最关心的运行查询。

答案 1 :(得分:2)

为了进行比较,在Axibase Time-Series Database中,您可以将温度存储为度量标准,将传感器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

答案 2 :(得分:0)

每个传感器应使用一个指标。您可能不需要聚合来自不同温度传感器的值,但您需要聚合给定传感器的值(例如,平均一分钟以上)。

指标对应来自同一来源的数据,或至少可能汇总的数据。您可以根据需要创建几乎一样多的指标(例如,在OpenTSDB中最多可以创建16 million metrics)。

标签可区分这些数据。例如,如果数据突然发生很大变化,您可以对数据进行不同的标记,以便在需要时仅检索相关数据,而不会丢失其余数据。虽然对于温度传感器每秒获取数据,最好的可能是过滤并仅在值发生变化时存储数据...

最佳做法总结为here