
CData Sync V26.2 では、大規模テーブルの初回スナップショットを高速化する「並列読み取りパーティショニング」機能が追加されました。テーブルをパーティションキーで分割して複数スレッドで並列に読み取ることで、シングルスレッドでは時間のかかっていた初回データロードを大幅に短縮できます。本記事では、PostgreSQL をデータソースとして Snowflake へ連携する CDC ジョブを例に、設定手順を解説します。本記事では検証に CData Sync 26.2.9629.0 を使用しています。
並列読み取りパーティショニングとは
並列読み取りパーティショニングは、テーブルのデータを指定したパーティションキー(日付や整数型のカラム)の値範囲で複数のパーティションに分割し、それぞれを独立したスレッドで同時に読み取る機能です。
この機能はテーブル全件を読み取る必要がある場面で効果を発揮します。数百万件から数千万件規模のテーブルや、長期間にわたってデータが蓄積されたログ・トランザクションテーブルで特に大きな恩恵を受けられます。すべて同期ジョブでは毎回のジョブ実行が全件読み取りとなるため、各実行で並列化が効きます。標準ジョブでは差分チェックカラムによる差分連携時は対象外で、初回スナップショットや全件再読み取りが発生するタイミングで並列化が効きます。CDC ジョブでは差分連携フェーズで CDC ログ(PostgreSQL の場合は論理レプリケーション / WAL)を利用するため、並列化が効くのは初回スナップショットフェーズや全件再読み取りが発生するタイミングです。
従来の課題
CData Sync の標準的な初回スナップショットはシングルスレッドで動作します。テーブル全件を 1 接続で順次読み取るため、データ量が増えるほど処理時間が線形に伸びます。
CDC ジョブを新たに設定する場合、差分連携が始まる前に初回スナップショットが完了するまで待つ必要があります。テーブルが数千万件規模になると、初回ロードだけで数十分から数時間かかることがあり、運用開始までの待ち時間がボトルネックになっていました。
CData Sync V26.2 での対応内容
V26.2 では、リバース ETL を除くジョブタイプ(標準、CDC)の UI 設定から並列読み取りパーティショニングを有効化できます。
V26.2 時点で対応しているソースコネクタは以下のとおりです。
PostgreSQL
SQL Server
MySQL
MariaDB
Oracle
DB2
DB2 i
Informix
SAP Hana
Snowflake
パーティションキーに指定できるデータ型は Date、DateTime、Integer の 3 種類です。これらのデータ型を持つカラムを基準にパーティション分割が行われます。
いずれのジョブタイプでも、本機能が効くのはテーブル全件を読み取るタイミングです。初回スナップショットがその代表ですが、オプション指定によって 2 回目以降の実行で全件再読み取りが発生する場合にも並列化が効きます。
V26.1 以前からアップデートする場合の注意点
並列読み取りパーティショニングは、CData Sync のアプリケーションデータベースが Derby 以外 の場合にのみ利用できます。アプリケーションデータベース別の利用可否は以下のとおりです。
アプリケーションデータベース | 並列読み取りパーティショニングの利用可否 | 該当する環境 |
|---|
Derby(V26.1 以前のデフォルト) | ❌ 利用不可 | V26.1 以前からアップデートし、アプリケーションデータベースを変更していない環境 |
H2(V26.2 以降のデフォルト) | ✅ 利用可能 | V26.2 を新規インストールした環境 |
外部 DB(MySQL / PostgreSQL / SQL Server など) | ✅ 利用可能 | アプリケーションデータベースを外部 DB に切り替え済みの環境 |
V26.2 ではアプリケーションデータベースのデフォルトが Derby から H2 に変更されました。そのため次のように環境ごとに対応が変わります。
V26.2 を新規インストールした場合 — デフォルトの H2 のまま、追加の作業なしで本機能を利用できます。
V26.1 以前から運用していて、アプリケーションデータベースが Derby のままの場合 — 本機能を有効化できません。H2 や MySQL などの外部 DB に移行する必要があります。
V26.1 以前から運用していて、すでに外部 DB(MySQL / PostgreSQL / SQL Server など)に切り替えている場合 — V26.2 へアップデート後、そのまま本機能を利用できます。
なお、V26.2 では Derby または H2 から外部 DB(MySQL / PostgreSQL / SQL Server など)へ移行するための アプリケーションデータベース移行機能 が追加されています。画面操作で移行を実行できるため、既存環境からのアップデート時にもスムーズに本機能を利用できる構成へ切り替えられます。詳細は アプリケーションデータベースの移行ヘルプページ を参照してください。
今回構築する連携
PostgreSQL 上にある受注テーブル(orders)を Snowflake へ連携する CDC ジョブを構築し、初回スナップショットを並列読み取りパーティショニングで高速化します。本記事の実測では orders テーブルを 500 万件として検証しています。order_date カラム(Date 型)をパーティションキーとして使用します。
設定手順
Step 1:データソース(PostgreSQL)と連携先(Snowflake)の接続設定
画面左側の「接続」タブから「接続を追加」を選択し、PostgreSQL (Native) コネクタを選んで接続情報(Server、Port、Database、User、Password)を入力します。設定の詳細については PostgreSQL コネクタ ヘルプページの「PostgreSQL への認証」セクションを参照ください。
また、PostgreSQL を CDC ジョブのソースとして使用する場合、接続先 DB で 論理レプリケーション を有効化しておく必要があります。セットアップ方法については上記ヘルプページの「Set Up PostgreSQL for CDC」セクションを参照ください。
同様に「接続を追加」から Snowflake コネクタを選択し、接続情報(URL、Warehouse、Database、Schema、認証情報)を入力して接続を作成します。Snowflake では OAuth、キーペア認証、ユーザー名/パスワード認証などが利用できます。設定の詳細については Snowflake コネクタ ヘルプページを参照ください。
Step 2:ジョブの作成
「ジョブ」タブから「ジョブを追加」を選択し、任意のジョブ名を入力します。データソースに PostgreSQL、同期先に Snowflake の接続を指定してジョブを作成します。

