时间序列数据库 - 指标与标签
Time Series Databases - Metrics vs. tags
我是 TSDB 的新手,我有很多温度传感器要以每秒一个点的速度存储在我的数据库中。每个传感器使用一个唯一指标更好,还是只使用一个指标(例如温度)具有不同的标签取决于传感器?
我在网上搜索了什么是最佳实践,但没有找到好的答案...
谢谢! :-)
编辑:
我将从 2500 个来源进行 8 种测量(温度、设定点、能量、功率等)
您应该为每个传感器使用一个指标。您可能不需要聚合来自不同温度传感器的值,但您需要聚合给定传感器的值(例如,一分钟内的平均值)。
指标对应于来自同一来源的数据,或者至少是您可能会聚合的数据。您几乎可以创建任意数量的指标(例如,在 OpenTSDB 中最多 16 million metrics)。
标签区分这些数据。例如,如果数据突然发生很大变化,您可以对其进行不同标记,以便在需要时仅检索相关数据,而不会丢失其余数据。尽管对于每秒获取数据的温度传感器,最好的方法可能是过滤并仅在值发生变化时存储数据...
最佳实践总结here
如果您将数据存储在 InfluxDB 中,我建议将所有指标存储在单个测量中并使用标签来区分源,而不是为每个源创建一个测量。原因是您可以在测量中使用标签简单地合并或分解指标,但在最新的 InfluxDB 中不可能跨测量合并或连接。
最终决定取决于您对 TSDB 的选择和您最关心的查询 运行。
为了进行比较,在 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 的标签(例如位置、类型等)被单独存储,最大限度地减少了存储空间并加快了查询速度。如果您正在收集 energy/power 指标,您通常必须为系列指定属性,例如 Status,因为数据可能不会 clean/verified。为此,您可以使用系列标签。
series e:sensor-001 d:2015-08-03T00:00:00Z m:temperature=42.2 ... t:status=Provisional
我是 TSDB 的新手,我有很多温度传感器要以每秒一个点的速度存储在我的数据库中。每个传感器使用一个唯一指标更好,还是只使用一个指标(例如温度)具有不同的标签取决于传感器?
我在网上搜索了什么是最佳实践,但没有找到好的答案...
谢谢! :-)
编辑: 我将从 2500 个来源进行 8 种测量(温度、设定点、能量、功率等)
您应该为每个传感器使用一个指标。您可能不需要聚合来自不同温度传感器的值,但您需要聚合给定传感器的值(例如,一分钟内的平均值)。
指标对应于来自同一来源的数据,或者至少是您可能会聚合的数据。您几乎可以创建任意数量的指标(例如,在 OpenTSDB 中最多 16 million metrics)。
标签区分这些数据。例如,如果数据突然发生很大变化,您可以对其进行不同标记,以便在需要时仅检索相关数据,而不会丢失其余数据。尽管对于每秒获取数据的温度传感器,最好的方法可能是过滤并仅在值发生变化时存储数据...
最佳实践总结here
如果您将数据存储在 InfluxDB 中,我建议将所有指标存储在单个测量中并使用标签来区分源,而不是为每个源创建一个测量。原因是您可以在测量中使用标签简单地合并或分解指标,但在最新的 InfluxDB 中不可能跨测量合并或连接。
最终决定取决于您对 TSDB 的选择和您最关心的查询 运行。
为了进行比较,在 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 的标签(例如位置、类型等)被单独存储,最大限度地减少了存储空间并加快了查询速度。如果您正在收集 energy/power 指标,您通常必须为系列指定属性,例如 Status,因为数据可能不会 clean/verified。为此,您可以使用系列标签。
series e:sensor-001 d:2015-08-03T00:00:00Z m:temperature=42.2 ... t:status=Provisional