聚合是函数而非累加和
An Aggregate Is a Function, Not a Sum
我在处理销售收据流时,尝试了四种方案来构建报告,却屡战屡败。Kafka 的至少一次交付导致重复数据,离线设备造成数据延迟,而系统重启又让状态丢失。传统的累加和无法应对重复,重算全表又太慢,记忆所有键值则内存爆炸。最终我们意识到,聚合不应是插入时的累加,而应是一个基于原始文档的函数。通过将数据按特定顺序存储在 ClickHouse 的窄表中,我们实现了无需记忆键值即可处理重复和延迟数据的方案,让报告既准确又高效。
聚合是一个函数,而不是累加和。