RRD 时序数据

RRD Time series data

我在一家从智能电表接收数据的公司工作。对于实时流而言,此数据可能长达 2 天,并且在出现错误(间隙等)的情况下可能会填充 post。目前我们通常将其存储 5 年。然后将数据拉入 SSAS 多维数据集并聚合为 1 分钟、5 米、30 米、1 小时、1 天、1 周、1 个月的聚合。对于这些聚合中的每一个,还存储了 Min、Max、Avg。 构建此多维数据集的速度很慢,而且目前不可扩展,因为它从单一来源挖掘数据。

我认为每个数据点的 RRD 样式数据库更适合由数据推送驱动。 但是我有几个关于 RRD 的问题(欢迎提供示例)

  1. RRD 能否在保留数据粒度的同时随着时间的推移执行汇总?
  2. 能否将数据输入 RRD 以纠正差距?

欢迎提供示例。

  1. 是 - 您需要适当地配置 RRA。

RRA 是一种循环归档,它定义了数据点的数量和分辨率。所以你可以 - 假设采样率为 5 分钟:

RRA:AVERAGE:0.5:1:2000
RRA:AVERAGE:0.5:12:2400

将保持大约一周的 5 米分辨率和 100 天的 1 小时分辨率。但是你可以很容易地扩展你的 5m 分辨率 RRA——尽管它会使你的 RRD 更大。问题是——你真的需要吗? RRD 的全部要点是自动存档与图形分辨率 - 查看一年的统计数据,无论如何您都无法呈现 5m 分辨率。对于 5m 个样本,一个 1600px 宽的图表无论如何也只有大约 6 天。

  1. 是的,但是由于 RRD 的工作方式,它有点烦人。实际上,您必须提取并重播数据以回填空白。如果你是 'replaying' 失去分辨率的东西,这不一定有效,因为你没有足够的样本。你可以rrdtool dump把RRD的内容提取成XML形式,也可以直接修改然后rrdtool restore。如果您需要以任何实际频率执行此操作,我建议您使用 rrdtool 以外的工具。