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.