
CData Sync V26.1 では、待望の新機能として Apache Iceberg 形式でのデータ連携に対応しました。これにより、モダンなオープンテーブルフォーマットでのデータレイクハウス構築が可能になります。Iceberg 連携先として、以下のクラウドストレージがサポートされています。
Amazon S3
Azure Blob Storage
Azure Data Lake Storage
Google Cloud Storage
本記事では、PostgreSQL をデータソースとして、Amazon S3 上にApache Iceberg 形式でデータを連携し、Snowflake から参照する方法を実際の設定手順とともにご紹介します。
Apache Iceberg とは
Apache Iceberg は、Netflix で開発され、現在は Apache Software Foundation のプロジェクトとして管理されているオープンテーブルフォーマットです。ペタバイト規模のデータセットを効率的に管理するために設計されています。Apache Iceberg の主な特徴として次のものが挙げられます。
スキーマ進化(Schema Evolution):既存のクエリを壊すことなく、カラムの追加・削除・名前変更が可能
タイムトラベル(Time Travel):過去の任意の時点のデータにアクセス可能で、監査やデバッグに有効
ACID トランザクション:複数ユーザーによる同時書き込みでもデータ整合性を保証
隠れパーティショニング:パーティション管理の複雑さを抽象化し、自動的に最適化
またDWH に直接データを格納するのではなく、クラウドストレージ上に Iceberg 形式で保存することで、以下のようなメリットがあります。
ストレージコストの削減:S3 などのオブジェクトストレージに保存するため、DWH ネイティブストレージより低コスト。大量データの長期保持で特に効果大
ベンダーロックインの回避:オープンフォーマットのため特定ベンダーに依存しない。DWH 変更時もデータ移行不要
マルチエンジンアクセス:同じデータに Snowflake、Spark、Trino、Athena など複数エンジンからアクセス可能
CData Sync V26.1 での対応内容
CData Sync V26.1 では、クラウドストレージを連携先(Destination)として選択した際に、ファイルフォーマットとして Apache Iceberg を選択できるようになりました。これにより、CData Sync がサポートする 400 種類以上のデータソース から、Iceberg 形式でのデータレイクハウス構築が可能になります。
実際の設定手順:PostgreSQL → Amazon S3(Iceberg)
ここからは、PostgreSQL から Amazon S3 へ Apache Iceberg 形式でデータを連携する具体的な手順を解説します。
Step 1:データソース(PostgreSQL)の接続設定
画面左側の「接続」タブ -> 「接続を追加」よりPostgreSQL コネクタを選択し、接続情報を入力の上、接続を作成します。設定の詳細についてはヘルプページにある「接続の確立」セクションを参照ください。
Step 2:連携先(Amazon S3 + Iceberg)の接続設定
同様に画面左側の「接続」タブ -> 「接続を追加」より S3 を選択し任意の接続名を入力して「Add」ボタンをクリックします。

ここでFile Format にApache Iceberg を選択することで、Apache Iceberg 形式でデータを出力することができます。その他の認証周りの設定詳細についてはヘルプページにある「Amazon S3 への認証」セクションを参照ください。各必須フィールドを入力後、画面右上の「保存およびテスト」で接続情報を保存します。

Step 3:ジョブの作成
Step1, 2 で作成した接続を使用してジョブを作成します。このときS3 のバケット上にIceberg スキーマが存在しない場合はスキーマ選択をクリックし、新たに作成するスキーマ名を入力の上、ジョブを作成してください。

ジョブ作成後、「タスク」タブから連携したいテーブルを追加し、ジョブを実行することでApache Iceberg 形式でS3 へデータ連携することができます。スキーマが存在しない場合は初回の連携で先程入力したスキーマ名をプレフィックスとしてメタデータ情報などが自動で生成されます。