ジョブ作成後、「タスク」タブから対象テーブル(orders)を追加します。

Step 3:タスク詳細で並列読み取りパーティショニングを有効化
「タスク」タブでタスク名をクリックしてタスク詳細画面を開き、「概要」タブの「データソース」セクションの編集アイコンから。以下の 4 つの設定項目を入力します。
設定項目 | 説明 | 設定例 |
|---|
並列読み取りパーティショニング | 並列読み取りパーティショニングの有効化 | 有効化 |
パーティションキー | パーティション分割の基準カラム(Date / DateTime / Integer) | order_date
|
パーティションサイズ | 1 パーティションの範囲。日付型なら日数、整数型なら数値範囲 | 180(日) |
最大並列パーティション数 | 同時実行する最大パーティション数 | 4 |
CDC ジョブではパーティションキーの指定が必須です。標準ジョブやすべて同期ジョブの場合はパーティションキーの指定は不要です。
代わりに、タスクに設定されている差分チェックカラムがパーティション分割の基準として使われます。

Step 4:ジョブ実行とスナップショットの動作確認
ジョブ画面上部の「実行」ボタンをクリックしてジョブを実行します。初回実行時はスナップショットフェーズが動作し、orders テーブルの全件がパーティション単位で並列に読み取られて Snowflake へ転送されます。
実行後、「ジョブ履歴」タブから初回スナップショットの所要時間と転送件数を確認します。ログにはパーティションごとの処理件数が記録されるため、並列処理が正常に動作していることを確認できます。

パフォーマンス比較:有効化前 vs 有効化後
orders テーブル(500 万件)を対象に、並列読み取りパーティショニング無効と 最大並列パーティション数 = 4 で初回スナップショットの所要時間を計測しました。ログから各処理フェーズの時間を集計した結果を以下に示します。
処理フェーズ | 並列無効(従来) | 最大並列パーティション数 = 4
| 短縮時間 | 改善率 |
|---|
ソース読み取り | 約 64 秒 | 約 38 秒 | 約 26 秒 | 約 41% |
全体処理時間 | 2 分 38 秒 | 1 分 55 秒 | 約 43 秒 | 約 27% |
本機能が直接効くソース読み取りフェーズで 約 41% の短縮 を確認できました。ジョブ全体で見ても約 27% 短縮していますが、これは書き込み側(Snowflake への PUT / COPY INTO / MERGE)に並列化されない処理が含まれているためで、ソース読み取り部分に絞れば本機能の効果がよりはっきり現れます。テーブル件数が増えるほど絶対的な短縮時間も大きくなるため、数百万から 1,000 万件以上の規模では特に大きな恩恵を受けられます。
数値は環境(CPU・メモリ・ネットワーク・ソース DB 負荷)に依存します。環境によって結果は異なりますので、参考値としてご覧ください。
並列度を高くするほどソース DB への同時接続数が増えるため、DB サーバーのリソース余力を確認しながら最大並列パーティション数を調整してください。
まとめ
CData Sync V26.2 の並列読み取りパーティショニング機能を使うことで、大規模テーブルの初回スナップショット時間を大幅に短縮できます。CDC ジョブで数百万件以上の規模のテーブルを連携する際のボトルネックを解消し、運用開始までの待ち時間を減らせます。ぜひ CData Sync V26.2 をお試しいただき、データ連携基盤の高速化にお役立てください。CData Sync の 30 日間無償トライアルはこちらからダウンロードいただけます。
また、使っていて気になった点やご不明な点があれば、お気軽にテクニカルサポートまでお問い合わせください。