技术解读:为什么我们把增量物化视图做进了流引擎
数据团队最常见的浪费,是把同一份聚合反复算了一百遍。NebulaFlow 的选择是:让结果随变更流动,而不是随调度重算。
取舍一:状态大小 vs 计算成本
我们把算子状态压缩到变更集粒度,用有限的历史窗口换取更小的内存占用。代价是跨窗口查询需要回退到基准表,但 90% 的实时看板场景并不需要。
取舍二:一致性 vs 时延
默认提供秒级最终一致,同时保留强一致读的开关。对账类任务可以显式要求一致性快照,而行为分析场景优先保证新鲜度。
取舍三:通用性 vs 可解释性
我们没有做「什么 SQL 都能增量」的通用解,而是收敛到可增量化的算子白名单,遇到不支持的算子会明确告警,而不是静默退化。