常用术语

数据文件(data files)

数据文件(data files)是 Iceberg 存储的真实的物理文件,一般是在表的数据存储目录的 data目录下。每次更新都会生成多个新的数据文件。

清单文件(Manifest file)

元数据文件,存储关于某个快照(snapshot)的数据文件列表。每行都是每个数据文件的详细描述,包括:

  • 数据文件的状态
  • 文件路径
  • 分区信息
  • 列级别的统计信息(比如每列的最大最小值、空值等)
  • 文件的大小
  • 文件里面数据的行数等信息

其中列级别的统计信息在 scan时为算子下推提供基础信息,以便过滤掉不必要的文件。每次更新都会生成多个新的清单文件。

清单列表(Manifest list)

元数据文件,存储清单文件的列表,每个清单占据一行,每行中存储了清单文件的路径。清单文件里面存储数据文件的分区范围、数据文件增加、删除等信息。这些信息用于查询过滤。每次更新都会生成多个新的清单文件。

快照(Snapshot)

代表一张表在某个时刻的状态。每个快照都会列出在某个时刻的所有数据文件列表。Data files 存储在不同的 Manifest files 里面,而 Manifest files 是存储在一个 Manifest list 文件里面,而一个 Manifest list 文件代表一个快照。

核心原理

17302790-d6c70ac4fde94f7b.webp
Iceberg 中 partition 字段就是表中的一个字段,Iceberg 中每一张表都有一个对应的元数据表,文件元数据表中每条记录表示一个文件的相关信息,这些信息中有一个字段是 partition 字段,表示这个文件所在的 partition。