CData Sync V26.1 新機能:Apache Iceberg 形式でのデータ連携でモダンデータレイクハウスを構築

by 宇佐美格 | January 29, 2026

Cover

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」ボタンをクリックします。

S3接続追加画面

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

S3接続設定画面

Step 3:ジョブの作成

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

ジョブ作成画面

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

S3連携結果①

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 を控えておきます。

ロールの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 {{ボリューム名}};

Catalog Integration 作成

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 形式でのデータ連携でモダンデータレイクハウスを構築する