Dokumentversionssteuerung und Konflikte - Häufig gestellte Fragen

Wenn Sie verteilte Datenbanken verwenden, werden Kopien Ihrer Daten möglicherweise an mehreren Standorten gespeichert. Es ist wichtig, diese Daten synchron zu halten. Durch Ihre Arbeitsumgebung sind Ihre Benutzer jedoch möglicherweise daran gehindert, Dokumente mit ihren Änderungen sofort zu aktualisieren oder sogar Replikationen in die Datenbank auszuführen.

Dadurch können die Kopien eines Dokuments unterschiedliche Aktualisierungen aufweisen. 'Konflikte' treten auf, weil IBM® Cloudant® for IBM Cloud® nicht ermitteln kann, welche Kopie die richtige ist.

IBM Cloudant verwendet Multi-Version Concurrency Control (MVCC) (Steuerung des gemeinsamen Zugriffs bei Vorhandensein verschiedener Versionen), um sicherzustellen, dass alle Knoten in den einzelnen Datenbankclustern jeweils nur die neueste Version eines Dokuments enthalten.

Was ist eine sukzessive erreichte Konsistenz?

IBM Cloudant-Datenbanken sind sukzessive konsistent. Dies bedeutet, dass IBM Cloudant sicherstellen muss, das keine Unterschiede (Inkonsistenzen) zwischen den Knoten vorhanden sind. Diese Inkonsistenzen können auftreten, wenn veraltete Dokumente synchronisiert werden.

Es ist wichtig, dass IBM Cloudant-Datenbanken gleichzeitigen Lese- und Schreibzugriff aufweisen. MVCC aktiviert diese Funktion. MVCC ist eine Form der optimistischen Steuerung des gemeinsamen Zugriffs , die Lese-und Schreiboperationen für IBM Cloudant -Datenbanken schneller ausführt, weil eine Datenbanksperre für Lese-und Schreiboperationen nicht erforderlich ist. Gleichzeitig ermöglicht MVCC die Synchronisation zwischen IBM Cloudant-Datenbankknoten.

Wie erkenne ich einen Konflikt?

Dies ist nicht bekannt. Es kann sein, dass Sie ein Dokument anfordern, das einen Konflikt aufweist. Dann gibt IBM Cloudant das Dokument normal zurück, als wäre kein Konflikt vorhanden. Allerdings ist die zurückgegebene Version nicht unbedingt die aktuellste Version. Stattdessen wurde es auf der Basis eines internen Algorithmus ausgewählt, der mehrere Faktoren berücksichigt. Sie dürfen nicht voraussetzen, dass es sich bei einem zurückgegebenen Dokument stets um das aktuellste handelt.

Wie kann ich ein Dokument mit einem Konflikt erkennen?

Falls ein Dokument einen Konflikt aufweist und Sie versuchen, dieses Dokument zu aktualisieren, gibt IBM Cloudant eine Antwort mit dem Code 409 zurück. Wenn Sie versuchen, ein Dokument im Offline-Modus zu aktualisieren, kann IBM Cloudant keine Überprüfung auf mögliche Konflikte ausführen und Sie erhalten keine Antwort 409.

Tritt diese Situation auf, ist es am besten, eine Überprüfung auf Dokumentkonflikte auszuführen, wenn Sie wieder online sind. Verwenden Sie die folgende 'map'-Funktion, wenn Sie Dokumentkonflikte ermitteln müssen:

function (doc) {
  if (doc._conflicts) {
    emit(null, [doc._rev].concat(doc._conflicts));
  }
}

Schreiben Sie eine Ansicht, wenn Sie Konflikte innerhalb mehrerer Dokumente in einer Datenbank finden möchten.

Was passiert, wenn ich Konflikte ignoriere?

Wenn Sie keine Überprüfung auf Konflikte ausführen oder sie nicht beheben, hat Ihre IBM Cloudant-Datenbank folgende Probleme:

  • Dokumentinkonsistenzen nehmen zu, da sich die Anzahl in Konflikt stehender Dokumente multipliziert.
  • Die Datenbankgröße nimmt zu, da in Konflikt stehende Dokumente beibehalten werden müssen, bis der Konflikt behoben ist.
  • Die Leistung lässt nach, weil IBM Cloudant für Antworten auf Anforderungen Mehrarbeit benötigt, da alle in Konflikt stehenden Dokumente geprüft werden müssen, um die 'bestmögliche' Version zu finden.

Wie kann ich Konflikte lösen?

Nachdem Sie einen Konflikt gefunden haben, führen Sie die folgenden vier Schritte aus, um den Konflikt zu beheben.

  1. Abrufen der in Konflikt stehenden Revisionen.
  2. Zusammenführen der Revisionen in Ihrer Anwendung oder Befragen des Eigners nach seinen Präferenzen.
  3. Hochladen der neuen Revision.
  4. Löschen alter Revisionen.