マージ レプリケーションの概要
一般にマージ レプリケーションは、トランザクション レプリケーションと同様に、パブリケーションのデータベース オブジェクトとデータのスナップショットで開始されます。その後にパブリッシャとサブスクライバで行われたデータおよびスキーマの変更は、トリガを使って追跡されます。サブスクライバは、ネットワークに接続されたときにパブリッシャと同期して、前回の同期以降にパブリッシャとサブスクライバの間で変更されたすべての行を交換します。
マージ レプリケーションは、一般にサーバー対クライアント環境で使用されます。マージ レプリケーションは、以下の状況に適しています。
- 複数のサブスクライバで別々の時刻に同じデータを更新し、それらの変更をパブリッシャや他のサブスクライバに反映する場合がある。
- サブスクライバで、データを受信し、オフラインで変更を行い、後でパブリッシャおよび他のサブスクライバと変更を同期する必要がある。
- 各サブスクライバが、データの別々の部分を必要とする。
- 競合が発生する可能性があり、発生した場合にはそれを検出して解決できる必要がある。
- アプリケーションで、中間状態のデータにアクセスするのではなく、最終的な変更結果が必要である。たとえば、サブスクライバでパブリッシャと同期する前に行が 5 回変更された場合、最終的な変更結果 (つまり、5 回目の値) を反映させるために、パブリッシャでは 1 回だけ変更されます。
マージ レプリケーションでは、さまざまなサイトが自律的に動作し、更新内容が後で 1 つにマージされます。更新は複数のノードで発生するため、パブリッシャおよび複数のサブスクライバで同じデータが更新されている場合があります。したがって、更新をマージする際に競合が発生する可能性があるため、マージ レプリケーションには競合を処理するいくつかの方法が用意されています。
マージ レプリケーションの実装については、「レプリケーションの実装」を参照してください。
マージ レプリケーションを含む一般的なシナリオについては、「サーバーとクライアント間のデータのレプリケート」を参照してください。