Pregunta

¿Hay una manera de realizar un conjunto de acciones no-atómicas en el servidor MongoDB (mediante el controlador de Rubí) como una acción atómica sola? Lo que necesito es básicamente un bloqueo en cierto objeto / colección.

¿Fue útil?

Solución

No hay manera de hacerlo en el controlador de Rubí, porque no hay manera de hacerlo en MongoDB. Mongo sólo es compatible con las operaciones atómicas de un único documento. Así que, básicamente, una inserción, actualización o eliminación de un documento único se realiza de forma atómica, pero no operaciones en varios documentos.

podría ser capaz de falsificar una transacción al intentar un manual de "retroceso" si se produce un error. Un retroceso en este caso sería la de sustituir cualquier cambio con los valores anteriores. Pero eso va a manual y no tener las garantías ACID que se podrían obtener de la mayoría de los servidores SQL.

Otros consejos

Debido a que se pueden realizar operaciones atómicas en un único documento, hay maneras para simular lo que quiere. Ver este artículo:

http://kylebanker.com/blog/2010/06 / 07 / mongodb-inventario-transacciones /

Y para algunos de los principios detrás de las ideas allí, consulte la siguiente:

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top