MongoDB 3.0 Release Notes

MongoDB 3.0支持WiredTiger存儲引擎,提供可插拔存儲引擎API,新增SCRAM-SHA-1認證機制,改進explain功能。mongodb

可插拔存儲引擎API

容許第三方爲MongoDB開發存儲引擎數據庫

WiredTiger存儲引擎

首次引入WiredTiger存儲引擎,目前支持兩種存儲引擎:json

  • MMAPv1,3.0版本以前的存儲引擎,也是3.0默認的存儲引擎
  • WiredTiger,僅可用於MongoDB 3.0 64位版本

用法

WiredTiger支持MonoDB的全部特徵,複製集和分片集羣的成員能夠採用不一樣的存儲引擎,須要client採用最新的官方驅動api

配置

詳見strorage.wiredTiger相關配置安全

併發及壓縮

提供文檔鎖(document-level)和數據壓縮,默認使用snappy庫壓縮集合數據,使用前綴壓縮的方式壓縮索引多線程

MMAPv1存儲引擎

併發

支持集合鎖(collection-level),老版本是數據庫鎖(database-level),粒度更細,支持更高併發併發

配置

爲了支持多存儲引擎,MMAPv1部分配置選項作了改變:app

文檔分配策略

再也不支持動態校準的文檔分配,同時不建議使用paddingFactor
MMAPv1默認的文檔分配策略是2的N方,忽略usePowerOf2Sizes集合配置,因此未配置noPadding的集合均採用2的N方分配策略。若只有insert和in-place update,能夠設置noPadding。
當磁盤空間不足時,寫操做僅在須要磁盤空間分配失敗時報錯,不涉及磁盤分配的刪除操做或原地更新操做都可正常執行。高併發

複製集

節點數量

支持最多50個節點,其中不超過7個投票節點,此特徵須要注意所使用的驅動是否支持。
v3.0以前最多支持12個節點,其中不超過7個投票節點。工具

stepDown過程

複製集primary節點執行stepDown的過程作了如下改變:

  • 在stepDown以前,嘗試終止長時間運行的用戶操做,好比創建索引、寫操做、map-reduce任務等,由於上述操做可能阻塞stepDown過程
  • 爲了不發生rollback,primary節點將等待有候選資格的secondary節點追遇上primary節點的狀態,保證兩者狀態徹底一致。v3.0以前secondary節點同步滯後於primary節點10秒以內便可以執行stepDown。
  • 容許用戶設置secondaryCatchUpPeriodSecs參數,若是在指定時間內secondary節點沒有遇上primary節點的狀態,那麼stepDown執行失敗, 複製集不會選舉新的primary

其餘

  • 初始同步創建索引更加高效,使用線程(多線程?有待確認!)批量應用oplog
  • writeConcern w:majority表示投票節點的大多數,一個複製集最多有7個投票節點
  • 更加嚴格的限制條件,詳見官方文檔
  • 對於secondary節點上預先存在的集合,再也不自動創建缺失的_id索引

分片集羣

作了如下改進:

  • 新增命令sh.removeTagRange(),讓帶標籤的分片集羣更容易管理,其做用相對於sh.addTagRange()
  • 提供更加可控的讀選項行爲。mongos將分析每一個操做的讀選項,而後按需執行,客戶端改變讀選項會當即生效。
  • 提供一個新的writeConcern,用於配置chunk遷移操做,適用於balancer、moveChunk命令、cleanupOrplaned命令
  • 完善balancer操做可見性。sh.status()輸出結果包含balancer的狀態,詳見官方文檔

安全

作了如下改進:

  • 新SCRAM-SHA-1用戶認證機制
  • 從本機訪問的權限限制更加嚴格,詳見官方文檔

其餘改進

新的查詢自檢系統(New Query Introspection System)

爲查詢計劃和查詢執行提供粒度更細的自檢,改進查詢結果的輸出格式

日誌

改進日誌的可用性,根據組件、操做類型等進行分類,使得分析診斷更加方便,詳見官方文檔

工具

全部工具(好比mongodump、mongorestore等)用Go重寫並利用一個單獨的項目維護

  • mongodumpmongorestore增長新的命令行參數--numParallelCollections,支持多個集合併發導出/導入
  • mongodump新增命令行選項-excludeCollection--excludeCollectionsWithPrefix,用於排除目標集合
  • mongorestore支持來自標準輸入的BSON數據,以前輸入僅支持來自BSON文件的數據
  • mongostatmongotop可以使用--json命令行選項生成JSON格式的輸出
  • mongoimport mongorestore mongofiles可以使用--writeConcern命令行選項配置寫選項
  • mongofiles可以使用--prefix命令行選項配置GridFS前綴,自定義命名空間,所以一個數據庫下可存放多個GridFS命名空間

索引

  • 後臺索引創建再也不由於目標數據庫或集合執行了dropDatabase drop dropIndexes操做而自動中斷,上述命令在索引創建過程當中執行將報錯 a background operation is currentlxiay running
  • 若是用createIndexes命令指定多個索引
    • 該命令只掃描集合一次
    • 若是有索引是前臺創建,那麼全部的索引都將前臺創建
  • 對於分片集合,若是一個索引涵蓋片鍵,那麼該索引能夠涵蓋經過mongos執行的查詢,關於Covering a Query,請參考官方文檔

查詢

  • 地理空間查詢,增長查詢範圍
  • 聚合查詢,新增操做符$dateToString用於將日期轉換成字符串
  • 新增運算符$eq表示相等條件

參考資料

Release Notes for MongoDB 3.0

相關文章
相關標籤/搜索