MongoDB对我来说是一个很棒的数据库。但是,有些情况下我确实需要原子多文档事务。例如,在账户之间转移(如金钱或信誉),这需要完全成功或完全失败。
我想知道是否可以通过实现MultiVersion并发控制模式的库与MongoDB进行交互。
表演有多糟糕? 使用混合方法是否可行且有利可图,仅在必要时使用“mongo-mvcc”库,而在仅处理单个文档时使用传统的数据库连接还是会破坏mvcc的内容?
答案 0 :(得分:7)
最简单的方法是使用锁(两阶段提交),尽管在某些情况下这不是很有效。对于更高的并发性,可以在Mongo的顶部实现某种MVCC。本文提供了一个很好的描述:
http://highlyscalable.wordpress.com/2012/01/07/mvcc-transactions-key-value/
答案 1 :(得分:6)
Money事务可以通过两阶段提交来实现:http://www.mongodb.org/display/DOCS/two-phase+commit
答案 2 :(得分:5)
现在GitHub上有一个关于MongoDB MVCC的实现:
答案 3 :(得分:2)
MongoDB并非真正用于处理事务。在http://kylebanker.com/blog/2010/04/30/mongodb-and-ecommerce/
上可以很好地讨论如何实现这一点答案 4 :(得分:0)
当你需要真正的TRANSACTIONS时,你使用RDBMS来支持它们:) NoSQL更快,更具可扩展性,主要是因为它们不支持事务。
如果你需要两者,或许最好让事务层支持事务,NoSQL层用于其他目的?在某些情况下,使用MongoDB和PostgreSQL
创建混合系统应该不难