Iceberg的Copy on Write和Merge On Read介绍
一、默认的Copy on Write
Copy no Write模式指的是在进行更新数据时,先将数据拷贝出来进行相应的更新,再替换掉原先的数据
二、Merge On Read读取时合并
在v2版本才支持,Merge on Read的Row-level delete使用了如下概念:
delete file:(删除文件)描述了在读取数据时那些需要被删除的行的数据集, 它可以使用基于位置的数据集(position-based delete file)来描述,也可以使用基于值数据集(value-based delete file)来描述。
sequence number: (序列号)描述Iceberg文件的顺序数,序列号越小,生成该文件的时间越早。它决定了删除文件是否应该和对应的数据文件进行合并,当删除文件的序列号大于数据文件的序列号时,需要进行数据合并。
读取数据时进行基于merge sort的anti join. 同时一般情况下写入的delete file的格式和表的文件格式保持一致。