Paimon的数据结构
在Paimon中一张表的所有数据文件都存在一个层级的目录中。其中第一层包含3个文件夹,分别是snapshot、manifest、schema和data。snapshot文件夹主要用于存储这个表的快照,内容包括为上一次提交产生的 manifest,加上本次提交产生的 manifest 作为增量。schema文件夹主要用于存储这个表的元信息。manifest文件夹主要用于存储这个一系列manifest文件,manifest记录了每次经 checkpoint 触发而提交的数据文件变更,包含新增和删除的数据文件。Data文件夹按桶进行划分。每个桶文件夹包含一个LSM树和changelog文件。
图2 Apache Paimon文件层级图
其文件的更新机制如下:在Apache Paimon中,会在Sink端维护一个Memory Table,用作数据合并,数据会写入到File Store和 Log Store当中,File Store中保存的就是经过桶分区的LSM树存储结构,Log Store则是保存了LSM中的 Write Ahead Log 信息。对于批读,只需要去读取File Store;而对于流读,则需要混合的读取,先读取File Store 中的全量数据