Frage

Gibt es eine Möglichkeit, eine Reihe von nicht-atomaren Aktionen auf MongoDB-Server (mit dem Ruby-Treiber) als einzige Atom Aktion auszuführen? Was ich brauche, ist im Grunde eine Sperre für bestimmtes Objekt / Sammlung.

War es hilfreich?

Lösung

Es gibt keinen Weg, um es in den Ruby-Treiber zu tun, weil es keine Möglichkeit gibt es in MongoDB zu tun. Mongo unterstützt nur Einzeldokument atomare Operationen. Also im Grunde ein Einsatz, aktualisiert oder löscht ein einzelnes Dokument ist atomar getan, aber keine Operationen in mehreren Dokumenten.

Das könnte Sie der Lage sein, eine Transaktion zu fälschen durch eine manuelle „roll-back“ versuchen, wenn ein Fehler auftritt. Ein Rollback in diesem Fall wäre die Änderungen mit den vorherigen Werten zu ersetzen. Aber das ist in der Hand gehen und nicht die ACID-Garantien haben, dass Sie von den meisten SQL-Server bekommen würden.

Andere Tipps

Weil Sie atomare Operationen auf einzelne Dokumente durchführen können, gibt es Möglichkeiten, zu simulieren, was Sie wollen. Lesen Sie diesen Artikel:

http://kylebanker.com/blog/2010/06 / 07 / mongodb-Inventar-Transaktionen /

Und für einige der Prinzipien, die hinter den Ideen gibt, sehen diese ein:

http://www.eaipatterns.com/docs/IEEE_Software_Design_2PC.pdf

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top