其中一些重要组成部分如下:
schemas:Iceberg 会跟踪架构随时间的变化。引擎使用架构信息安全地读取和写入数据,而无需重写底层文件。
snapshots:每个快照引用一组特定的数据文件,这些数据文件代表表在某个时间点的状态。这实现了时间旅行等功能。
partition-specs:这些定义了表的逻辑分区方式。查询引擎在规划期间会利用这些信息跳过不必要的分区,从而大大提高查询性能。
通过读取 Iceberg 元数据,查询引擎可以有效地修剪分区,仅加载 奥地利电报号码数据 相关快照,并仅获取所需的数据文件,从而实现更快的查询。
为什么需要数据目录?
尽管 Iceberg 数据和元数据文件本身直接位于对象存储(如R2)中,但表列表和指向当前元数据的指针需要由数据目录集中跟踪。
可以将数据目录想象成图书馆的索引系统。虽然书籍(您的数据)在物理上分布在各个书架(对象存储)中,但索引提供了关于现有书籍、其位置以及最新版本的单一真实来源。如果没有此索引,读者(查询引擎)将浪费时间搜索书籍,可能会访问过时的版本,或者可能会意外地将新书搁置,导致无法找到它们。
类似地,数据目录确保一致、协调的访问,允许多个查询引擎安全地读取和写入同一个表,而不会发生冲突或数据损坏。