変更データキャプチャ

Version 26.1.9516


変更データキャプチャ


一部のデータソースでは変更データキャプチャ(CDC)をサポートしており、データソースはログファイルを使用して、データベースに変更を加えるイベント(挿入更新、または削除)をログに記録します。CData Sync は、データソーステーブルに変更をクエリするのではなくログファイルを読み込んで変更イベントを確認します。次に、アプリケーションはレプリケーションのためのそれらの変更をほぼリアルタイムで抽出し、次回のレプリケーション用に現在のログを保存します。

以下のデータソースは、CDC の機能をサポートします。Some of these sources use the CDC Engine to capture and stream changes in near real time.(For a list of the sources that use the CDC Engine, see Enabling Change Capture Data for CDC Engine Sources).

  • DB2 (Native)—Uses supplemental logging.

  • DB2 for i (Native)—Uses journaling.

  • Informix (Native)—Uses the Change Data Capture API.

  • MariaDB—Uses binary logs.

  • Microsoft Dynamics 365—Uses change tracking.

  • MySQL—Uses binary logs.

  • Oracle (Native)—Uses Oracle LogMiner.

  • PostgreSQL (Native)—Uses logical replication.

  • SAP ERP—Uses the Change Data Capture API.

  • SQL Server—Uses either CDC or change tracking.両方のメソッドがテーブルで有効になっている場合、Sync はCDC を使用します。

このドキュメントでは、以下のコンセプトとタスクについて説明します:

  • CDC パイプラインの定義

  • CDC を使用する場合かどうかの判断

  • ソースデータベースのCDC を有効化

  • Sync でCDC ジョブを作成

  • CDC ジョブにタスクを追加

  • Post-Job 変換を追加

CDC パイプラインとは?

変更データキャプチャ(CDC)は、データソースからサポートされている同期先にデータ変更をストリーミングできるパイプラインを作成し、そのデータに対して変換を実行できるようにします。サポートされている同期先は、以下のいずれかの構造を含めることができます:

  • 別のリレーショナルデータベース

  • クラウドストレージシステムまたはデータレイク

  • データウェアハウス(例えばSnowflake、Amazon Redshift、Google BigQuery など)

  • ファイルストレージシステム

  • メッセージキュー(Kafka またはKinesis など)

CDC を使用するかどうかの判断

CDC のアプローチは、ソースデータベースに加えられた変更を識別、キャプチャ、配信するプロセスを通じてデータを統合します。それらのデータ変更はトランザクションログに保存されます。

このアプローチは、次のような状況で有効です:

  • CDC をサポートするデータソースの1つを使用している場合。前述のとおり、Sync はMySQL、Oracle、PostgreSQL、およびSQL Server のネイティブのログベースの変更データキャプチャをサポートしています。

  • リアルタイムに近いデータを必要としている場合。CDC プロセスは、ETL やELT 処理においてほぼリアルタイムでのデータ転送を提供します。

  • リソースの使用を制限または保持したい場合。CDC データ統合は、アプリケーションレベルで変更を加えたり、トランザクションテーブルをスキャンしたりしないので、システムへ与える影響は小さくなります。

ソースデータベースのCDC を有効化

CDC を有効化する方法は、CDC をサポートするデータベースソースごとに異なります。使用するデータソースのCDC を有効にする方法については、以下の該当するリンクをクリックしてください。

CData Sync でCDC ジョブを作成

ジョブを作成するには、事前設定されたデータソースと同期先の接続が必要です。データソースおよび同期先接続の作成に関する詳細は、接続を参照してください。

データソースへの接続と、同期先データベースを定義後、次の手順に従って新しいジョブを作成します。

  1. Sync のジョブタブで、ジョブを追加 > 新しいジョブを追加を選択します。ジョブを追加ダイアログボックスが開きます。

  2. ダイアログボックスで、ジョブ名を入力し、サポートされているCDC データソースの1つを選択し、さらに同期先も選択します。

  3. レプリケーションタイプとして変更データキャプチャを選択します。

  4. 同期先スキーマリストからスキーマを選択します。

  5. ジョブを追加をクリックしてジョブを作成します。

  6. ジョブページに戻り、ジョブにアクセスします。

CDC ジョブにタスクを追加

タスクはデータソースから同期先へのデータフローを制御します。通常のレプリケーションジョブでは、すべてのデータソーステーブルをレプリケーションタスクとしてジョブに追加できます。

テーブルをレプリケーションタスクとして追加するには:

  1. Sync のジョブタブで、ジョブをクリックします。

  2. ジョブ / ジョブ名ページのジョブ設定セクションでタスクを追加をクリックします。このアクションによりスキーマを選択ダイアログボックスが開きます。

  3. スキーマリストからスキーマ(例:public)を選択します。

  4. ダイアログボックスで特定のテーブルを選択するか、データソース名の横のチェックボックスを選択して、すべてのテーブルを選択します。

  5. タスクを追加をクリックして新しいタスクを追加します。

  6. ジョブページに戻り、ジョブにアクセスして実行します。

タスクの作成について、詳しくはタスクを参照してください。

主キーを持たないテーブルに対するCDC のサポート

Sync は、同期先テーブルに新しいカラム(_cdatasync_id)を追加することで、主キーのないソーステーブルのCDC をサポートします。このカラムには、行全体のコンテンツから生成されたハッシュ値が格納されます。このハッシュ値は、内容に基づいて行の一意の識別子として機能します。行のいずれかの値が変更されるとハッシュ値も変更されるため、Sync は主キーがなくても行が更新されたことを認識できます。

