告別 MongoDB 2.x 擁抱 3.x 版本的5大理由(轉)


據不完全統計,目前還有很多同學在生產環境使用着 MongoDB 2.x 版本的服務,偶爾也會聽到一些抱怨,但有些抱怨其實很沒道理,因為抱怨的問題在最新版本的MongoDB里已經解決了,你缺的只是一次版本升級。

1. 更安全的數據庫

  • 3.x 版本默認WriteConcern 為{w:1},2.x 較早的版本為 {w: 0}
  • 3.x 默認使用更安全的 SCRAM-SHA-1 算法鑒權,代替了2.x 版本默認的 MONGODB-CR
  • 3.x 支持加密引擎對存儲的數據進行加密

2. 更高的服務性能

版本 MMAPV1 WIREDTIGER
2.x DB級別鎖 不支持
3.x 集合級別鎖 文檔級別鎖

如果你使用2.x存在高並發時的性能問題,那么升級到3.x后,問題會得到極大的改善。

3. 更低的存儲成本

版本 MMAPV1 WIREDTIGER
2.x 不支持數據壓縮 不支持
3.x 不支持數據壓縮 支持snappy、zlib等壓縮

很多用戶從 2.x 升級到 3.x + wiredtiger 后,驚奇的發現,數據量居然變小了很多,比如原來100G的數據,升級后只有30G了,這是因為wiredtiger默認使用snappy壓縮,存儲成本通常只有mmapv1的10%-30%左右。

4. 更快的復制

  • 3.x 在增量同步數據時,拉取oplog和重放oplog完全流水線化,效率更高
  • 3.4 對全量同步做了改進
    • 在拷貝數據的時候,同時建立所有的索引(以前版本只有_id索引是在同步數據時建立的)
    • 拷貝數據的階段,secondary 不斷拉取新的 oplog,同步效率更高,同時避免了出現oplog不足無法同步的問題。

5. 更簡單、高效的分片集群

  • MongoDB 3.2 開始,分片集群的Config Server 也是一個復制集,之前的版本則是多個獨立的mongod節點,維護起來更簡單。
  • MongoDB 3.4 開始,分片集群的遷移由Config server負責,並支持同時發起遷移任務,遷移效率更高。

3.x 版本里還增加了其他一些很給力的功能特性,比如

  • 部分索引,可以讓索引占用的空間更小
  • 文檔校驗,靈活的文檔模型下
  • Collation,支持本地化語言排序
  • 只讀視圖,讓復雜的查詢寫起來的更簡單
  • 更強大的aggregation支持
  • ……

升級步驟建議

因為2.x 到 3.x 改動很多,在升級的時候,必須先升級到3.0版本,步驟參考Upgrade MongoDB to 3.0,然后從3.0再往更高的版本升級。

雖然通過上述方式,MongoDB能做到不停機的從2.x升級到3.x,但強烈建議升級的時候,使用更保險的方式。

  1. 建立新的3.x復制集
  2. mongodump 2.x 復制集的數據
  3. mongorestore 到3.x復制集
  4. 等待3.x服務穩定,將2.x復制集下線

版本使用建議 (2016-12-23版)

版本 建議
2.x 強烈建議升級到3.2
3.0 建議升級到3.2
3.2 強烈建議使用
3.4 鼓勵使用

作者簡介

張友東,阿里巴巴技術專家,主要關注分布式存儲、Nosql數據庫等技術領域,先后參與TFS(淘寶分布式文件系統)Redis雲數據庫等項目,目前主要從事MongoDB雲數據庫的研發工作,致力於讓開發者用上最好的MongoDB雲服務。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM