シンクロナイゼーションにおけるコンフリクト回避について【リアルタイムレプリケーションツールDBMoto】


■2015/05/28記事改訂

DBMoto でシンクロナイゼーション(Synchronization)か、双方向のミラーリングを設定しているとき、レプリケーションに関連する両テーブルに変更があり、その変更はそれぞれのテーブルで違っていると仮定してください。

シンクロナイゼーションのゴールは、テーブルAからテーブルBへの変更と、テーブルBからテーブルAへの変更を適応することで、互いに両テーブルを最新に保つことです。

レプリケーション・タイプにシンクロナイゼーションを選択した時は、レプリケーションに関連する両サイドのテーブルの同じレコードで同時に変更が起こる場合にどのように処理するか、設定する必要があります。

例えば同一のレプリケーションインターバル内で、ソースのSQL Server の製品レコードの価格フィールドがアップデートされ、またターゲットのDB2/400で対応するレコードの同じフィールドもアップデートされていた時に、どちらのアップデートを優先するかを決める必要があります。

Replication かMultiple Replications ウィザードを使用してユーザのレプリケーションを定義した後、レプリケーションプロパティ(Replication Properties)ダイアログで優先(Preferences) タブに移行し、どのようにコンフリクトを処理するかを指定します。:

  • SourceServerWins:デフォルト設定。ソース接続に指定されたテーブルに対する変更が、ターゲット接続に指定されたテーブルにも適応されます。ターゲット接続テーブル上の変更はすべて書き換えられます。
  • TargetServerWins:ターゲット接続に指定されたテーブルに対する変更が、ソース接続で定義されたテーブルにも適応されます。ソース接続テーブル上の変更はすべて書き換えられます。
  • FirstComeWins:ソースとターゲットとして指定されたテーブルの2 つの変更のタイムスタンプが準備され、早い方の変更が両テーブルに適応されます。
  • LastComeWins:ソースとターゲットとして指定されたテーブルの2 つの変更のタイムスタンプが準備され、遅い方の変更が両テーブルに適応されます。
  • Use Script:このオプションはReplication_onConflict ファンクションに記述することでイベントを生成することができます。スクリプト・エディタは「一般」のスクリプトボタンからアクセスできます。VB .NETまたはC# を使用してユーザが希望する両テーブルからの値を処理するためのファンクションを書くことができます。

※設定画面
conflict_resolver_option_v8

関連したトピックス

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

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