Question

Y at-il un moyen d'effectuer une série d'actions non-atomiques sur le serveur MongoDB (en utilisant le pilote Ruby) comme une seule action atomique? Ce que j'ai besoin est essentiellement un verrou sur certains objets / collection.

Était-ce utile?

La solution

Il n'y a pas moyen de le faire dans le pilote Ruby parce qu'il n'y a aucun moyen de le faire dans MongoDB. Mongo ne supporte que les opérations atomiques unique documents. Donc, fondamentalement, un insert, mise à jour ou supprimer d'un seul document est fait atomiquement, mais pas les opérations sur plusieurs documents.

Vous pourriez être en mesure de simuler une transaction en essayant un « roll-back » manuel si une erreur se produit. Un roll-back dans ce cas serait de remplacer toutes les modifications avec les valeurs précédentes. Mais qui va au manuel et ne pas avoir les garanties ACID que vous obtiendrez de la plupart des serveurs SQL.

Autres conseils

Parce que vous pouvez effectuer des opérations atomiques sur un seul document, il existe des moyens pour simuler ce que vous voulez. Voir cet article:

http://kylebanker.com/blog/2010/06 / 07 / MongoDB-inventaire transactions /

Et pour quelques-uns des principes derrière les idées là-bas, voir celui-ci:

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top