データ更新

ソースベースの変更データキャプチャ (CDC) の使用

Objective

After completing this lesson, you will be able to ソースベースの変更データキャプチャ (CDC) を使用

ソースベース CDC

ソースベースの変更データキャプチャ (CDC) は、最も少ない行を抽出することでパフォーマンスが向上するため、データの更新に推奨される方法です。以下の図に示すように、ソースベースの CDC は、増分抽出とも呼ばれ、変更された行のみをソースから抽出します。

タイムスタンプおよび変更ログ

ソースベースの CDC を使用するには、ソースデータに変更が示されている必要があります。この指定には、タイムスタンプまたはログファイルの変更があります。

  • タイムスタンプ:

    ソースデータのタイムスタンプを使用して、データが最後にソースから抽出されてから追加または変更された行を特定します。このタイプのソースベース CDC をサポートするには、データベーステーブルに少なくとも更新タイムスタンプが必要です。最適な結果を得るために、登録タイムスタンプも含めます。

  • 変更ログ:

    監査証跡のログファイルで RDBMS によって取得された情報を使用して、変更されたデータを特定します。

時間基準 CDC

一部のシステムには、日付と時刻のタイムスタンプ、日付のみのタイムスタンプ、単調に生成される増加数が含まれるシステムもあります。日付と生成された数値を同じ方法で処理することができます。

タイムゾーンは、リアルタイムに基づくタイムスタンプにとって重要です。ソースシステムの命名法を使用してタイムスタンプを追跡し、タイムスタンプと論理タイムスタンプの両方を同じ方法で処理することができます。

時間ベース CDC のユースケース

タイムスタンプベースの CDC は、以下の場合に変更を追跡するための理想的なソリューションです。

  • 更新されるテーブルに日付および時刻項目があります。
  • 日付および時刻項目の抽出と索引間の変更の割合が小さい大きなテーブルを更新しています。
  • たとえば、顧客が同じ日に 2 回地域を変更した場合など、抽出間の各トランザクションの中間結果を取得する必要はありません。

次の場合に時間ベース CDC を使用しない

  • 変更を追跡するためのタイムスタンプ列がソーステーブルにありません。
  • 抽出間で変更の割合が大きい大きなテーブルがあり、タイムスタンプに索引がありません。
  • 物理的なロー削除を取得する必要があります。
  • 抽出間で同じ行に存在する複数のイベントを取得する必要があります。

タイムスタンプベーステクニック

タイムスタンプ付き CDC の場合、以下を含むワークフローを作成する必要があります。

  • ターゲットテーブルを読み込み、グローバル変数の値を最新のタイムスタンプに設定するスクリプト。
  • WHERE 句でグローバル変数 (またはパラメータ) を使用してデータをフィルタするデータフロー。

データフローには、ソーステーブル、クエリ、およびターゲットテーブルが含まれます。このクエリでは、タイムスタンプが最終更新よりも後の行のみが抽出されます。

次の例は、変更を追跡するタイムスタンプ手法を示しています。

  • 最後のロードは 2008 年 1 月 1 日の午後 2 時に発生しました。
  • この時点では、ソーステーブルには 1 行しかありませんでした (キー = 1)。
  • Data Services では、2008 年 1 月 1 日の元のタイムスタンプ 1:10 PM でこの行がターゲットテーブルにロードされました。
  • 2:00 PM の後、Data Services によってソーステーブルに行が追加されます。

2008 年 1 月 1 日の午後 3 時に、ジョブが再実行されます。ジョブ:

  1. 対象テーブルから Last_Update 項目を 01/01/2008 01:10 PM として読み込みます。
  2. Last_Update の値よりも後のタイムスタンプを持つ行をソーステーブルから選択します。

    これらの行を選択する SQL コマンドは、SELECT * FROM SOURCE WHERE LAST_UPDATE > 01/01/2007 01:10 PM です。

    この操作は、2 行目と 3 行目 (key=2 および key=3) を返します。

  3. これらの新しい行をターゲットテーブルにロードします。

試してみる

ここでは、ソースベースの CDC の実装について説明します。

重複

2 つの抽出実行間で変更が失われる可能性がある時間枠があります。この重複期間は、ソースベースの CDC に影響します。これは、このキャプチャは変更されたデータの決定に静的タイムスタンプに依存しているためです。

たとえば、テーブルに 10,000 行があり、ロード後、ジョブが終了する前にいずれかの行に変更が加えられると、2 番目の更新が失われる可能性があります。

重複の方針が必要です。データベースのトランザクションログを使用するなどして、重複を回避したり、重複照合を実行したりすることが必要になる場合があります。場合によっては、事前サンプリングで重複が生じる場合があります。

詳細については、Designer ガイド: https://help.sap.com/docs/SAP_DATA_SERVICES/ec06fadc50b64b6184f835e4f0e1f52f/5720dbaf6d6d1014b3fc9283b0e91070.html? を参照してください。locale=en-US