1. Iceberg 通过 manifest list、manifest file 与 data file 三层结构实现 schema 与 partition 演进
Iceberg 如何通过 manifest list、manifest file 与 data file 三层结构实现 schema 与 partition 演进?
- 理解 Iceberg 的三层元数据结构
- 掌握 schema/partition 演进不需重写数据的原理
- 认识快照与 ACID 语义
Iceberg 用三层元数据组织数据:table metadata(表元数据,含 schema、partition spec、snapshot 列表)、manifest list(快照内文件清单,指向 manifest file)、manifest file(记录每个 data file 及其列级统计、分区、删除信息)、data file(实际数据文件)。每次写入生成新快照,只需新增 manifest,无需重写已有数据文件。因此 schema 演进(加列、改列)与 partition 演进(改分区 spec)只需更新元数据,历史数据文件按新 spec 读取时按需处理,实现"演进不重写数据"。
三层结构把"数据文件"与"元数据"解耦,快照不可变(immutable),演进通过元数据变更完成。这使得 Iceberg 支持时间旅行、schema/partition 演进与 ACID 提交,是湖仓的核心能力。