質問
「HUBから読み込まれ、スポークへの書き込み」の時にCustom SQL qualifier を設定し、クローンではないデータの入ったファイルで初回同期を行ったとき、フィルタ条件に合致しないレコードがSpokeに残りました。
答え
カスタムSQLによるフィルタはHUB側のレコードにのみ適用されます。
「Hubから読み、Spokeに書き込む」の初回同期の動き
以下、具体例にて解説します。
前提
- 初回同期前の状態で、SpokeにHUBと全く同じレコードが存在している
- Custom SQL Qualifierとして以下が設定されている
where 店舗コード = {MIRRORSYNC_USERTOKEN}
初回同期
HUBとSpokeに全く同じレコードがある状態で 店舗コード = "A01" の店舗で、初回の同期を行うと、HUBでは 店舗コード "A01" を絞り込んだ結果がSPOKEに書き込まれます。この時Spoke側では何もフィルタがされず、条件に一致しないレコードに対しての削除は発生しません。MirrorSyncはこの同期のたTimeStampを記憶し、次回以降はこのタイムスタンプを基準に変更のあったレコードを更新対象にします。
2回目以降の同期
HUBで以下のレコードが絞り込まれます。
店舗コード "A01" かつ前回の同期タイムスタンプよりも更新タイムスタンプが新しいレコード店舗コード "A01" かつ前回の同期タイムスタンプよりも更新タイムスタンプが新しいレコード
続いて、Spokeの全レコードに対してHUBで絞り込まれたレコードによる書き込みが行われます。HUBで新規作成されたり更新されたレコードはSpokeに書き込まれます。このときHUBの更新対象に含まれず、Spokeに存在するレコードは「前回の同期のあとHUBで削除されたレコード」という扱いなり、Spokeで削除されます。
考察
特別な場合を除き、Spokeで初回同期に使用するファイルはデータのないコピー(クローン)を使用されることをお勧めします。データの入ったファイル同士で初回同期を行う場合上記のように本来不要なデータがSpoke側に残る場合がある上、MirrorSyncの内部データベースの作成にもかなり時間がかかります。
コメント
0件のコメント
サインインしてコメントを残してください。