Delta Table支持增量写入和存储,最重要的一个考虑就是支持增量查询以及增量计算优化,为此,专门设计开发了新的SQL增量查询语法来支持近实时增量处理链路。
增量查询的处理过程
增量查询Delta Table 的处理过程如下图所示。
当输入一个SQL语句后,引擎侧会解析用户指定的版本范围查询出来所有符合时间范围内的DeltaFile,进行合并输出。
Clustering和Compaction操作都会产生新的数据文件,但并没有增加新的逻辑数据行,只是把原有的记录进行了组织编排优化,因此新产生的数据文件中的记录不应该作为新增数据重复输出,为此,增量查询做了专门设计优化,会剔除掉这些记录,也比较贴合用户使用场景。所以增量查询不会读取任何BaseFile,只会读取指定时间区间内的所有DeltaFile,按照指定的策略进行Merge输出。
上图以创建一张事务表(src)为例:
schema包含一个pk列和一个val列。
左边图展示了数据变化过程,t1-t5代表了事务的时间版本,分别执行了5次数据写入的事务,生成了5个DeltaFile。
在t2和t4时刻分别执行了COMPACTION操作,生成了两个BaseFile: b1和b2。
在具体的查询示例中,例如,begin是t1-1,end是t1,只需读取t1时间段对应的DeltaFile:d1进行输出; 如果end是t2,会读取两个DeltaFiles:d1和d2;如果begin是t1,end是t2-1,即查询的时间范围为(t1, t2),这个时间段是没有任何增量数据插入的,会返回空行。
文档内容是否对您有帮助?