CData Sync V19 の最新ビルドでは CHECKCACHE コマンドという連携データの突合機能が追加されましたのでご紹介します。
CHECKCACHEコマンドとは
CheckCache コマンドは、Replicate コマンドの実行後にデータの同期先コピーを修復してくれます。REPLICATE 実行後にデータソースと同期先レコードのチェックを行い、仮に差分があった場合に同期先テーブルの内容を再度更新します。
内部的にはデータソースから再度データを取得して DB 側で MERGE するといった内容ですので、同期先テーブルの削除が不要となります。
CHECKCACHE コマンドの活用例
CData Sync でスケジューリングし日々データをレプリケートする使い方が多いですが、その運用の中で最終的に連携データの再チェックを行いたいというケースもあると思います。
通常の差分更新モード だと、一度ジョブを実行したらデータソース側に変更がない限り、同期先テーブルは更新されません。
ただし、この CHECKCACHE コマンドでは 1日に同一テーブルを数回レプリケートしているような場合であっても、日付を指定することで(全件でも可)、その日付から差分があったレコードのみを更新することができます。
利用手順
では、Marketo の リード情報をレプリケートするジョブの最後に CHECKCACHE を行って、最終チェックを行うシナリオを行っていきます。
連携レコード欠落を想定して、途中手動で同期テーブルからレコードを数件削除します。
まずは、差分更新モードで通常のレプリケートを行い 7112件を同期しました。
レプリケートされたレコードのうち、今日(3/5)にデータソース側で更新されたのは 10件です。
次にその 3/5 分の 10件を削除します。
delete from [Leads-Daily] where UpdatedAt >= '2020-03-05';
ここでもう一度ジョブを行ってみますが、Marketo側でデータの更新をしていないのでレプリケート件数は 0件となり、3/5 分のレコードが連携されない状態になってしまいました。
ここで、CHECKCACHE コマンドを行ってリカバリーしていきます。今回はMarketo 側の更新日が1週間以内のレコードに絞って行います。入力が終わったら、クエリを実行します。
CHECKCACHE 実行結果です。削除した 10件が再度同期先テーブルにレプリケートされました!
CHECKCACHE 自体は同期先に対象のテーブルさえあれば使うことができますので、CHECKCACHE 専用のジョブを別途作成し、週に1回などスケジューリングして使うことも可能です。
注意点
データソースから取得する際、差分更新モードの REPLICATE コマンドとCHECKCACHE コマンドでは以下の違いがあります。
- REPLICATE:内部で保持している最後にレプリケートしたレコードの更新日時
- CHECKCACHE:CHECKCACHE で指定した日時の条件に基づく
CHECKCACHE コマンドはデータベース側に一時テーブルを作成し、対象テーブルとの MERGE でリカバリーしています。(動き自体は差分更新時のREPLICATE と同じ)
ただ大量件数を更新することになりそうな場合は、データソース側のレコードを日時や項目で絞るか、オプションで「テーブル削除」や「テーブルデータ削除」で対応した方が良いです。
また、CHECKCACHE のジョブだけ別ジョブとして定義することも可能です。通常のレプリケートを平日に行い、CHECKCACHE ジョブを土曜に行いたい場合は、CHECKCACHE のみのジョブを作成し、スケジュールで土曜実行を設定で大丈夫です。
日付や条件を指定する方法
日付を指定した場合
CHECKCACHE REP_Table AGAINST Table WITH REPAIR START '2018-01-01' END '2019-01-01'
カラムとを日付を指定した場合
CHECKCACHE REP_Table AGAINST (SELECT Id, Name, DateModified FROM Table) WITH REPAIR START '2018-01-01' END '2019-01-01'
さいごに
CData Sync は 30日間の無料評価版がございます。データソースも数多く対応しておりますので、この進化した CData Sync を是非お試しください。
www.cdata.com
関連コンテンツ