レプリケートされた文が正しい順序で適用されるようにするため、保証されたメッセージ配信システムは、パブリッシャ・データベースとサブスクライバ・データベースのトランザクション・ログ・オフセットを使用します。トランザクション・ログにある各 COMMIT は、十分に定義されたオフセットでマーク付けされています。トランザクションの順序は、トランザクション・ログ・オフセット値を比較して決定されます。
各メッセージには、次のトランザクション・ログ・オフセットが含まれています。
前のメッセージの最後の COMMIT のトランザクション・ログ・オフセットトランザクションがいくつかのメッセージにわたっている場合は、メッセージを正しい順序で並べるためのシーケンス番号がトランザクションにあります。正しい順序でのオペレーション適用の確保を参照してください。
メッセージの最後の COMMIT のトランザクション・ログ・オフセット。
メッセージを送信すると、前回のメッセージの最後の COMMIT のオフセットによって、メッセージが順に並べられます。トランザクションがいくつかのメッセージにわたっている場合は、メッセージを正しい順序で並べるために、トランザクション内のシーケンス番号が使用されます。
SYSREMOTEUSER システム・テーブルの log_sent カラムには、サブスクライバに送信された最新メッセージのローカル・トランザクション・ログのオフセットが入ります。
次の手順では、メッセージが送信されたときに SYSREMOTEUSER システム・テーブルがどのように更新されるかを示します。
パブリッシャの Message Agent (dbremote) はサブスクライバにメッセージを送信すると、送信したメッセージの最後の COMMIT のトランザクション・ログ・オフセット値を log_sent 値に設定します。
たとえば、パブリッシャが次のメッセージを user1 に送信します。
「
(0-0000923200-0000923357-「0」)」
|
パブリッシャの SYSREMOTEUSER システム・テーブル内で、パブリッシャは log_sent 値に user1 の 0000923357 を設定します。
メッセージが受信されてサブスクライバ・データベースに適用されると、パブリッシャには確認メッセージが送信されます。確認メッセージには、サブスクライバ・データベースによって適用された最新のトランザクション・ログ・オフセットが含まれています。
たとえば、確認メッセージでは、user1 がトランザクション・ログ・オフセット 0000923357 以前のすべてのトランザクションを適用したことが確認されます。
パブリッシャの Message Agent (dbremote) は確認メッセージを受信すると、SYSREMOTEUSER システム・テーブルの confirm_sent カラムにユーザの確認メッセージのオフセット値を設定します。
たとえば、パブリッシャは、パブリッシャの SYSREMOTEUSER システム・テーブルの confirm_sent カラムに user1 の 0000923357 を設定します。
log_sent と confirm_sent の両方の値には、パブリッシャのトランザクション・ログのトランザクション・ログ・オフセットが含まれています。confirm_sent 値は、log_sent 値より後のオフセットにはなりません。
次の手順では、メッセージが受信されたときに SYSREMOTEUSER システム・テーブルがどのように更新されるかを示します。
サブスクライバ・データベースの Message Agent (dbremote) がレプリケーションのアップデートを受信して適用すると、そのメッセージの最後の COMMIT のオフセットによって SYSREMOTEUSER システム・テーブルの log_received カラムが更新されます。
たとえば、サブスクライバが次のメッセージを受信して適用すると、SYSREMOTEUSER システム・テーブルの log_received 値に 0000923357 が設定されます。
「
(0-0000923200-0000923357-「0」)」
|
すべてのサブスクライバ・データベースの log_received カラムには、パブリッシャ・データベースのトランザクション・ログでの、トランザクション・ログ・オフセットが入ります。
オペレーションが受信され適用されると、サブスクライバの Message Agent (dbremote) は、その SYSREMOTEUSER システム・テーブルの confirm_received 値を設定し、パブリッシャ・データベースに確認メッセージを送信します。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |