由 Site Kit 添加的 Google 跟踪代码管理器 (noscript) 代码段 结束 Site Kit 添加的 Google 跟踪代码管理器 (noscript) 代码段
高效聚合和数据保留 高效聚合和数据保留

ThingsBoard中的高效聚合和数据保留

在物联网项目的早期阶段,存储是事后才想到的。但是,当您从试点扩展到生产时,遥测数据量不仅会增长,还会加剧。在 ThingsBoard,我们在大量不同的生产环境中监控了这一趋势:为您提供竞争优势的数据可以很快成为您最大的基础设施成本驱动因素。

虽然高频、“每秒”遥测对于实时监控和精细故障排除来说是不可协商的,但将每个原始数据点保留多年很少是可持续的业务策略。

根据我们在大规模部署中观察到的模式,我们开发了“生产收据”以提高数据效率。本指南概述了如何通过将智能聚合与显式数据保留规则相结合来掌握遥测生命周期。

通过实施此秘诀,您可以削减长期存储开销和 TCO(总拥有成本),同时确保您的历史仪表板保持高效、有意义和准确。

线性缩放的现实

虽然“存储一切”方法对于小型试点来说是可以管理的,但存储需求会随着机队规模线性扩展。在生产环境中,这个数量很快从技术指标转变为财务负债。

为了可视化扩展,请考虑仅一个遥测密钥每分钟报告一次的占用空间(假设每条记录 32 字节,标准复制因子为 3):

10 台设备(中试规模)

在小范围内,累积数据影响可以忽略不计:

  • 每天的数据点: ~14,400
  • 每年的数据点: 约 525 万
  • 总存储量(包括复制): 每年约 500 MB

结论:在这种规模下,存储策略很少成为优先事项。

50,000 台设备(量产规模)

将相同的保留逻辑应用于企业队列会导致大量的基础设施开销:

  • 每天的数据点: 约7200万
  • 每年的数据点: 约262亿
  • 总存储量(包括复制): 每年约 2.5 TB
  • 5年以上: ~12.5 TB 原始遥测数据

如果没有定义的生命周期策略,您实际上需要支付额外的基础设施费用来存储超过 12 TB 的数据,其中大部分数据可能在生成几分钟后就失去了其操作效用。

遥测实际如何使用

在实践中,遥测数据有两个截然不同的目的。了解这种区别是设计高效存储策略的关键。

由于分析遥测关注的是趋势而不是精确值,因此聚合成为随时间汇总数据的实用且有效的方法。这减少了不必要的细节,同时保留了长期分析所需的见解。

聚合对数据量的影响

聚合极大地减少了存储的数据点的数量。下表显示了 5 年内 10,000 台设备的数据点减少情况:

较大的聚合间隔可大大降低长期存储要求,而较小的间隔可保留更多分析细节。最佳选择取决于趋势分析和报告需要多少历史精度。

解决方案:聚合+保留

将聚合与显式数据保留规则相结合定义了完整的遥测数据生命周期。聚合和保留解决遥测存储的不同方面,并且一起使用时最有效。

多层次保留策略

为了随着时间的推移有效地管理遥测数据,通常定义多个聚合级别,其中更高级别的聚合基于已聚合的数据。这允许您在不同的持续时间内保留不同级别的数据:

以下是五年内每分钟记录一次的单个遥测密钥对数据库存储的影响:

  • 原始遥测: 1分钟遥测5年~2,628,000 数据点。
  • 多层次战略:
    • 高分辨率(3 个月): 129,600 点。
    • 中等分辨率(1 年): 8,760 点。
    • 低分辨率(5 年): 1,825 点。
    • 总存储量: 140,185 点。

节省存储空间: ~94.7% 与保留所有原始数据相比。

在 ThingsBoard 中实现聚合和保留

该实施由两个独立但互补的步骤组成:

步骤 1. 使用字段计算定义聚合逻辑

聚合是使用 时间序列数据聚合字段计算.
他们总结固定时间间隔的遥测数据并将结果写入新的遥测密钥。

每个字段计算都可以有自己的 TTL,与原始数据无关。这使得聚合数据可以保留一段与其分析目的相匹配的特定时间段,即使原始遥测数据已被删除。通过为每个字段计算显式设置 TTL,您可以准确控制每个聚合的存储时间。

实用方法:多级聚合

  • 每日汇总(来自原始遥测):将高频原始数据汇总为日常指标。
  • 每月汇总(来自每日遥测):使用已汇总的每日值计算每月总计。

您可以在下面找到为两个聚合级别准备的字段计算 JSON 文件:

步骤 2. 定义原始遥测数据的保留规则

虽然聚合数据会被保留以供长期使用,但原始遥测数据只有在操作上有用的情况下才应保留。在 ThingsBoard 中,这是通过设置 默认TTL保存时间序列 规则链中的规则节点。

这确保了详细的消耗测量在完成其短期目的后自动删除,从而防止不必要的存储增长。

聚合数据 TTL 按字段计算设置(步骤 1),并且独立于原始遥测 TTL。

结果数据量

与存储原始遥测数据 5 年(约 260 亿点)相比,这种方法 减少 长期数据量 超过50次。

通过在摄取过程中预先计算这些指标,长期仪表板几乎可以立即加载,因为系统检索现成的摘要,而不是根据请求对数百万个原始数据点执行昂贵的聚合。

最佳实践

要从 ThingsBoard 中的聚合和受控数据保留中获得最大价值,请考虑以下最佳实践:

  • 使聚合与分析需求保持一致:选择与数据分析方式相匹配的聚合间隔。使用每小时汇总来了解运营趋势,使用每日或每月汇总来进行长期趋势分析。
  • 始终明确定义 TTL:避免依赖默认值。显式 TTL 设置可确保可预测的数据生命周期管理。
  • 限制原始遥测数据保留:保留高频原始数据用于诊断和调查,但避免保留时间超过运营需求所需的时间。

概括

通过将遥测数据聚合为基于时间的指标并应用显式保留规则,您可以实现高效、可扩展的遥测存储。原始遥测数据仍然可满足短期运营需求,而聚合遥测数据则支持长期趋势分析、仪表板和报告。

这种方法可以保持存储增长的可预测性,并随着解决方案的扩展而显着降低长期存储成本。