Beispiel für die Lösung von Mergekonflikten auf der Basis des Abonnementtyps und der zugewiesenen Prioritäten

Das folgende Beispiel, in dem eine Reihe von Aktualisierungen einer Zeile über mehrere Mergesynchronisierungen hinweg beschrieben wird, zeigt, wie Konflikte gelöst werden. Die Grundlage für die Konfliktlösung bilden dabei die den Konflikten zugewiesenen Prioritätswerte und der Typ des Abonnements (Server- oder Clientabonnement).

Der folgenden Tabelle können Sie die anfänglichen Prioritätswerte für vier Standorte in einer einfachen Mergereplikationstopologie (ein Verleger, zwei Abonnenten mit Serverabonnements und ein Abonnent mit einem Clientabonnement) entnehmen.

Standort

Typ

Prioritätswert

A

Publisher

100.00

B

Server Subscription

75,00 (zugewiesen)

C

Server Subscription

50,00 (zugewiesen)

D

Client Subscription

0,00 (Standard)

Phase 1: Anfangswerte

Zuerst erstellt Standort A (der Verleger) Version 1 der Zeile mit value='Nebraska', die während der nächsten Mergesynchronisierung auf die Standorte B, C und D repliziert wird. Nach der Synchronisierung lauten die Werte für die Zeile wie folgt:

Standort

Prioritätswert

Zeilenwert

A (Verleger)

100.00

Nebraska

B (Serverabonnement)

75.00

Nebraska

C (Serverabonnement)

50.00

Nebraska

D (Clientabonnement)

0.00

Nebraska

Phase 2: Verleger und Abonnent mit Serverabonnement aktualisieren beide die Zeile

Standort A ändert den Zeilenwert in Texas, und Standort B ändert den Zeilenwert in New Jersey. Bei der nächsten Mergesynchronisierung gibt es einen Konflikt zwischen den Standorten A und B. Standort A geht aus dem Konflikt als Gewinner hervor. Der Wert des Konfliktgewinners (Standort A) wird an die Standorte B, C und D weitergegeben.

Standort

Prioritätswert

Zeilenwert

A (Verleger)

100.00

Texas

B (Serverabonnement)

75.00

Texas

C (Serverabonnement)

50.00

Texas

D (Clientabonnement)

0.00

Texas

Phase 3: Mehrere Änderungen an derselben Zeile

Standort C aktualisiert die Zeile (ändert sie in North Carolina) und synchronisiert mit dem Verleger. Dabei entsteht kein Konflikt, da C die letzte Aktualisierung von A bereits erfolgreich zusammengeführt hat (wobei der Zeilenwert 'Texas' erfolgreich zusammengeführt wurde). Standort B aktualisiert dann die Zeile (ändert sie in Idaho).

Standort

Prioritätswert

Zeilenwert

A (Verleger)

100.00

North Carolina

B (Serverabonnement)

75.00

Idaho

C (Serverabonnement)

50.00

North Carolina

D (Clientabonnement)

0.00

Texas

Wenn Standort B mit dem Verleger synchronisiert, kommt es zu einem Aktualisierungskonflikt. Da sowohl B und C Serverabonnements sind und die Priorität von B höher als die von C ist, gewinnt Standort B den Konflikt. Nach dem Mergevorgang der anderen beiden Standorte wird der Wert von B an die anderen Abonnenten weitergegeben.

Standort

Prioritätswert

Zeilenwert

A (Verleger)

100.00

Idaho

B (Serverabonnement)

75.00

Idaho

C (Serverabonnement)

50.00

Idaho

D (Clientabonnement)

0.00

Idaho

Phase 4: Sowohl der Abonnent mit dem Serverabonnement als auch der Abonnent mit dem Clientabonnement aktualisieren die Zeile

Standort D aktualisiert die Zeile (ändert sie in New Mexico) und synchronisiert mit dem Verleger. Standort B aktualisiert dann die Zeile (ändert sie in California).

Standort

Prioritätswert

Zeilenwert

A (Verleger)

100.00

New Mexico

B (Serverabonnement)

75.00

California

C (Serverabonnement)

50.00

Idaho

D (Clientabonnement)

0.00

New Mexico

Wenn Standort B mit dem Verleger synchronisiert, kommt es zu einem Aktualisierungskonflikt. Da D ein Clientabonnement hat, nimmt der Standort bei der Synchronisierung im Gegensatz zum vorherigen Beispiel den Prioritätswert des Verlegers (Standort A) an. Da die Priorität von A höher als die von B ist, verliert B den Konflikt; der ursprünglich in D eingegebene Wert gewinnt. (Wenn der Abonnent B mit A synchronisiert hätte, bevor Abonnent D zum Zuge gekommen ist, hätte Standort B den Konflikt gewonnen.) Standort D gewinnt den Konflikt nur dann, wenn der Verleger seit der letzten Synchronisierung der Version der Zeile, die am Standort D aktualisiert wurde, keine Änderung vorgenommen hat und keine andere Änderung empfangen hat. Wenn ein Abonnent mit einem Serverabonnement oder ein anderer Abonnent mit einem Clientabonnement zuerst synchronisiert, gilt die Regel, dass die höchste Priorität oder die zuerst auf dem Verleger eingegangene Änderung gewinnt.

Die folgende Tabelle zeigt die endgültigen Werte aller Standorte nach der Synchronisierung:

Standort

Prioritätswert

Zeilenwert

A (Verleger)

100.00

New Mexico

B (Serverabonnement)

75.00

New Mexico

C (Serverabonnement)

50.00

New Mexico

D (Clientabonnement)

0.00

New Mexico

Wenn Server- und Clientabonnements auf derselben Ebene in der Topologie gemischt werden, wird das Ergebnis von Konflikten durch die Reihenfolge der Synchronisierung und den Prioritätswert bestimmt. Die letzte Gruppe von Aktualisierungen illustriert, weshalb sorgfältig vorgegangen werden sollte. Obwohl der Abonnent den niedrigsten Prioritätswert der drei Abonnenten aufweist, gewinnt er den Konflikt, da er zuerst mit dem Verleger synchronisiert (und dabei den Prioritätswert 100,00 annimmt). Wenn Standort C (Serverabonnement mit einem Prioritätswert von 50,00) anstelle von Standort D New Mexico eingegeben hätte, hätte Standort B (Serverabonnement mit einem Prioritätswert von 75,00) den Konflikt gewonnen, und das Ergebnis wäre California gewesen.