Apache Iceberg / リリースノート / 2026/01/26 / 通常
Apache Iceberg C++ 0.2.0 リリース解説: REST Catalog と table operation が実用域へ近づく
公式リリースノート
Apache Iceberg C++ 0.2.0 は、C++ 実装が Iceberg metadata を読めるライブラリ から、テーブル scan、テーブル update、REST カタログ、expression 評価まで含む実装へ進むリリースです。公式記事では、200件以上の pull request と 23人の contributor による更新として紹介されています。
要点
- v2 delete と メタデータ column read を含む テーブル scan / data access が強化された
- スキーマ evolution、テーブル property、sort order、partition spec、location、statistics などの テーブル update に対応した
- REST カタログ client が namespace 操作と テーブル CRUD を広く扱えるようになった
- expression framework、metrics evaluator、residual evaluator など、scan 計画 に必要な土台が増えた
- 0.3.0 に向けた継続開発が進んでおり、C++ 組み込みや native engine からの Iceberg 利用に関係する
今回の更新で何が変わるのか
C++ 0.2.0 の中心は、Iceberg テーブル を C++ から安全に扱うための基礎機能が一気に増えたことです。テーブル scan では v2 delete、メタデータ column、manifest reader の projection / filtering、Arrow C Stream 連携 を伴う ファイル scan task reader が入り、単に メタデータ JSON を読む段階から実際の scan 計画 に近づいています。
テーブル operation では スキーマ evolution、properties、sort order、partition spec、location、statistics の更新、さらに fast append を含む transaction API が示されています。Iceberg では snapshot と メタデータ 更新の整合性が重要なので、C++ 側で テーブル update と transaction の土台が整うことは、native engine や組み込み処理から Iceberg テーブル を扱ううえで意味があります。
REST カタログ の対応も大きいです。namespace 操作、create / load / drop / list / update / stage-create テーブル operation、連携 テスト coverage が入ったことで、カタログ interoperability の話が C++ 実装にも広がります。
対象になりそうなユーザー・チーム
- C++ ベースの query engine、storage engine、組み込み分析基盤を開発しているチーム
- Iceberg テーブル を Java / Spark 以外の runtime から直接扱いたい開発者
- REST カタログ を中心に multi-engine Iceberg 運用を考えている platform team
- native execution や Arrow C Stream 連携を重視するデータ基盤チーム
実務でまず確認したいこと
- 自社の利用 engine が C++ Iceberg 実装を直接使う計画を持っているか確認する
- v2 delete、スキーマ evolution、transaction API など、必要な テーブル semantics がどこまで実装されているか見る
- REST カタログ と既存 カタログ の compatibility を検証する
- production 利用では、0.2.0 の範囲と次の 0.3.0 ロードマップ を切り分けて判断する
どう読むべきか
このリリースは、今すぐ全ての C++ ワークロードで Iceberg が完成した、という話ではありません。むしろ、native implementation が テーブル scan、カタログ、メタデータ update、expression 評価 の主要部品をそろえ始めたことが読みどころです。Iceberg を複数言語・複数エンジンで共通 テーブル format として使うなら、C++ 実装の成熟は将来の engine 連携 に効いてきます。