什么是 Apache Iceberg 表?详解

Jeffrey Erickson | 资深撰稿人 | 2026 年 3 月 18 日

什么是 Apache Iceberg 表

Apache Iceberg 表于 2018 年首次开源,如今已成为 Netflix 等公司 PB 级数据湖仓一体的基石技术,而 Netflix 正是该技术的开发者。让我们更深入地了解 Apache Iceberg 表,了解它提供的功能,以及为什么它能如此迅速地流行起来。

什么是 Iceberg 表?

Iceberg 表是一种专为大规模数据分析设计的开源表格式。由 Apache 基金会管理的 Iceberg 项目提供了一种在 PB 级数据湖仓一体中管理数据并进行实时分析的架构。这种表在需要频繁更新和查询数据的环境中尤其有用。

Iceberg 表的一个关键特性是驻留在存储库(如 Amazon S3 或 Oracle Cloud Infrastructure (OCI) Object Storage)中数据文件旁的元数据层。元数据可跟踪数据文件及其位置,这种设置有助于 Iceberg 实现扩展。表与数据本身分开保存,这意味着对这些表中的元数据进行的更改,无论是添加新的分区还是更新文件位置,都无需重写实际的数据文件。

这种架构还释放了数据,使其可以被不同的数据管理框架和查询引擎分析和更新,例如开源的 Apache Spark、Trino,或像 Oracle Autonomous AI Database 这样的企业云技术服务。

Iceberg 表详解

Apache Iceberg 表的工作原理是将数据与其描述性元数据清晰分离。Iceberg 表存储有关数据文件的位置、大小、分区等信息的元数据。数据本身存储在文件中,通常采用 Apache Parquet、ORC 或 Avro 等格式,这些格式针对不同场景中的高效读写进行了优化。例如,Apache Iceberg 提供了工具,可帮助您指定数据索引格式:Parquet 文件适用于批量分析工作负载,Avro 则适用于事务型工作负载。

Iceberg 表的一大优势在于元数据以快照形式组织,快照是表的时间点视图,且不会随时间变化而改变。快照支持查看和查询存在快照的任意历史时间点的数据,这一操作称为“时间旅行”。快照有助于审计、调试和数据恢复操作。

为了管理快照和元数据,Iceberg 表提供了一个元数据文件层次结构。根元数据文件包含快照列表以及快照对应的元数据。每个快照元数据文件都包含一个清单列表,此列表描述了一组清单文件。而这些清单文件又列出了数据文件,并提供额外的元数据,例如分区信息和有关每个文件内数据的统计数据。当您执行数据插入、更新或删除等操作时,Iceberg 会创建新的数据文件并更新元数据文件以反映这些更改。这对于随时间推移保持数据一致性非常重要,因为操作只更新元数据,不会修改现有的数据文件。这样一来,数据文件本身能够保持一致,因为其表模式、位置和更新信息均记录在 Iceberg 表层面中。

元数据层还支持分区和过滤,通过减少每个查询需要扫描的数据量来帮助优化查询性能。

Iceberg 表的另一个关键优势(尤其对于复杂的数据湖仓一体而言)是支持 ACID 事务,可确保对表的所有操作具备原子性、一致性、隔离性和持久性。这是传统数据仓库中关系表的常见特性。

Iceberg 表可以在您选择的云存储中运行,包括 Hadoop HFS、Amazon S3、OCI Object Storage 以及许多其他常见的云存储服务。

由于 Iceberg 表与查询它们的计算能力和数据管理结构保存在不同位置,因此数据集可以利用成本较低的云存储扩展到任意所需规模。这包括极端分析架构、零售和流媒体推荐引擎以及某些生成式 AI 操作中的 PB 级数据集。

Iceberg 表的另一个优势是,您可以选择偏好的处理引擎来执行分析任务,无论是开源的查询引擎(如 Trino),还是企业数据管理框架(如 Oracle AI Database)。您甚至可以对同一组 Iceberg 表使用多个不同的查询引擎。

