gpt4 book ai didi

timescaledb - TimescaleDB 中的复杂数据汇总

转载 作者:行者123 更新时间:2023-12-01 23:25:16 29 4
gpt4 key购买 nike

我有一个系统,每 5 秒向 TimescaleDB 收集一次计数器数据。

汇总要求是:

  1. 对于超过 7 天的数据,粒度从 5 秒变为 1 小时
  2. 对于超过 30 天的数据,粒度从 1 小时下降到 1 天

我可以通过使用来自 5s 超表的连续聚合并使用数据保留来得到 (1)。
但是,对于 (2),我无法从 (1) 的 1h 物化 View 创建第二个物化 View ,因为我只能从超表中创建它。

如何满足汇总要求?
我能否以某种方式利用我的测量值是计数器这一事实(可以简单地删除行以降低粒度)?

最佳答案

Continuous aggregates只能在超表之上定义。您不能从另一个定义连续聚合或更改它。

我看到两种方法可以使用当前版本的 TimescaleDB 2.2 实现所需的功能:

  1. 两者都是 continuous aggregate policies 7 天后具体化数据。一retention policy 1 周后删除原始数据,另一个保留策略在 30 天后删除来自 1 小时存储桶的第一个连续聚合的数据。
  2. 第一个连续聚合策略在 7 天后实现,第二个在 30 天后实现。这意味着需要保留原始数据,直到第二个连续聚合将数据具体化。因此,两种保留政策都将在 30 天之后生效。虽然原始数据保存时间更长,但超表可以是 compressed减少磁盘使用量。

这是可能的实现。连续聚合在两种方法中都是相同的:

CREATE MATERIALIZED VIEW cagg_1h WITH (timescaledb.continuous) AS
SELECT time_bucket('1h', my_time_column), ...
FROM my_hypertable
WHERE ...
GROUP BY 1, ...;

CREATE MATERIALIZED VIEW cagg_1d WITH (timescaledb.continuous) AS
SELECT time_bucket('1d', my_time_column), ...
FROM my_hypertable
WHERE ...
GROUP BY 1, ...;

第一种方法的策略:

SELECT add_continuous_aggregate_policy('cagg_1h', INTERVAL '7d', INTERVAL '6d', INTERVAL '4h');
SELECT add_continuous_aggregate_policy('cagg_1d', INTERVAL '8d', INTERVAL '5d', INTERVAL '1h');
SELECT add_retention_policy('my_hypertable', INTERVAL '8d');
SELECT add_retention_policy('cagg_1h', INTERVAL '30d');

我尝试为连续聚合定义刷新窗口,即开始和结束偏移间隔,以及原始数据的保留间隔,以便数据在删除之前在两个连续聚合中具体化。

对于第二种方法:

SELECT add_continuous_aggregate_policy('cagg_1h', INTERVAL '7d', INTERVAL '6d', INTERVAL '4h');
SELECT add_continuous_aggregate_policy('cagg_1d', INTERVAL '30d', INTERVAL '27d', INTERVAL '1d');
SELECT add_compression_policy('my_hypetable', INTERVAL '7d');
SELECT add_retention_policy('my_hypertable', INTERVAL '30d');
SELECT add_retention_policy('cagg_1h', INTERVAL '30d');

此处相同,连续聚合包含刷新窗口,因此数据将物化到所需的时间间隔,并且不会被保留策略丢弃。第二种方法包括一个压缩策略,假设 7 天后不会有更新到达原始数据,从问题描述来看这似乎是正确的。

在添加压缩策略之前,必须通过 altering the original hypertable 启用它.

关于timescaledb - TimescaleDB 中的复杂数据汇总,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67357822/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com