
數據庫版本及優勢
3.4版本在性能和安全性等方面較3.2版本均有不同程度的提升;
4.0版本更適用於金融等對事務有依賴且使用NoSQL特性的場景;
4.2版本采用二段提交方式,保證分片集群事務的ACID特性,極大拓展了適用的業務場景。更多詳情請參見下表。
| 數據庫版本 |
優勢 |
| 3.4版本 |
- 更快的主備同步
在同步數據的同時建立所有索引(以前的版本僅建立_id索引)。同時在同步數據的階段,Secondary節點不斷讀取新的oplog信息,確保Secondary節點的local數據庫具備足夠的存儲空間來存儲臨時數據。
- 更高效的負載均衡
3.2及以前版本中,分片集群的負載均衡由Mongos節點負責,多個Mongos節點會搶一個分布式鎖,由搶鎖成功的Mongos節點執行負載均衡任務,在Shard節點間遷移塊;而在3.4版本中,負載均衡由ConfigServer節點中的Primary節點負責,負載均衡的並發度和效率上均有大幅提升。
- 更豐富的aggregation操作
在3.4版本增加了大量的aggregation操作符,可支持更強的數據分析能力。例如,bucket能便捷地對數據進行分類;$grahpLookup相較於3.2版本的$lookup能支持更復雜的關系運算;$addFields使得文檔操作更豐富(例如將某些字段求和存儲為新的字段)。
- 支持Sharding Zones
分片集群里引入了Zone的概念,主要取代現在的tag-aware sharding機制,能將某些數據分配到指定的一個或多個Shard節點中,該特性極大地方便sharding cluster的跨機房部署。
- 支持Collation
在之前的版本里,文檔里存儲的字符串不論是中英文還是大小寫,一律按字節來對比;引入Collation后,支持對字符串的內容進行解讀,可以按使用的locale進行對比,也支持在對比時忽略大小寫。
- 支持只讀視圖(Read-only views)
在3.4中增加了對只讀視圖的支持,可以將集合中滿足某個查詢條件的數據虛擬成一個特殊的集合,用戶可以在特殊的集合上做進一步的查詢操作。
|
| 4.0版本 |
- 跨文檔事務支持
首個支持跨文檔事務的NoSQL雲數據庫,將文檔模型的速度,靈活性、功能與ACID保證相結合。
- 遷移速度提升40%
並發的讀取和寫入,使得新增的Shard節點能更快地完成數據遷移以承載業務壓力。
- 讀性能大幅擴展
借助事務特性,Secondary節點不再因為同步日志而阻塞讀取請求。 阿里雲同時在全體系版本支持多節點擴展功能,可大幅提升業務讀取能力。
|
| 4.2版本 |
- 分布式事務
采用二段提交方式,保證分片集群事務的ACID特性,極大拓展了MongoDB的業務場景,實現從NoSQL到NewSQL的飛躍。
- 可重試讀
增加可重試讀功能,提供弱網環境下自動重試能力,降低業務端的邏輯復雜性,保證用戶業務的連續性。
- 通配符索引
對於非確定字段,支持創建通配符索引覆蓋一個文檔下的多個特征字段,管理方便且使用靈活。
- 字段級加密
驅動層面支持字段級加密,可以針對特定的敏感信息(例如賬號、密碼、價格、手機號等)單獨加密。避免全庫加密,提升業務靈活性和安全性。
- 物化視圖
通過最新的物化視圖可以緩存計算結果,避免重復計算提升運行效率,減少邏輯復雜度。
|
存儲引擎
| 存儲引擎 |
說明 |
適用場景 |
| WiredTiger |
基於BTree結構組織數據,相比MongoDB早期的MMAPv1存儲引擎性能提升明顯,且支持數據壓縮,存儲成本更低。 |
默認存儲引擎,適用於大多數業務場景。 |
| RocksDB(已下線) |
基於LSM tree結構組織數據,針對性優化數據寫入,將隨機寫入轉換成了順序寫入,能保證持續高效的數據寫入。 |
適用於大量寫且少讀的場景。 |
| TerarkDB(已下線) |
借助TerarkDB的全局壓縮技術,在提高壓縮率的同時,能大幅提高隨機查詢的性能。 |
適用於多讀少寫或批量寫大量讀的場景。 |
版本和存儲引擎的適配關系
為最大化滿足各類業務場景需求,雲數據庫MongDB提供了WiredTiger、RocksDB和TerarakDB三種存儲引擎供您選擇。存儲引擎與版本間的適配關系如下:
| 存儲引擎 |
3.4版本 |
4.0版本 |
4.2版本 |
| WiredTiger |
單節點實例 副本集實例 分片集群實例 |
單節點實例 副本集實例 分片集群實例 |
副本集實例 分片集群實例 |
| RocksDB(已下線) |
單節點實例(按量付費) 副本集實例(按量付費) 分片集群實例 |
- |
- |
| TerarkDB(已下線) |
分片集群實例 |
- |
- |
MongoDB的版本
重要:
始終升級到發行系列的最新穩定版本。
MongoDB的版本的形式X.Y.Z在那里X.Y 指的是一個版本系列或開發系列Z 指修訂/補丁號。
- 如果
Y是偶數,則X.Y指發布系列;例如, 4.0發行系列和4.2發行系列。發布系列 穩定且適合生產。
- 如果
Y是奇數,則X.Y指一個開發系列;例如, 4.1開發系列和4.3開發系列。開發系列僅用於測試而不是生產。
例如,在MongoDB版本中4.0.12,4.0是指發行系列和.12版本。
最新產品
在發布一系列變化(例如4.0到4.2)通常標志着引進可能破壞向后兼容的新功能。
補丁版本
更改版本號(如4.0.11對4.0.12)一般標注錯誤修復和向后兼容的改變的釋放。
驅動程序版本
MongoDB的版本編號系統與MongoDB驅動程序使用的系統不同。
官方發行說明:https://docs.mongodb.com/manual/release-notes/