0

的情況下,我們要執行多個更新操作,是原子和在MongoDB中隔離,讓其他進程或線程不得到數據,而這些都是過程。我知道的一個事實,即原子和隔離在文件級別只,還鎖保持在DB level.I支撐的具有以下WRT上述情況查詢:多項更新與隔離級別和原子

  • 有沒有辦法,我們可以做這樣的多獨立更新,因爲「$ isolated」不適用於集羣,而且,findAndModify()適用於單個文檔?
  • 我們該如何做併發控制才能達到上述情況?
  • 我們可以在這裏使用兩個階段提交,通過維護一個事務,它會以獨立的方式執行嗎?
  • 在探索,我發現MongoMVCC多版本併發控制,如果有人使用它,請相對於上述使用案例分享您的經驗。
+0

我認爲我的答案下面的tl; dr是,如果你想要ACID你需要一個ACID技術 – Sammaye

回答

1

有沒有辦法,我們可以做這樣的隔離多個更新,批量,如$ isloated的碎片無法正常工作,而且,findAndModify()適用於單一的文件?

沒有,$isolated是最接近

,我們怎樣才能做到併發控制,實現上述情況?

你不能,MongoDB自己的併發工作通過分裂我的ACID。

我們可以在這裏使用兩階段提交,通過在這裏維護一個事務,它會被執行的是隔離的方式嗎?

兩階段提交,而不是服務器端的隔離事務將不起作用。

在探索發現MongoMVCC用於多版本併發控制時,如果有人使用過它,請分享你的經驗與上面的用例有關。

這是用Java語言編寫的,它實際上並不是MongoDB本身,也不能代替ACID中的I。另外MVCC更關於無鎖數據庫而不是孤立的操作。