在.NET中使用MongoDB和NoRM。MongoDB交易?
让我困惑的事 - 没有交易
(不能只是告诉MongoConnection.Begin/EndTransaction
或类似的东西)。
我想在工作失败的情况下使用Unit of work模式和回滚更改。
如何通过ITransaction来丰富我的存储库还有一个简洁的方法吗?
在.NET中使用MongoDB和NoRM。MongoDB交易?
让我困惑的事 - 没有交易
(不能只是告诉MongoConnection.Begin/EndTransaction
或类似的东西)。
我想在工作失败的情况下使用Unit of work模式和回滚更改。
如何通过ITransaction来丰富我的存储库还有一个简洁的方法吗?
MongoDB不支持复杂的多文档事务。如果这是你绝对需要的东西,那可能不适合你。
但是,在大多数情况下,我们发现复杂的交易不是必需的。 MongoDB中的所有操作在单个文档中都是原子的,我们支持很好的update modifiers,这使得很多操作需要易于实现(和快速)的事务。
备案记录。
虽然MongoDB中没有事务支持,它支持atomicity on a single document:
MongoDB的确实有一个单一的文件中的原子操作的支持。鉴于嵌套文档提供的可能性,此功能为大量的用例提供支持。
另外,关于“Isolate Sequence of Operations”的手动输入可能很有趣。例如:
但是,您可以隔离使用隔离操作符影响多个文档的单个写入操作。
您可以改用MongoDb TokuMX。
http://www.tokutek.com/products/tokumx-for-mongodb/
TokuMXTM是一个开放源码,MongoDB的高性能分布,相比于基本的MongoDB已显着提高的性能和操作效率。 TokuMX是MongoDB的直接替代产品,性能提升了20倍,数据库大小减少了90%,并支持使用MVCC的ACID事务。
从v4.0开始(2018年夏季即将到来),MongoDB将支持多文档ACID事务。通过快照隔离,事务将提供全球一致的数据视图,并执行全有或全无执行来维护数据完整性。有关更多信息和测试版,请参阅https://www.mongodb.com/transactions
在此blog post中,我还概述了我们的多文档ACID事务的过程,以防您对历史和推理感兴趣。
MongoDB 4。0将增加对多文档交易的支持。
而不仅仅是提供链接,请将关键文本放入您的答案中。否则,如果链路断开,我们将失去答案! :) – sniperd 2018-02-23 19:13:02
我没有得到'update modifiers'部分。他们到底能够帮到什么? (请记住,我是这个完整的新手:) :) – 2010-04-17 06:22:17
更新修饰符允许您使用单个操作自动执行某些复杂的操作 - 认为像“通过x增加此字段的值”或“添加一个新值这个数组“。 – mdirolf 2010-04-19 13:20:14
@mdirolf如果他进入他依赖TRANSACTIONS的场景,应该重构吗? – Tushar 2014-10-05 15:08:10