CData Software Blog

クラウド連携のCData Software の技術ブログです。

連携データの不一致をCHECKCACHEコマンドで解消:CData Sync

CData Sync V19 の最新ビルドでは CHECKCACHE コマンドという連携データの突合機能が追加されましたのでご紹介します。

CHECKCACHEコマンドとは

CheckCache コマンドは、Replicate コマンドの実行後にデータの同期先コピーを修復してくれます。REPLICATE 実行後にデータソースと同期先レコードのチェックを行い、仮に差分があった場合に同期先テーブルの内容を再度更新します。
f:id:sennanvolar44:20200308165950p:plain

内部的にはデータソースから再度データを取得して DB 側で MERGE するといった内容ですので、同期先テーブルの削除が不要となります。

CHECKCACHE コマンドの活用例

CData Sync でスケジューリングし日々データをレプリケートする使い方が多いですが、その運用の中で最終的に連携データの再チェックを行いたいというケースもあると思います。

通常の差分更新モード だと、一度ジョブを実行したらデータソース側に変更がない限り、同期先テーブルは更新されません。 ただし、この CHECKCACHE コマンドでは 1日に同一テーブルを数回レプリケートしているような場合であっても、日付を指定することで(全件でも可)、その日付から差分があったレコードのみを更新することができます。

利用手順

では、Marketo の リード情報をレプリケートするジョブの最後に CHECKCACHE を行って、最終チェックを行うシナリオを行っていきます。
連携レコード欠落を想定して、途中手動で同期テーブルからレコードを数件削除します。

まずは、差分更新モードで通常のレプリケートを行い 7112件を同期しました。
f:id:sennanvolar44:20200305144105p:plain

レプリケートされたレコードのうち、今日(3/5)にデータソース側で更新されたのは 10件です。
f:id:sennanvolar44:20200305150435p:plain

次にその 3/5 分の 10件を削除します。

delete from [Leads-Daily] where UpdatedAt >= '2020-03-05';

ここでもう一度ジョブを行ってみますが、Marketo側でデータの更新をしていないのでレプリケート件数は 0件となり、3/5 分のレコードが連携されない状態になってしまいました。
f:id:sennanvolar44:20200305151324p:plain

ここで、CHECKCACHE コマンドを行ってリカバリーしていきます。今回はMarketo 側の更新日が1週間以内のレコードに絞って行います。入力が終わったら、クエリを実行します。
f:id:sennanvolar44:20200305154502p:plain

CHECKCACHE 実行結果です。削除した 10件が再度同期先テーブルにレプリケートされました!
f:id:sennanvolar44:20200305155259p:plain

CHECKCACHE 自体は同期先に対象のテーブルさえあれば使うことができますので、CHECKCACHE 専用のジョブを別途作成し、週に1回などスケジューリングして使うことも可能です。

注意点

データソースから取得する際、差分更新モードの REPLICATE コマンドとCHECKCACHE コマンドでは以下の違いがあります。

  • REPLICATE:内部で保持している最後にレプリケートしたレコードの更新日時
  • CHECKCACHE:CHECKCACHE で指定した日時の条件に基づく

CHECKCACHE コマンドはデータベース側に一時テーブルを作成し、対象テーブルとの MERGE でリカバリーしています。(動き自体は差分更新時のREPLICATE と同じ)
f:id:sennanvolar44:20200305160808p:plain ただ大量件数を更新することになりそうな場合は、データソース側のレコードを日時や項目で絞るか、オプションで「テーブル削除」や「テーブルデータ削除」で対応した方が良いです。

また、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