1

Könnten Sie mir bitte einen Hinweis geben, gibt es eine Möglichkeit, mehrere Dokumente auf der Couchbase mit Java SDK atomar zu aktualisieren? Ich weiß, es ist möglich, die Einbettung von Dokumenten zu verwenden, was die erforderliche Sicherheit garantiert, aber leider funktioniert es nicht für mich.Atomare Aktualisierung von 2 Couchbase-Dokumenten

In meinem Fall führt die Tatsache der Dokumentaktualisierung zu der Tatsache, dass es notwendig ist, ein anderes Dokument ungültig zu machen (Spezialflag auf falsch zu setzen), und es sollte atomar ausgeführt werden.

Ich schätze jede Hilfe oder Vorschläge von Ihrer Seite. Vielen Dank!

Antwort

0

Obwohl es keine integrierte Möglichkeit gibt, atomare Änderungen an mehreren Dokumenten durchzuführen, können Sie two-phase commit verwenden, um das gleiche Ergebnis zu erzielen. Beachten Sie, dass 2PC in diesem Fall keine anderen transaktionalen Funktionen wie Isolation und Konsistenz, sondern nur Atomizität bietet - was Sie verlangen. Es gibt keine Referenz-2PC-Implementierung in Java für Couchbase, aber in der Dokumentation gibt es zwei in Ruby und PHP. Ich empfehle das Lesen der Dokumente auf providing transactional logic in Couchbase für eine detaillierte Beschreibung, wie dies zu implementieren ist. Die Portierung des Beispielcodes nach Java sollte ziemlich einfach sein.

Um eine Reihe von Änderungen in mehreren Dokumenten atomar zu implementieren, führen Sie atomare Schreibvorgänge für jedes Dokument der Reihe nach sowie ein temporäres "Status" -Dokument so durch, dass jeder Schritt im Prozess eindeutig ist. Auf diese Weise können Sie mit demselben Schritt fortfahren oder Ihre Änderungen rückgängig machen, wenn die Transaktion aus irgendeinem Grund in der Mitte unterbrochen wird.

+0

Hallo David! Vielen Dank für Ihre Antwort! Sieht interessant aus! Werde versuchen, das zu untersuchen! Ich denke, es ist die beste Anstrengung bisher ... Danke! –

0

Leider läuft dies auf eine Transaktion hinaus und Couchbase bietet keine native Transaktionsunterstützung. Der Grad der Atomizität, den Sie mit Couchbase erreichen können, liegt auf der Ebene eines einzelnen Dokuments.

Ich weiß, dass einige Benutzer von couchbase manuelle Transaktionsverwaltung in ihrer Anwendungscodeebene implementiert haben, aber das ist ein ziemlich kompliziertes Thema und es gibt keine offen verfügbare Lösung, die ich kenne.