有效地支持增量处理可以分解为以下几个原语操作:
更新插入:从概念上讲,重写整个分区可以被视作一个非常低效的更新插入操作,最终会写入比进来的数据多得多的数据。因此,对(批量)更新插入的首要支持成为非常的重要工具。事实上,像Kudu和Hive事务等最近的趋势的确是朝着这一方向发展的。谷歌的Mesa(谷歌的数据仓库系统)论文也谈论了几项技术,可以被应用到快速数据注入的场景里。
增量消费:尽管更新插入可以解决快速地向一个分区发布新数据的问题,下游的数据消费者并不知道从过去的哪一个时刻开始哪些数据被改变了。通常,消费者通过扫描整个分区/数据表并重新计算所有数据来得知改变的数据,这需要花费相当多的时间和资源。因此,我们也需要一种机制来更加高效地获取从上次分区被消费的时间点开始改变过的数据记录。有了上面两种原语操作,你可以通过更新插入一个数据集,然后从中增量消费,并建立(也是增量的)另外一个数据集来支持很多常见的案例。数据投影就是最好理解的案例(如图六所示):