Iceberg 表架构中的数据安全,由 Apache 基金会的原生功能,以及云存储供应商和访问、查询 Iceberg 表的数据管理系统所提供的功能共同保障。最终成果将融合数据加密、访问控制、数据脱敏等数据治理功能,以及用于从故障或攻击中恢复的复制与同步能力。

Iceberg 表的优势

Apache Iceberg 通过将 SQL 数据库的可靠性和功能引入规模化成本较低的数据湖,转变了组织管理海量数据集的方式。通过引入 ACID 事务,Iceberg 支持多用户同时读写,无需担心部分结果或数据损坏影响完整性。此外,Iceberg 的智能元数据层可以通过跳过不相关数据文件来大幅提升性能。以下是主要优势的概要。

  • ACID 事务:Apache Iceberg 支持 ACID(原子性、一致性、隔离性、持久性)事务,有助于确保数据操作即使在并发环境中也是可靠和一致的。
  • 时间旅行:Iceberg 支持查询存在快照的任意历史时间点数据,这对数据版本管理、审计和调试极为有用。
  • 模式演进:由于 Iceberg 表将模式变更存储在元数据文件中,您可以通过添加、删除或重命名列来轻松地随时间推移演进表模式,而不会中断现有的查询或数据管道。这是因为预先存在的查询将直接查询它们创建时已存在的模式。
  • 分区演进:Iceberg 支持动态分区,这意味着您可以在无需重写整个数据集的情况下添加或更改分区。这有助于优化查询性能和存储效率。
  • 不断发展的生态系统:Iceberg 可与广泛的数据处理框架和引擎集成,包括 Spark、Flink 和 Trino。它还可以与 BigQuery、Amazon Redshift、Snowflake 和 Oracle AI Database 等云端数据仓库集成,这使其成为适合许多数据架构的通用选择。

使用 Iceberg 表时面临的挑战

Apache Iceberg 表确实带来了一些值得用户注意的挑战。

  • Iceberg 要求充分理解其元数据管理和底层文件格式,这对所有刚接触该架构的人来说学习门槛较高。
  • 另一个挑战是存储需求,考虑到需要维护多个版本的数据以支持时间旅行和快照功能,这种需求可能相当大。
  • 虽然 Iceberg 拥有广泛且不断发展的生态系统支持,但并非所有数据处理工具和平台都提供集成,这可能会限制其在某些环境中的可用性。

使用 Oracle Autonomous AI Database 查询 Iceberg 表

如果您正在运行关键任务数据仓库和数据湖操作,Oracle Autonomous AI Database 是以最简单方式支持您所有数据类型、事务工作负载和分析的选择。

您可以在 Autonomous AI Database 内部或外部的数据湖或云存储中,使用相同的工具、流程和访问方法分析数据。这涵盖了各种云对象存储,包括 OCI Object Storage、Amazon S3、Azure Blob Storage 和 Google Cloud Storage。

借助 Autonomous AI Database,您的企业可以将数据整合到单一平台上,该平台包括集成式机器学习和 LLM,以及对 JSON、关系表、图形和空间数据、向量等的原生支持。通过集成,您还可以管理各种数据湖文件类型,包括 Parquet、Avro、JSON、CVS、C 和 XLSX,以及各种主流的数据湖表结构,包括 Delta 表,当然还有 Iceberg 表。

Iceberg 表是一种日益流行的格式,它弥合了传统数据湖与实时分析之间的鸿沟。它最初是为应对早期 PB 级数据湖而创建,如今已被越来越多同等规模与复杂度的数据湖仓一体用户所采用。期待更多的云技术服务提供商加入进来,帮助其客户充分利用这一恰逢其时的技术进步。

电子书封面

您的数据基础设施是否已为支持相似性搜索和其他 AI 计划做好准备?我们的电子书为您规划了构建坚实数据基石的路径,助您为 AI 应用的成功部署奠定基础。

注:为免疑义,本网页所用以下术语专指以下含义:

  1. 除Oracle隐私政策外,本网站中提及的“Oracle”专指Oracle境外公司而非甲骨文中国。
  2. 相关Cloud或云术语均指代Oracle境外公司提供的云技术或其解决方案。