是否有简化此聚合模式的 Clickhouse 功能(一周的每条记录;一年总计 5 分钟)

Is there a Clickhouse feature that simplifies this aggregation schema (every record for a week; 5 minute totals for a year)

我有一个报告 Clickhouse 数据库,它存储了大量的 DNS 流量日志(大到只能存储 2 天的原始查询日志)。主 table 存储单个 DNS 查询的记录,然后物化视图将其聚合为 graphing/reporting 有用的块(例如 ip_protocol by query_types 按地区)。

即使存储这些聚合也非常大(我们可以保留大约 1 周的数据)。 因此,对于长期(年度)报告,我还使用 SummingMergeTree 和 toStartOfFiveMinute() 的物化视图将其汇总为每 5 分钟块的总数。

即 [原始数据] -> [mat-view SummingMergeTree(counts), TTL 7 DAYS]

[原始数据] -> [mat-view SummingMergeTree(5minTimestamp, counts), TTL 1 YEAR].

这行得通,但这意味着我们的图表必须符合两个不同的视图(有很多视图和很多图表)。而且感觉有点笨重。

Clickhouse 非常擅长报告我想知道是否有某种聚合方法或存储引擎可以让我将其存储在一个地方。如果时间戳 < 7 天,则可以合并 ' toSecond(..) 的东西,然后 toStartOfFiveMinute(..) "

是否有一些我不知道的内置功能或结构?

谢谢。

您可能会发现有用的 TTL 组 https://kb.altinity.com/altinity-kb-queries-and-syntax/ttl-group-by-examples 它允许在单个 table.

中减少数据

其他选项是 GrapiteMergeTree https://clickhouse.tech/docs/en/engines/table-engines/mergetree-family/graphitemergetree/