チェンジデータキャプチャー(CDC)
CDCアーキテクチャーの概要
データウェアハウジングでは、データを分析するため、1つ(または複数)のデータベースからデータを抽出しターゲットシステムへ転送する必要があります。ただし、これには膨大な量のデータを抽出し転送する必要があり、リソースと時間の両方においてかなりのコストがかかります。
変更されたソースデータのみをキャプチャーし、それをリアルタイムにソースからターゲットシステムに移動する機能は、チェンジデータキャプチャー(CDC)として知られています。変更をキャプチャーすることで、ネットワークを経由するトラフィックが削減されるため、ETL時間を短縮できます。
Talend Studioで導入されたCDC機能は、最終抽出以降の変更データを識別するプロセスを簡易化します。Talend StudioのCDCは、データベーステーブルで追加、アップデート、または削除されたデータを迅速に識別してキャプチャーし、その後アプリケーションまたは個々のユーザーがこの変更データを使用できるようにします。CDC機能は、Oracle、MySQL、DB2、PostgreSQL、Sybase、MS SQL Server、Informix、Ingres、Teradata、およびAS/400に対応しています。
Talend Studioでは、3種類のCDCモードを使用できます:
-
[Trigger] (トリガー): このモードはCDCコンポーネントが使用するデフォルトモードです。
-
[Redo/Archive log] (再実行/アーカイブログ): このモードはOracle v11とそれ以前のバージョンおよびAS/400で使用されます。
-
[XStream]: このモードはOracle v12のOCIでのみ使用されます。
これらの3つのモードの詳細は、以下のセクションを参照してください。
トリガーモード
このモードは以下のデータベースに対応しています: MySQL, Oracle, DB2, PostgreSQL, Sybase, MS SQL Server, Informix, Ingres, およびTeradata。
[Trigger] (トリガー)モードは、各監視対象ソーステーブルでのCDCの開始をトリガーします。これによってデータベースストラクチャーが変更されることはほとんどありません。
このモードでは、ソーステーブルで生じた[Insert] (挿入)、[Update] (アップデート)、または[Delete] (削除)操作について同時にデータ抽出され、変更データはデータベース内の変更テーブルに保存されます。変更されたデータはキャプチャーされ、その後、サブスクライバービューを使用して管理された方法でターゲットシステムで使用できる状態にします。
[Trigger] (トリガー)モードでは、CDCのパブリッシャーは1つのみですが、多数のサブスクライバーを保持できます。CDCは、サブスクライバーテーブルを作成してターゲットシステムによる変更テーブルデータへのアクセスを制御します。ターゲットシステムは、ソースシステムからキャプチャーされたデータを使用する必要のある任意のアプリケーションです。
下図は、における[Trigger] (トリガー)Talend StudioモードのCDC環境の基本的なアーキテクチャーを示しています。
この例では、CDCはProductテーブルに加えられた変更を監視しています。変更が取得されると、2つのサブスクライバーがアクセス可能な変更テーブルに公開されます。CRMアプリケーションと会計アプリケーション。これらの2つのシステムは変更をフェッチし、それらを使用してデータを更新します。
CDC再実行/アーカイブログモード
[Redo/Archive log] (再実行/アーカイブログ)モードは、OracleデータベースEnterprise Editions v11およびAS/400データベースでのみ使用可能です。OracleのアーカイブログモードおよびAS/400のジャーナルモードと同等です。
Oracleデータベースでは、[Redo log] (再実行ログ)は、データに加えられた変更の履歴を記録したファイルです。AS/400データベースでは、これらの変更は自動的にデータベースの内部ログブック(ジャーナル)に記録されます。これらの変更には、データに対して実行された可能性のある挿入、アップデート、および削除操作が含まれます。
[Redo/Archive log] (再実行/アーカイブログ)モードは[Trigger] (トリガー)モードとは対照的でデータベースストラクチャーを変更する必要がないため、[Trigger] (トリガー)モードより透過的です。
この[Redo/Archive log] (再実行/アーカイブログ)モードをOracleに対して設定する場合は、1つのサブスクライバーのみが変更テーブルへのアクセス権限を保持できます。このサブスクライバーは、サブスクリプション権限を保持するデータベースユーザーである必要があります。また、サブスクライバー変更テーブルへのアクセスを制御するサブスクリプションテーブルもあります。サブスクリプション変更テーブルは、[Redo/Archive log] (再実行/アーカイブログ)オプションが有効になった時点でのOracleデータベースの状態を反映する包括的な内部テーブルです。
このモードをAS/400に対して設定すると、fitcdc.savfという名前のTalend Studioで提供される保存ファイルがAS/400上で復元され、RUNCDCと呼ばれるプログラムのインストールに使用されます。サブスクライバーが変更を表示([View all changes] (すべての変更を表示))するか、それらを(tAS400CDCコンポーネントを使用して)再利用すると、RUNCDCプログラムはソーステーブルからログブック(ジャーナル)と接続されたレシーバーを読み取って分析し、それに従って変更テーブルをアップデートします。AS/400 [CDC Redo/Archive log] (CDC再実行/アーカイブログ)モード(ジャーナル)では、サブスクリプションテーブルが作成され、許可されていないターゲットシステムが変更テーブルのデータにアクセスするのを防ぎます。ターゲットシステムとは、ソースシステムでキャプチャーされたデータの使用を試みるアプリケーションを指しています。
この例では、CDCは、データベースのログブック(ジャーナル)に含まれるデータを利用して、Productテーブルに加えられた変更を監視しています。CDCはログブックを読み取り、データに加えられた変更を記録します。これらの変更は収集されると、CRMアプリケーションと会計アプリケーションの2つのサブスクライバーがアクセス可能な変更テーブルに公開されます。これらの2つのシステムは変更をフェッチし、それらを使用してデータを更新します。
XStreamモード
XStreamは、OracleデータベースとOracle以外のデータベースやサードパーティソフトウェアアプリケーションなど他のシステムとの間で、データ変更のリアルタイム共有のためのパフォーマンスおよび有用性に優れたフレームワークを提供します。XStreamは次の2つの主要な機能で構成されています: XStream OutおよびXStream In。
XStream Outは、Oracleデータベースで行われたデータの変更を他のシステムと共有するためのOracle Databaseコンポーネントおよびアプリケーションプログラミングインターフェイスを提供します。また、OracleデータベースのREDOログからキャプチャーした変更をアウトバウンドサーバーによりクライアントアプリケーションにストリーミングするためのトランザクションベースのインターフェイスも提供します。アウトバウンドサーバーは、クライアントアプリケーションにデータの変更を送信するオプションのOracleバックグラウンドプロセスです。
XStream Inは、他のシステムで行われたデータの変更をOracleデータベースと共有するためのOracle Databaseコンポーネントおよびアプリケーションプログラミングインターフェイスを提供します。また、インバウンドサーバーによりクライアントアプリケーションからOracleデータベースに情報を送信するためのトランザクションベースのインターフェイスも提供します。インバウンドサーバーは、クライアントアプリケーションからデータの変更を受信するオプションのOracleバックグラウンドプロセスです。
では、XStreamTalend StudioモードはOracle v12のOCIでのみ使用できます。For more information about the XStream mode, see Database XStream Guide.