![[登壇レポート]基礎から解説!Icebergで紐解くSnowflake×Databricks連携の現在地](https://devio2024-media.developers.io/image/upload/f_auto,q_auto,w_3840/v1779783513/user-gen-eyecatch/hsxfrdbe9e7okyp3gi1j.png)
[登壇レポート]基礎から解説!Icebergで紐解くSnowflake×Databricks連携の現在地
2026年5月26日(火)に、クラスメソッド株式会社主催で「基礎から解説!Icebergで紐解くSnowflake×Databricks連携の現在地」というウェビナーが開催されました。
このウェビナーで登壇しましたので、登壇資料と当日の質問についてまとめます。
登壇資料
今回は Apache Iceberg の基本的な部分から、Snowflake と Databricks の直近の Iceberg 関連のアップデートを、両製品間の連携シナリオまでをお話しさせていただきました。
頂いた質問について
当日参加者の皆さまからいただいた質問と、それに対する回答・補足をまとめます。
Snowflakeはマイクロパーティションによるクエリの速さがよいところの1つかなと思いますが、Iceberg 形式においてもこういったメリットは維持されるのでしょうか?
Snowflake 管理の Iceberg テーブルであればメリットは維持されると考えてよいです。
Snowflake 管理の Iceberg テーブルでは、ネイティブテーブルと同じく CLUSTER BY の指定および Automatic Clustering に対応しているため、データの並びを継続的に整えることでプルーニング効率を維持しやすくなっています。
AzureにはIcebergをサポートするサービスはありますでしょうか?
ストレージ層としては Azure Data Lake Storage Gen2(ADLS Gen2)が利用でき、Iceberg のデータファイル・メタデータファイルの配置先として使うことができます。
本記事での補足として、Snowflake から ADLS Gen2 上の Iceberg テーブルを扱う場合は、外部ボリューム(External Volume)として ADLS Gen2 を指定する形で対応しており、AWS S3 と同様の使い方ができます。
Icebergとカタログの責任分解点について、もう少し言及頂けるとうれしいです
当日は「Iceberg はテーブルフォーマット、カタログはそれを管理するシステム」というレベルでお答えしましたが、以降で改めて補足させていただきます。
Iceberg(テーブルフォーマット)が担う責務
- データファイル、manifest file、manifest list、metadata.json といった、テーブルの状態を表すファイル群の仕様の定義
- スキーマ進化・パーティション進化・タイムトラベル・スナップショットといった、テーブル操作の振る舞いを定義する
- 各スナップショット(metadata.json)の中身がどう構成されるかを定める
Iceberg カタログが担う責務
- 「テーブル名」と「現在の最新 metadata.json への参照」のマッピングを保持する
- 同時書き込みが行われても、テーブル更新の ACID トランザクションを維持する
- ネームスペース・データベースといった階層構造と、それに伴うアクセス制御を提供する
つまり、Iceberg 自体は「テーブルがどんなファイル構成で表されるか」を定義し、カタログは「あるテーブルの最新版がどれか」を管理する、という責任分解になります。
さいごに
改めまして、本ウェビナーにご参加頂いた皆さま、本当にありがとうございました。
Iceberg や REST カタログのサポートが進んだことで、製品間の連携は以前よりも現実的な選択肢になってきていると感じています。今回の内容が、皆さまのデータ基盤を検討する際の一助になれば幸いです。