Step 4:Snowflake での Iceberg テーブル参照
次にS3 へ連携したデータをSnowflake から Iceberg テーブルとして参照します。
Step 4-1:AWS - S3 ポリシー作成
Snowflake からIceberg Table が格納されているバケットを参照できるよう、IAM ポリシーを作成します。
{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Action":["s3:GetObject","s3:GetObjectVersion","s3:PutObject","s3:DeleteObject","s3:ListBucket","s3:GetBucketLocation"],"Resource":["arn:aws:s3:::{{\u30D0\u30B1\u30C3\u30C8\u540D}}","arn:aws:s3:::{{\u30D0\u30B1\u30C3\u30C8\u540D}}/*"]}]}

Step 4-2:AWS - IAMロール作成
Snowflake 用の IAM ロールを作成し、上記で作成したポリシーをアタッチします。信頼関係は後で更新するため、一旦信頼されたエンティティタイプなどはAWS アカウントを設定の上、仮の設定で作成します。


作成後、ロールのARN を控えておきます。

Step 4-3:Snowflake - 外部ボリュームの作成
まず、S3 バケットにアクセスするための外部ボリュームを作成します。
CREATE OR REPLACE EXTERNAL VOLUME {{ボリューム名}}
STORAGE_LOCATIONS = (
(
NAME = '{{ストレージ名}}'
STORAGE_PROVIDER = 'S3'
STORAGE_BASE_URL = 's3://{{バケット}}/{{スキーマ名}}'
STORAGE_AWS_ROLE_ARN = '{{先程作成したロールのARN}}'
)
);

外部ボリューム作成後、以下のSQL で AWS_IAM_USER_ARN と EXTERNAL_ID を取得し控えておきます。
DESC EXTERNAL VOLUME {{ボリューム名}};

Step 4-4:AWS - IAM ロールの信頼関係を更新
取得した AWS_IAM_USER_ARN と EXTERNAL_ID を使用して、IAM ロールの信頼関係を次のように更新します。
{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"AWS":"{{AWS_IAM_USER_ARN\u3092\u5165\u529B}}"},"Action":"sts:AssumeRole","Condition":{"StringEquals":{"sts:ExternalId":"{{EXTERNAL_ID\u3092\u5165\u529B}}"}}}]}
Step 4-5:Snowflake - Catalog Integration 作成
Iceberg カタログとの連携を設定します。今回は検証のためGlue カタログを使用せず、OBJECT_STORE で直接メタデータを参照してカタログを作成します。次のSQL を実行しCatalog Integration を作成します。
CREATE OR REPLACE CATALOG INTEGRATION {{カタログ名}}
CATALOG_SOURCE = OBJECT_STORE
TABLE_FORMAT = ICEBERG
ENABLED = TRUE;

Note: 上記の手順では、Iceberg テーブル作成時に特定の metadata ファイルを指定しています。CData Sync によるデータ更新後、最新のデータを自動的に参照できるようにするには、AWS Glue Data Catalog との連携設定が必要になります。Glue カタログを使用することで、メタデータの更新が自動的に反映され、常に最新のデータにアクセスできるようになります。
Step 4-6:Snowflake - Icebergテーブル作成
S3 上の Iceberg テーブルを Snowflake から参照するテーブルを次のSQL を実行し作成します。
CREATE OR REPLACE ICEBERG TABLE {{DB名}}.{{スキーマ名}}.{{テーブル名}}
EXTERNAL_VOLUME = '{{ボリューム名}}'
CATALOG = '{{カタログ名}}'
METADATA_FILE_PATH = '{{Iceberg テーブル名}}/metadata/v{{バージョン番号}}.metadata.json';

Step 4-7:データ確認
あとは通常のテーブルを参照するのと同じようにSELECT 文などで実データを参照することができます。

まとめ
CData Sync V26.1 の Apache Iceberg 対応により、エンタープライズグレードのデータレイクハウス構築がより身近になりました。ぜひ CData Sync V26.1 をお試しいただき、モダンなデータレイクハウス構築にお役立てください。30 日間の無料トライアルも提供しております。CData Sync の30日間無償トライアルはこちらからダウンロードいただけます。
また、使っていて気になった点やご不明な点があれば、お気軽にテクニカルサポートまでお問い合わせください。
CData Sync V26.1 新機能:Apache Iceberg 形式でのデータ連携でモダンデータレイクハウスを構築する