初期同期(リフレッシュ)をもっと柔軟にリフレッシュフィルタ機能[DBMoto]


DBMotoでは初回のレプリケーション時や任意のタイミングで全件転送を行うリフレッシュを実施可能です。この全件転送の主な流れとしては、まず、ターゲットテーブルをきれいにするため、ターゲットのテーブルデータを全て削除(TruncateやDeleteなど)し、その後ソーステーブルのデータを全て選択(Select)、ターゲットテーブルに全件挿入(Bulk InsertまたはシングルInsert)するというものです。
https://www.climb.co.jp/soft/dbmoto/outline/mode.html#mode01

これにより、完全にソース/ターゲットテーブルのデータを一致させることができますが、テーブルのデータ量によって長時間かかるケースがあります。

これを避けるために、本当に同期が必要なデータのみをリフレッシュしたい、また、障害等により、データの不一致が発生し、その不一致のデータ範囲が特定できている場合などに全データをリフレッシュで同期させるのではなく、特定範囲のみのデータをリフレッシュで同期させたいという要望をいただくケースがございます。

このような要望を解決する機能がリフレッシュフィルタ機能です。設定としては下記のようにソースリフレッシュフィルタとターゲットリフレッシュフィルタが存在します。

  • ソースリフレッシュフィルタ:②で取得するデータをWhere句での条件指定と同様に制限できます。
  • ターゲットリフレッシュフィルタ:①で削除するデータをWhere句での条件指定と同様に制限できます。

初期リフレッシュで一部データのみを同期させたいような場合には、ソースリフレッシュフィルタのみで問題ありません(ターゲットテーブルにデータが存在しない状態)。既にレプリケーション済みで改めてリフレッシュを行う場合には③の挿入で重複しないようにソース/ターゲット両方で同様の条件を指定する必要があります。このようにリフレッシュフィルタを用いることでより柔軟にDBMotoをご利用いただけます。

関連したトピックス

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください