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

by 宮本航太 | 2020年03月09日

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

関連コンテンツ

トライアル・お問い合わせ

30日間無償トライアルで、CData のリアルタイムデータ連携をフルにお試しいただけます。記事や製品についてのご質問があればお気軽にお問い合わせください。