UniqueMergeTree:支持实时更新删除的 ClickHouse 表引擎
UniqueMergeTree 开发的业务背景 首先,我们看一下哪些场景需要用到实时更新。 我们总结了三类场景: 第一类是业务需要对它的交易类数据进行实时分析,需要把数据流同步到 ClickHouse 这类 OLAP 数据库中。大家知道,业务数据诸如订单数据天生是存在更新的,所以需要 OLAP 数据库去支持实时更新。 第二个场景和第一类比较类似,业务希望把 TP 数据库的表实时同步到 ClickHouse,然后借助 ClickHouse 强大的分析能力进行实时分析,这就需要支持实时的更新和删除。 最后一类场景的数据虽然不存在更新,但需要去重。大家知道在开发实时数据的时候,很难保证数据流里没有重复数据,因此通常需要存储系统支持数据的幂等写入。 我们可以总结一下这三类场景的共同点: 从数据的新鲜度看 这三个场景其实都不需要亚秒级的新鲜度,往往做到秒级或者分钟级的数据新鲜度就可以了,因此可以采用 mini-batch 的实时同步方案。 从使用上看 这三类场景都可以通过提供基于唯一键的 upsert 功能来实现,不管是更新还是幂等处理的需求。 从读写要求上看 因为大家用 OLAP 数据库最核心...
