ClickHouse 25.6 盛夏福利版:CoalescingMergeTree 表引擎

图片

本文字数:7892;估计阅读时间:20 分钟

作者:ClickHouse Team

本文在公众号【ClickHouseInc】首发

图片

我们在 ClickHouse 25.6 的版本发布文章中已经介绍了很多功能,但实际上我们还有一个非常酷的新功能,保证大家会被“冰冻”的。😎

所以这就是你的夏日加餐博客,正好适合你躺在沙滩上时读一读:这次我们要专门介绍 CoalescingMergeTree —— 一个全新的表引擎,专为整合稀疏更新设计,可以在不损失数据完整性的前提下,帮你有效减少行数。

如果你是那种涂防晒霜的间隙也不忘查看 ClickHouse 更新的人,这篇文章正合你胃口。🏝️

让我们一探究竟。

CoalescingMergeTree 表引擎

贡献者:Konstantin Vedernikov

MergeTree 表引擎家族难得迎来新成员,因此这次的全新引擎 CoalescingMergeTree,值得我们用一整篇文章来介绍。

CoalescingMergeTree 能够在合并过程中,逐步将稀疏的记录合并,非常适合以下场景:

  • 你希望高效地保留每个实体的最完整版本。

  • 你可以接受在数据合并时,最终在磁盘上实现整合。

  • 你希望避免像 ReplacingMergeTree 那样整行覆盖,只想填补缺失的字段。

一个典型的应用场景:IoT 设备的状态或配置快照。比如,车队的可观测性,就像 Tesla 那样[https://clickhouse.com/blog/how-tesla-built-quadrillion-scale-observability-platform-on-clickhouse]。

在现代的联网车辆,尤其是电动车中,遥测数据的更新通常来自不同的子系统:

  • 电池模块汇报电量

  • GPS 模块发送位置信息

  • 软件更新模块上报固件版本

  • 传感器定期更新温度和速度

我们希望通过 CoalescingMergeTree,将这些增量的、稀疏的更新整合成每辆车的完整视图。

表定义

CREATE TABLE electric_vehicle_state
(
    vin String, -- vehicle identification number
    last_update DateTime64 Materialized now64(), -- optional (used with argMax)
    battery_level Nullable(UInt8), -- in %
    lat Nullable(Float64), -- latitude (°)
    lon Nullable(Float64), -- longitude (°)
    firmware_version Nullable(String),
    cabin_temperature Nullable(Float32), -- in °C
    speed_kmh Nullable(Float32) -- from sensor
)
ENGINE = CoalescingMergeTree
ORDER BY vin;

示例数据插入

-- ① Initial battery and firmware readings
INSERT INTO electric_vehicle_state VALUES
('
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值