Sync が_cdatasync_id カラムを追加すると、アプリケーションはINSERT、UPDATE、およびDELETE 操作を次のように処理します:

  • INSERT:データソースで新しい行が検出されると、Sync は_cdatasync_id 値を生成し、その行を同期先に挿入します。

  • UPDATE:Sync は、_cdatasync_deleted=true を設定することで、既存の行の論理削除を実行します。その後、Sync は新しい行を挿入します。

  • DELETE:Sync は、_cdatasync_deleted=true を設定することで、行の論理削除を実行します。

このアプローチ(新しいカラムの追加)により、主キーを持たないソーステーブルに対して正確なCDC を実現できます。

Post-Job 変換の追加

Sync は、ジョブ完了後のデータ変換プロセスをサポートします。高度なSQL クエリを使用するか、既存のdbt Core およびdbt Cloud プロジェクトを活用することで、単一のプラットフォームですべてのデータニーズに対応できます。

SQL 変換についての詳細は、SQL Transformation を参照してください。DBT 変換についての詳細は、DBT Transformation を参照してください。

Sync CDC エンジンの使用方法

Some Change Data Capture (CDC) sources in Sync use the CDC Engine to capture and stream data changes in near real time. The CDC Engine continuously monitors database transaction logs and stages change events for processing by Sync.

CDC エンジン

CDC エンジンは、Sync アプリケーションのコンポーネントで、ソースデータベースからのリアルタイムデータ変更を追跡しストリーミングします。CDC エンジンは、トランザクションログ(ログ先行書き込みやREDO ログなど)を監視することでデータの更新を識別し、これらの変更イベントをステージングエリアにファイルとして一時的に保存して、さらに処理できるようにします。このステージングエリアは、アプリケーションディレクトリのjobs フォルダにあります(C:\ProgramData\CData\sync\jobs)。

Each CDC job that uses the CDC Engine has a dedicated engine instance with a unique subfolder in the staging area. For each table that is included in the job, Sync creates a corresponding subfolder that contains the staged change event files.

ステージファイルの管理

変更イベントの保存を最適化するには、1つのステージファイルに書き込むことができる最大行数を指定するstage.file.max.rows プロパティを設定します。デフォルトでは、この値は100,000行に設定されています。多数のカラムを持つテーブルや大きなオブジェクト(バイナリデータなど)を含むジョブの場合、CData ではこのプロパティの値を減少させることをお勧めします。

次の例に示すように、ジョブの高度な設定タブでテーブルスキーマに応じてこのプロパティを設定できます:

ステージリミットの管理

すべてのCDC ジョブは同じステージングエリアを共有するため、ステージングエリアのサイズを慎重に管理することが重要です。デフォルトでは、ディスクのオーバーロードを防ぐためにステージは10GB に制限されています。この制限はstagemaxsize プロパティを調整することで変更できます。これを行うには、設定 > 高度な設定 > 追加設定 > その他の設定に移動し、以下に示すようにプロパティを適切な値(例えば、stagemaxsize=20)に設定します。

Note:stagemaxsize プロパティは整数値のみを受け入れ、デフォルトではギガバイト(GB)単位で解釈されます。 

ステージングエリアがサイズ制限に達すると、すべてのCDC エンジンが自動的に停止します。このような場合、手動でジョブを実行するか、スケジュールされたジョブの実行を待って、蓄積された変更イベントを同期先に複製してステージングエリアを解放する必要があります。最大ステージサイズの3分の1が解放されると、すべてのCDC エンジンが自動的に起動し、リアルタイムデータストリーミング処理を再開します。

オプションとして、概要タブの開始ボタンをクリックしてCDC エンジンを再起動することもできます。

Note:CDC エンジンは継続的に動作し、変更イベントをリアルタイムでストリームするため、ベストプラクティスとして、ジョブを頻繁に実行するようにスケジュールする必要があります。この方法により、ステージングエリアがサイズ制限に達するのを防ぎながら、ニアリアルタイムのレプリケーションが保証されます。

CDC エンジンソースの変更データキャプチャの有効化

The steps that are required to enable Change Data Capture (CDC) vary by source database. For sources that use the CDC Engine, additional configuration might be required to allow Sync to capture changes from transaction logs or native change tracking mechanisms.

For specific setup instructions for your source, select the appropriate link below.

CDC エンジンを使用するジョブの作成

Creating a job that uses the CDC Engine requires pre-configured source and destination connections.データソースおよび同期先接続の追加については、接続を参照してください。

データソースへの接続と、同期先データベースを定義後、次の手順に従って新しいジョブを作成します。

  1. Sync のジョブタブで、ジョブを追加 > 新しいジョブを追加をクリックします。ジョブを追加ダイアログボックスが開きます。

  2. ダイアログボックスでジョブ名を入力し、CDC をサポートするデータソースと同期先を選択します。For sources that use the CDC Engine, Sync automatically configures the job to use engine-based CDC.

  3. データソースに応じて、適切なプロパティを入力します。

  4. ジョブを追加をクリックします。

  5. ジョブページに戻り、ジョブにアクセスします。

After you create a job that uses the CDC Engine, you add tasks in the same way as for any other CDC job.

タスクの作成について、詳しくはタスクを参照してください。