Konflikte bei Datensatzänderungen lösen: Zwei Anwendungen ändern denselben Datensatz unterschiedlich → gemeinsamer Ausgangsstand prüfen.; Feste Zuständigkeit: Eine Anwendung hat Vorrang beim Feld; andere Änderung bleibt sichtbar.; Bei Konflikten: Bedingte Änderungen mit ETag oder Prüfung durch zuständige Person durchführen.
Bild: Arbeitsfluss

Fehlerbehandlung

Teil von Daten zwischen Anwendungen synchronisieren

Widersprüchliche Änderungen auflösen

Erkennen Sie echte Änderungskonflikte und wählen Sie Feldzuständigkeit, Zusammenführung oder eine dokumentierte Entscheidung.

Ändern zwei Anwendungen denselben Datensatz unterschiedlich, vergleichen Sie beide aktuellen Werte mit dem zuletzt gemeinsam bestätigten Stand. Entscheiden Sie dann je Feld: Eine festgelegte Quelle hat Vorrang, unabhängige Änderungen werden zusammengeführt oder jemand prüft den Fall. Eine Seite sollte die andere nicht unbemerkt überschreiben.

Einen echten Konflikt erkennen

Eine Abweichung allein ist noch kein Konflikt. Hat Anwendung A die Telefonnummer geändert und ist B seit dem letzten Abgleich unverändert, lässt sich die Änderung nach der vereinbarten Richtungsregel übertragen. Haben beide Seiten die Nummer unterschiedlich geändert, konkurrieren zwei Änderungen.

Dafür benötigen Sie die Datensatzzuordnung, einen gemeinsamen Ausgangsstand und die aktuellen Werte beider Seiten. Fehlt der Ausgangsstand, lässt sich nicht zuverlässig erkennen, wer seitdem was geändert hat. Ein neuerer Zeitstempel allein belegt nicht, welcher Wert fachlich richtig ist.

Je Feld entscheiden

Feste Zuständigkeit: Eine Anwendung führt das Feld verbindlich. Die abweichende Änderung der anderen Seite bleibt als Ausnahme sichtbar, statt still überschrieben zu werden.

Zusammenführen: Verschiedene geänderte Felder lassen sich in einem neuen Stand zusammenführen, sofern sie unabhängig sind. Ein Status und das zugehörige Abschlussdatum müssen beispielsweise gemeinsam einen gültigen Zustand ergeben.

Manuell entscheiden: Bei unterschiedlichen Änderungen desselben Felds zeigen Sie den bisherigen und beide neuen Werte. Die zuständige Person bestimmt den gültigen Wert; Entscheidung und neuer gemeinsamer Stand werden festgehalten.

Ausgangslage seit dem letzten gemeinsamen Stand / Nächster Schritt

Nur eine Seite änderte ein freigegebenes Feld.
Nach Richtungsregel übernehmen.
Beide Seiten änderten unabhängige Felder.
Zusammenführung prüfen.
Beide Seiten änderten dasselbe Feld unterschiedlich.
Zuständigkeit anwenden oder den Fall prüfen lassen.
Eine Seite löschte, die andere änderte den Datensatz.
Übertragung anhalten und Löschabsicht klären.

Gegen neue Änderungen absichern

Während ein Konflikt geprüft wird, kann sich der Zielwert erneut ändern. Unterstützt die Ziel-API bedingte Änderungen, schreiben Sie nur gegen die zuvor gelesene Version.

Google Calendar beschreibt dafür If-Match mit einem ETag. Bei einem nicht mehr passenden ETag antwortet die API mit 412; der Wert muss dann erneut gelesen und bewertet werden. Andere Schnittstellen können andere oder keine Versionsbedingungen anbieten.

CouchDB kann nach der Replikation mehrere konfliktbehaftete Versionen desselben Dokuments auf beiden Seiten behalten. Beim Lesen liefert CouchDB standardmäßig nur eine deterministisch gewählte Version zurück.

Schließen Sie den Fall erst, wenn der entschiedene Wert erfolgreich geschrieben und der neue gemeinsame Stand bestätigt ist. Scheitert eine bedingte Änderung, prüfen Sie den Fall mit den aktuellen Werten erneut.

Vorteile und Risiken bedingter Änderungen mit Versionen

  • VorteileVermeidet unbeabsichtigte Überschreibungen durch parallele Änderungen. Stellt sicher, dass der aktuelle Stand vor dem Schreiben überprüft wird.
  • RisikenBei fehlender Unterstützung der Ziel-API kann die Sicherheit fehlen. Fehlgeschlagene Änderungen erfordern erneute Prüfung mit aktuellen Daten.

Mehr aus Fehlerbehandlung