CData Sync - 履歴モード
CData Sync の履歴モードは、データソース内の履歴データを分析するための機能です。このオプション(アプリケーション内の「Enable History Mode」)を有効にすると、データ行(レコード)の変更履歴を追跡し、時間の経過とともにデータがどのように変化するかを確認できます。履歴モードは、増分チェックカラムによるレプリケーションをサポートするすべてのコネクタで利用できます。
増分チェックカラムとは、日時または整数ベースのカラムで、CData Sync がデータをレプリケートする際に新規または変更されたレコードを識別するために使用します。ソースでレコードが追加または更新されるたびに、このカラムの値が増加します。CData Sync はこのカラムを抽出時の条件として使用し、新規または変更されたレコードのみを取得します。その後、次回のレプリケーションで使用するために、カラムの新しい最大値を保存します。
増分チェックカラムを使用したレプリケーションでは、2種類のデータ型を使用できます。
- DateTime 増分チェックカラム: レコードが最後に更新された日時を表す Last Modified や Date Updated などのカラム。
- 整数ベースの増分チェックカラム: レコードが追加または更新されるたびに増加する、自動インクリメント ID や行バージョンタイプ。
履歴モードはテーブル単位で動作します。分析したいテーブルを選択し、そのテーブルに対してのみオプションを有効にできます。
標準モードでは、CData Sync は既存の行をマージおよび更新しますが、履歴モードでは、更新された行をデータベーステーブルに追記します。
制限事項
履歴モードには、以下の制限事項があります。
- ソーステーブルは増分チェックカラムをサポートしている必要があります。
- 増分チェックカラムはタイムスタンプ型である必要があります。
- 増分チェックカラムは疑似カラムではないこと。(疑似カラムはレスポンスに値がなく、条件としてのみ使用されます)
- 同期先テーブルが存在していないこと。(Advanced タブの Drop Table オプションを使用して、履歴モードを有効にしたテーブルを再作成できます)
CData Sync は現在、以下の同期先で履歴モードをサポートしています。
- SQL Server
- MySQL
- PostgreSQL
- Oracle DB
- Snowflake
- Databricks
- Redshift
注意: 今後、追加の同期先がサポートされる予定です。
データソースの設定
履歴モードを使用してレプリケートしたいデータソーステーブルに、SQL Server テーブル内の増分チェックカラムがあることを確認してください。カラムは「DateTime 増分チェックカラム」または「整数ベースの増分チェックカラム」のいずれかです。

履歴モードの設定
以下の手順に従って、レプリケーションジョブで履歴モードを設定します。この記事では SQL Server と MySQL データベースを例として使用していますが、原則はどのデータソースおよび同期先にも適用されます。
- CData Sync Server を起動します。
- データソース接続と同期先接続を作成します。

- 新しいジョブを作成し、ソースと同期先を選択して「Create」をクリックします。

- 新しく作成されたジョブの Job Settings で「Add Tasks」をクリックします。
- 「Add Task」セクションでソースデータベース(SQL Server)からレプリケートするテーブルを選択し、「Add」をクリックします。

- Job Settings の Advanced に移動し、History Mode チェックボックスを選択して変更を保存します。
- タスクをクリックして Task Settings を開きます。「Overview」タブの「Source Information」セクションで編集をクリックします。ドロップダウンをクリックして、「Incremental Check Column」として使用するカラムを選択します(この例では Date Incremental check column)。

- Tasks タブで「Run」をクリックしてテーブルレプリケーションジョブを実行します。ジョブが正常に実行されると、影響を受けた(レプリケートされた)レコード数とともに成功メッセージが表示されます(下図参照)。


同期先データベース(MySQL)の確認
ソースデータベース(SQL Server)でジョブを実行したら、同期先データベース(MySQL)にテーブルがレプリケートされたか確認できます。下の画像は、9件のレコードすべてが MySQL データベースにレプリケートされたことを示しています。

また、同期先テーブルに3つの新しいカラムが自動的に追加されていることがわかります。これらのカラムの定義は以下のとおりです。
| カラム名 | カラムタイプ | 説明 |
|---|---|---|
| _cdatasync_active | Boolean | カラムがアクティブかどうかを指定します。 |
| _cdatasync_start | Datetime | データレコードがアクティブになった時点の増分チェックカラムの日時値を指定します。この値は、データ更新ごとに増加するタイムスタンプに基づいて、レコードがソーステーブルで作成または変更された日時を示します。 |
| _cdatasync_end | Datetime | データレコードが非アクティブになった時点の増分チェックカラムの日時値を指定します。このカラムが null の場合は、レコードがアクティブであることを示します。 |
つまり、履歴モードを有効にすると、次のような動作になります。
- CData Sync はソースデータベーステーブル内の各データレコードのデータ変更の完全な履歴を保持します。
- CData Sync は変更バージョンを同期先データベーステーブルの対応するテーブルに記録します。
(オプション)更新のキャプチャ
- ソーステーブルのデータを更新または変更します。例えば、「Product ID」が ID1 と ID2 の「Qty Bought」カラムを更新します。

- ジョブを再度実行します。スクリーンショットに示すように、ソースデータベースでの変更(ステップ1)に従って2つのレコードが更新されます。

- MySQL データベースの同期先テーブルを確認します。この記事で説明した履歴モードに従って、変更バージョンが表示されます。

ご覧のとおり、更新された行の履歴/コピーには「_cdatasync_active = 0」が設定されており、データレコードが非アクティブになった時点(_cdatasync_end)の増分チェックカラムの日時値を指定しています。これはソーステーブルでレコードが更新された時刻も示しています。
更新されたデータ(新しい2行)には「_cdatasync_active = 1」が設定されており、「_cdatasync_start」にはデータが更新された時刻が更新されています(これは図から参照できるように、履歴データが非アクティブになった時刻と同じです)。
無料トライアルと詳細情報
CData Sync の履歴モード機能の使い方をご覧いただきました。CData Sync ページで CData Sync の詳細情報を確認し、無料トライアルをダウンロードしてください。今すぐエンタープライズデータをクラウドデータウェアハウスに統合しましょう!ご不明な点がございましたら、サポートチームまでお気軽にお問い合わせください。