在.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