クライアントが DB2 Everyplace 同期サーバーに変更内容をサブミットする時点で、 他のクライアントまたはアプリケーションがそれ以前にソース表を変更していた場合、 またはソース表を同時に変更した場合などに、矛盾が発生することがあります。同期サーバーは、レプリケーション・サブスクリプションにおける各表の各記録の バージョンをトラッキングします。各クライアントは、各クライアントの各表との最後の同期 の各レコードのバージョンを維持するために同じようにトラックされます。 この情報によって、同期サーバーは、クライアントが行の古いバージョンのデータ に基づいてその行を更新しようとしているかどうかを判別することができます。 クライアントが行の古いバージョンのデータに基づいてその行の更新を試みた場合は、 更新はリジェクトされます。
矛盾の解決は、図 7 に示すように、 データが中間層システム上のミラー表にステージされるときに行われます。この 解決は、クライアントが同期セッションを実行した後のレプリケーション・サイクルで 行われます。このため、クライアントの更新が原因で発生した矛盾は、 その同期中に応答メッセージがそのクライアントに戻されるまで検出され ません。 レプリケーションで矛盾が発見されると、次の同期セッションで、 クライアントの変更内容がリジェクトされたことがクライアントに通知されます。 クライアントによる変更が古いレコードに 基づいたものである場合は、 そのレコードの正しいバージョンが元の同期要求で 戻されます。
更新がリジェクトされたクライアントは、リジェクトされたレコードと、そのレコードの訂正バージョンの両方を受け取ります。 リジェクトされたレコードは、クライアントのログに記録されるか、 またはクライアント API によりアプリケーションに提供されます。 そのレコードの訂正バージョンが、 クライアントの DB2 Everyplace データベースにある元の (リジェクトされた) レコードを置き換えます。
DataPropagator が変更されたデータを中間層からソース・データベースにアプライする場合は、 別のタイプの矛盾が発生します。これらの矛盾の管理および解決の方法の詳細に ついては、「DB2 Universal Database レプリケーションのガイドおよびリファレンス 」および「DB2 Universal Database 管理ガイド 」を参照してください。
関連した概念
関連したタスク