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