Ruby MongoDB驱动程序中的“原子部分”?

时间:2010-11-17 13:56:32

标签: ruby atomicity mongodb rowlocking

有没有办法在MongoDB服务器上执行一组非原子操作(使用Ruby驱动程序)作为单个原子操作?我需要的是基本上锁定某些对象/集合。

2 个答案:

答案 0 :(得分:1)

因为您可以对单个文档执行原子操作,所以有一些方法可以模拟您想要的内容。看到这篇文章:

http://kylebanker.com/blog/2010/06/07/mongodb-inventory-transactions/

对于那些想法背后的一些原则,请看这个:

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

答案 1 :(得分:0)

没有办法在Ruby驱动程序中执行此操作,因为在MongoDB中无法执行此操作。 Mongo仅支持单文档原子操作。因此,基本上单个文档的插入,更新或删除是以原子方式完成的,而不是跨多个文档的操作。

如果发生错误,您可以通过尝试手动“回滚”来假冒交易。在这种情况下,回滚将用以前的值替换任何更改。但这是手动的,没有ACID保证你可以从大多数SQL服务器获得。