粗读Apache Paimon 的基本概念及其组成结构
文章目录
- 一、Paimon的基本概念
- (一)快照
- (二)分区
- (三)分桶
- (四)一致性保证
- 二、Paimon的组成结构
- (一)文件布局
- (二)存储结构
- (三)读写方式
- (四)生态系统
一、Paimon的基本概念
(一)快照
想象一下,你正在翻看一本相册,每一张照片都记录了一个特定的时刻。在Paimon
中,快照就是数据表的“照片”,它记录了表在某一特定时间的状态。通过快照,你可以查看表的最新数据,或者像穿越时空一样,回到过去,查看表的旧版本。
(二)分区
你是否曾在整理文件时,将它们分门别类地放入不同的文件夹?Paimon
中的分区概念与此类似。它允许我们根据某些特定的列值(比如日期、城市或部门)将数据表分割成多个部分,这样我们就可以更高效地管理和查询数据。
(三)分桶
想象一下,你有一个大箱子,里面装满了各种颜色的球。为了更容易找到特定颜色的球,你决定将它们分成几个小盒子。在Paimon
中,分桶就是将数据表或分区进一步细分为更小的部分,以便更有效地组织和查询数据。每个桶的大小建议控制在1GB
左右,以避免过多的小文件影响读取性能。
(四)一致性保证
在Paimon
中,写入数据的过程就像是在进行一场接力赛。为了保证交接棒不掉落,Paimon
使用了一种叫做两阶段提交的协议。这样,即使多个写入操作同时进行,只要它们不影响到同一个桶,它们的操作就能像接力赛一样有序进行;如果影响到同一个桶,则会保证至少有一个快照级别的隔离。
二、Paimon的组成结构
(一)文件布局
就像一本书有目录一样,Paimon
中的数据也是有序组织的。所有的文件都存放在一个基本目录下,并且按照一定的层次结构排列。
- 快照文件(
SnapshotFiles
):记录了表在特定时间点的状态。 - 清单文件(
ManifestFiles
):存储了所有清单列表和清单文件,这些文件包含了LSM
数据文件和更改日志文件的信息。 - 数据文件(
DataFiles
):根据分区和桶进行分组,每个桶都包含一个LSM
树及其变更日志文件。Paimon
支持orc
、parquet
和avro
这三种数据文件格式。 - LSM树(
LSMTrees
):Paimon
使用LSM
树来组织文件,这种结构将文件分成多个有序的段。
(二)存储结构
在Paimon
的底层,数据以列式格式存储在文件系统或对象存储上,并利用LSM
树结构来支持大量的数据更新和快速查询。
(三)读写方式
- 读取:你可以从历史快照、最新的偏移量,或者以混合方式读取增量快照。
- 写入:
Paimon
支持从数据库变更日志(CDC
)进行流式同步,或者从离线数据进行批量插入/覆盖。
(四)生态系统
Paimon
不仅与Apache Flink
兼容,还支持Apache Hive
、Apache Spark
、Trino
等其他计算引擎的读取。