TROCCOも実はIcebergに対応している話: CDCデータ転送機能の紹介を添えて
1. この記事について
この記事はIceberg Advent Calendar 2025の12日目の記事です(投稿が遅れすみません)。
さて、あまり知られていないかもしれませんが、実はTROCCOもIcebergに対応しています!!
ただし、通常のデータ転送機能ではなく、今年リニューアルしリリースした機能であるCDC(Change Data Capture)データ転送機能にてデータを転送した際、転送先であるS3バケットへIceberg形式で書き込める、という形でのサポートです。
この記事では、
- TROCCOのCDCデータ転送機能の概要
- CDCデータ転送機能で作成されるIcebergテーブルの特徴
- AWS Glueからの参照方法
について紹介します。
2. TROCCO における CDC データ転送機能の概要
TROCCOにおけるCDCデータ転送機能は、データソース側(例:MySQL)で発生した変更を最短5分間隔で収集し、連携先(例:Amazon S3 Iceberg)への同期処理を実行します。※ストリーミング処理ではなく、マイクロバッチ方式でデータを連携します。
2-1. 今までのTROCCOの転送との差分
従来の TROCCO の転送機能と比較すると、CDC では以下の特徴があります。
- 物理削除を含む変更データを取得可能
- 初回全件転送後は DB に直接負荷をかけずに変更分のみを同期
- 1設定で複数テーブルをまとめて転送可能
- PostgreSQL:スキーマ単位
- MySQL:データベース単位
2-2. 利用可能な転送元および転送先
- 転送元
-
転送先
- Amazon S3 Iceberg (今回の主役!!)
- Google BigQuery
2-3. TROCCOのCDCデータ転送で作成されるIcebergテーブルについて
みなさんご存知の通り、Iceberg はスナップショット管理やスキーマエボリューションといった変更データの取り扱いに適した特徴を持つため、CDC で継続更新されるデータをレイクハウスに蓄積する用途と非常に相性が良いフォーマットです。
また、TROCCOのCDC機能でもそれらの強みを活かせるような機能として、転送元テーブルのスキーマ変更の自動追従にも対応しています。これにより、例えばアプリケーションの機能追加などにより転送元テーブルの列が増えた際などにも面倒な手動オペレーションを行うことなく継続的にデータを転送することができます。
なお、TROCCOのCDCデータ転送で作成されるIcebergテーブルは、Iceberg format Version2に準拠しており、Delete/Update(Row-level operations)にも対応可能なメタデータ構造となっています。
対応しているクライアントとしてはAWS Glue Data Catalogの他、Google BigQueryからもIceberg外部テーブル(参考)として参照することができ、レイクハウスアーキテクチャのデータ基盤構築に役立てることができます。
3. TROCCOで CDC データ転送を使って Iceberg テーブルを作成してみるウォークスルー
ここからは、実際にTROCCOで、MySQL → Amazon S3 Iceberg の CDC データ転送を構築する流れをスクリーンショットつきで簡単に紹介していきます。
3-1. CDC データ転送設定の作成
まず、TROCCO 左メニューから 「CDC データ転送」 を選択し、
画面右上の 「新規追加」 をクリックします。

「新規追加」を押すと、転送元・転送先のコネクタ選択画面が表示されます。
今回は例として、転送元:MySQL → 転送先:Amazon S3 Iceberg を選択します。

3-2. 転送元(MySQL)の接続設定
最初に、MySQL の接続情報と対象データベースを設定します。
ここは通常の TROCCO のデータ転送とほぼ同様の入力項目です。

3-3. 転送先(S3 Iceberg)の接続設定
次に、転送先となる AWS S3 Iceberg の接続情報を入力します。
入力する項目は以下のとおりです。
- S3 接続情報
- S3 のリージョン
- S3 バケット名
- Iceberg Warehouse のパスプレフィックス
- Glue Data Catalog データベース名

3-4. 転送対象テーブルの選択
接続設定が完了すると、MySQL 側のテーブル一覧が自動的に表示されます。
ここから 転送対象となるテーブルを複数選択 できます。

テーブルごとに以下の設定が可能です
- パーティショニング設定
- 転送対象カラムの選択(ON/OFF)
たとえば「個人情報が含まれるカラムは Iceberg に連携したくない」という場合、チェックボックスを外すと転送対象から除外できます。

3-5. 初回全件転送 → 継続的な CDC 転送へ
設定完了後、まずは初回の全件転送が行われます。
このタイミングでMySQL側に一定の負荷がかかるため、利用時間帯などにご配慮いただくと安全です。一応画面にも警告が表示されます。

初回の転送が完了すると、以降は指定したスケジュールに従って最短5分間隔でデータがIcebergテーブルに反映されます。

3-6. AWS Glue から Iceberg テーブルを確認する
TROCCO が Iceberg 形式で書き込んだテーブルは、AWS Glue Data Catalog からそのまま参照できます。まず Glue コンソールを開き、対象の Iceberg テーブルがカタログに登録されていることを確認します。

テーブルを選択すると、「View data」列の「Table data」から実際の Iceberg テーブル内容をプレビューできます。
以上が簡単なTROCCOのCDCデータ転送機能の概要です。
4. まとめ
TROCCOにおけるCDCデータ転送機能の紹介、およびIcebergへの対応について紹介しました。なお、今回は趣旨からは少し外れますが、TROCCOでは転送元および転送先としてdatabricksにも対応しており(任意のデータソースのデータをDelta lake形式でdatabricksに格納したり、databricksのテーブルをデータソースとしてMAツールなど任意のサービスに連携ができます)、データウェアハウスだけでなくデータレイクハウスとの連携も進めています。
今後のアップデートにもぜひご期待ください。
Discussion