[Talend] CDC(Change Data Capture)を使ったデータ連携(2/3)

talend

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

  1. [Talend] CDC(Change Data Capture)を使ったデータ連携(1/3)
  2. [Talend] CDC(Change Data Capture)を使ったデータ連携(2/3)
  3. [Talend] CDC(Change Data Capture)を使ったデータ連携(3/3)

OracleにCDCを定義する

前回の記事ではテーブルスキーマを定義するまでを定義したので、今回はoracleのテーブルに対して実際にCDCの定義以降を行います。

・STEP1:Create CDCを選択します。 create_cdc1

・STEP2:下記画面が表示されたら Create Subscriber をクリックします。
create_cdc2

・STEP3:Subscriperを定義します。
create_cdc3

・STEP4:TSUBSCRIBERSが追加されていることを確認します。
create_cdc4

・STEP5:add CDC で定義します。
create_cdc5

・STEP6:下記画面が表示されるので Execute でSQLを実行します。
create_cdc6

・STEP7:下記のように追加されていることを確認します。
create_cdc7
以上でCDCの定義までは完了したので、次は実際に動作の確認を行ってみます。

データ変更用のTalend JOBを作成

customersテーブルに変更を加えるジョブを作成します。Create JobでModifyTablesOracleとしてここでは作成します。

  1. Delete用のSubJobを作成
  2. Update用のSubjobを作成
  3. Insert用のSubJobを作成

各サブジョブ作成後はOnSubjobOKのトリガで順にプロセスが流れるようにTalend上で定義します。

まずはDataOracleメタデータをドラッグ&ドロップでジョブデザイナーエリアに配置します。(tOracleInputを指定します。)同様にDataOracleメタデータをドラッグ&ドロップで配置します。(tOracleOutputを指定します。)

配置したtOracleInput_1のプロパティ
※クエリには where ID='1' を追加していることに注意 modifyjob_1_1

配置したtOracleOutput_1のプロパティ
※Action on dataのプロパティを delete に変更していることに注意 modifyjob_2_1

次に関係線をメインで繋いでdeleteに変更します。
modifyjob_2_2_1

同じようにDataOracleメタデータをドラッグ&ドロップで配置してUpdate用のSubjobも作ります。

配置したtOracleInput_2のプロパティ
※クエリには where ID='2' を追加していることに注意 modifyjob_3_1_1

配置したtOracleOutput_2のプロパティ
※Action on dataのプロパティを update に変更していることに注意 modifyjob_3_2

配置したtMapのマップエディタ modifyjob_3_3_1

各コンポーネントをメインの関係線で結びます。
modifyjob_3_4

最後にcustomersテーブルにレコードを追加するSubjobを作成します。
tRowGeneratorとDataOracleメタデータをドラッグ&ドロップで配置してtOracleOutputコンポーネントを配置します。
modifyjob_4_1

tRowGenerator Editorで値を設定します。
modifyjob_5_1

配置したtOracleOutput_3のプロパティ
※Action on dataのプロパティを insert に変更していることに注意 modifyjob_6_1

tRowGeneratorとtOracleOutputにメインで関係線を結び、各SubjobがOKなら次のSubjobへ処理が移るようにトリガを設定します。

ジョブの完成系は以下の感じになります。

modifyjob_8
次はcustomersテーブルが変更された場合にMySQLのテーブルへ変更を反映するジョブを作成します。