Database Reference
In-Depth Information
Konlikte aulösen
Da unser Dokument in den beiden Datenbanken jetzt einen Konflikt darstellt,
wechseln wir wieder auf die Replicator-Seite und stoßen eine weitere Repli-
kation an. Wenn Sie nun einen Fehler erwarten, werden Sie schockiert fest-
stellen, dass die Operation erfolgreich durchgeführt wird. Wie geht CouchDB
also mit diesem Widerspruch um?
Wie sich zeigt, wählt CouchDB einfach einen aus und deklariert ihn zum
Sieger. Mit Hilfe eines deterministischen Algorithmus wählen alle CouchDB-
Knoten den gleichen Sieger aus, wenn ein Konflikt erkannt wird. Doch da-
mit ist die Geschichte noch nicht vorbei. CouchDB speichert auch die nicht
gewählten „Verlierer“-Dokumente, so dass sich eine Client-Anwendung zu
einem späteren Zeitpunkt die Situation ansehen und auflösen kann.
Um herauszufinden, welche Version unseres Dokuments während der letzten
Replikation gewonnen hat, können wir es mit einem normalen GET -Request
abrufen. Durch Anhängen des URL-Parameters conflicts=true liefert
CouchDB auch Informationen zu allen in Konflikt stehenden Revisionen zu-
rück.
$ curl http://localhost:5984/music-repl/theconflicts?conflicts=true
{
" _ id":"theconflicts",
" _ rev":"2-cab47bf4444a20d6a2d2204330fdce2a",
"name":"The Conflicts",
"albums":["Conflicting Opinions"],
" _ conflicts":[
"2-0c969fbfa76eb7fcdf6412ef219fcac5"
]
}
Wie wir sehen, hat also das zweite Update gewonnen. Beachten Sie das
_ conflicts -Feld in der Response. Es enthält eine Liste anderer Revisionen,
die im Konflikt mit der gewählten Revision stehen. Indem wir einen rev -
Parameter im GET -Request angeben, können wir diese Revisionen abrufen
und entscheiden, was wir mit ihnen anfangen wollen.
$ curl http://localhost:5984/music-repl/theconflicts?rev=2-0c969f...
{
" _ id":"theconflicts",
" _ rev":"2-0c969fbfa76eb7fcdf6412ef219fcac5",
"name":"The Conflicts",
"albums":["Conflicts of Interest"]
}
Was wir hier mitnehmen, ist die Tatsache, dass CouchDB nicht versucht,
miteinander im Konflikt stehende Änderungen irgendwie intelligent zu verei-
Search WWH ::




Custom Search