MongoDB 4.0有望支援跨文檔事務
MongoDB併購了WiredTiger及其關聯式資料庫儲存引擎以來,很多技術專家一直翹首以待MongoDB何時提供對跨文檔事務(multi-document transaction)的支援。MongoDB在本周宣布,跨文檔事務有望於今年夏天加入到MongoDB 4.0中。
據MongoDB的Grigori Melnik宣稱,“80%到90%的應用是完全不需要跨文檔事務的”。然而他的說法有待商榷,在層次資料庫中很有可能存在大量的反正常化(denormalized)資料,此類資料需要支援多地同時更新以確保一致性。Melnik繼續指出:
此外,一些開發人員和資料庫管理員受限於業已存在40多年的關係資料建模,總是誤以為多表或多文檔事務是所有資料庫的要求,無論實際需要構建何種資料模型。其他一些人則擔心,雖然他們的應用當前不需要跨文檔事務,但將來可能會需要,他們不希望過度擴充他們的資料庫。
跨文檔事務是ACID的基石。MongoDB自3.0版起,開始支援跨文檔事務。在3.0版中,MongoDB具備了多版本並發控制(MVCC)技術,該技術是一種快照隔離技術,通常是由PostgreSQL和Oracle等關聯式資料庫提供。最新版本的SQL Server也使用MVCC實現其“記憶體最佳化”表。
MongoDB 3.2增加了對“讀取關注”(Read Concern)的支援。在3.2版之前,客戶只有知道進行通訊的節點時,才會接收資料。讀取關注功能允許客戶請求為大多數節點所知的資料。需要注意的是,根據文檔介紹,“無論讀取的關注層級,節點上的最新資料可能並未反映系統中資料的最新版本。”
MongoDB之後在3.6版中提供了其所宣稱的“因果一致性”。在以前的MongoDB版本中,並不能保證操作是按指定順序進行的。例如,當刪除一組記錄後再執行一次讀取操作時,可能會返回剛被刪除的記錄。使用因果一致性,使用者可以指明讀取操作取決於寫操作的結果,確保了在執行讀取操作之前先完成刪除操作。
最後一點,MongoDB 4.0將提供執行一致性讀取的能力。也就是說,MongoDB只返回資料庫在讀取操作開始時已知的資料。正如在InfoQ文章“[交易隔離等級和髒讀的快速入門]http://www.infoq.com/cn/articles/Isolation-Levels)”中所介紹的,以前版本的MongoDB返回的結果可能和任何時間點都不一致。它甚至可能跳過一些文檔,或是在一次查詢中返回同一文檔的多個版本。
希望想要試用跨文檔事務的開發人員,積極加入到MongoDB 4.0 beta計劃中。
更多MongoDB相關教程見以下內容:
MongoDB文檔、集合、資料庫簡介
MongoDB 3分區部署及故障類比驗證
Linux CentOS 6.5 yum安裝MongoDB
CentOS 7 yum方式快速安裝MongoDB
MongoDB的查詢操作
在 Azure 虛擬機器上快速搭建 MongoDB 叢集
MongoDB複製集原理
MongoDB 3.4 遠端連線認證失敗
Ubuntu 16.04中安裝MongoDB3.4資料庫系統
MongoDB權威指南第2版PDF完整帶書籤目錄 下載見
MongoDB 的詳細介紹:請點這裡
MongoDB 的:請點這裡
查看英文原文: MongoDB 4.0 to Include Multi-Document Transactions
本文永久更新連結地址:https://www.bkjia.com/Linux/2018-02/151059.htm