這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
原文來自:http://docs.mongodb.org/manual/release-notes/3.0/
2015年3月3日
MongoDB 3.0現已可供使用。關鍵新特性包括支援WiredTiger儲存引擎,外掛程式化儲存引擎API,SCRAM-SHA-1身分識別驗證機制,以及改進的explain功能。
MongoDB營運管理器(MongoDB Ops Manager),包括自動化,備份,監控現在可供使用。查看營運管理器和營運管理器發布說明以擷取更多內容。
小版本發布
3.0.1 - 2015年3月17日
- 修複了WiredTiger中插入和檢查點競爭條件導致的記錄丟失問題:SERVER-17506
- 解決了WiredTiger定容集合實現不當導致的伺服器崩潰問題:SERVER-17345
- 解決初始化同步時導致重複的_id問題:SERVER-17487
- 修複了MMAPv1中日誌鎖和oplog鎖死結問題:SERVER-17416
- 所有3.0.1版本中的問題均已關閉
主要修改
外掛程式化儲存引擎API
MongoDB 3.0引入了外掛程式化儲存引擎API,允許第三方為MongoDB實現儲存引擎。
WiredTiger
MongoDB 3.0引入了WiredTiger儲存引擎支援。在支援WiredTiger的前提下,MongoDB現在支援兩個儲存引擎:
- MMAPv1,MongoDB之前版本中支援的儲存引擎,它是MongoDB 3.0的預設儲存引擎,以及:
- WiredTiger,只在64位版本的MongoDB 3.0中支援。
WiredTiger使用
WiredTiger是MMAPv1儲存引擎的一個可選替代項。WiredTiger支援所有MongoDB特性,包括所有伺服器,資料庫和集合統計方面的功能。但是切換到WiredTiger要求進行一次磁碟儲存格式轉換。要瞭解將儲存引擎切換到WiredTiger的更多資訊,請查看升級到MongoDB 3.0的對應章節。
MongoDB3.0 複製集和分區叢集的成員可以使用不同的儲存引擎。但是,隨著負載變化它們的效能也會有不同的變化。欲知詳情,請查看升級到MongoDB 3.0的對應章節。
WiredTiger儲存引擎要求最新的官方MongoDB驅動。欲知更多資訊,請查看WiredTiger與驅動版本相容性。
擴充閱讀:
touch命令支援,儲存文檔中的WiredTiger儲存引擎章節
WiredTiger配置
要配置WiredTiger儲存引擎的屬性和行為,請查看storage.wiredTiger配置選項。你可以在命令列設定WiredTiger選項。
擴充閱讀:
儲存文檔中的WiredTiger儲存引擎章節
WiredTiger並發和壓縮
3.0 WiredTiger儲存引擎提供了文檔層級的鎖和壓縮。
預設情況下,WiredTiger使用snappy壓縮庫來壓縮集合資料。WiredTiger預設對所有索引使用首碼壓縮。
擴充閱讀:
生產環境備忘中的WiredTiger章節
MMAPv1改進
MMAPv1並發改進
在3.0版本中,MMAPv1儲存引擎加入了集合層級的鎖。
MMAPv1配置變更
為了支援多儲存引擎,一些MMAPv1的配置選項有些變化。請查看設定檔選項變化章節。
MMAPv1記錄分配行為變更
MongoDB 3.0不再實現動態記錄分配,空白因子也已標註為到期。在使用MMAPv1的執行個體中,集合預設的分配策略是2的次方分配,這已被證明在處理大尺寸文檔時表現更優異。在3.0中,usePowerOf2Sizes選項被忽略,所以2的次方分配策略被應用在所有沒有noPadding設定的集合上。
對於只有插入和更新(例如增長計數)工作負載的集合而言,可以選擇禁用2的次方策略。要為某個集合禁用2的次方策略,使用noPadding標記的collMod命令,或帶noPadding的db.createCollection()方法。
警告:
如果工作負載包含刪除或造成文檔大小變更的更新,不要設定noPadding選項。欲知更多資訊,請閱讀無空白分配策略。
當磁碟空間不足時,MongoDB 3.0不再在所有寫操作上產生錯誤,而只針對無法分配要求的空間時產生錯誤。所以,當磁碟空間低時MongoDB現在仍然允許不變更大小的更新和刪除操作。
擴充閱讀:
動態記錄分配
複製集
增加了複製集的最大成員數量
MongoDB 3.0中複製集可以有最多50個成員[1]。以下驅動支援大複製集:
- C#(.NET)驅動1.10
- Java驅動2.13
- Python驅動(PyMongo)3.0+
- Ruby驅動2.0+
- Node.JS驅動2.0+
因為C,C++,Perl,PHP以及早先版本的Ruby,Python和Node.JS驅動是順序地發現和監控複製整合員,這些驅動不適宜用在大複製集中。
PyMongo 3.0目前正在開發中。
[1]最大投票成員數仍然是7個
複製集降級行為改變
複製集的主成員降級過程有了以下改變:
- 降級前,replSetStepDown將會嘗試結束阻塞主成員降級的長時間啟動並執行使用者任務,例如建立索引,寫操作,或map/reduce工作。
- 為了防止復原,replSetStepDown將會在降級等待有資格的後備成員追上當前主成員的同步狀態。之前主成員會在降級前在10秒內等待後備成員追上同步狀態(例如後備成員同步延遲在10秒內)。
- replSetStepDown現在允許使用者指定secondaryCatchUpPeriodSecs參數來設定主成員在降級前應該等待後備成員多長時間。
其他複製集可選變更
- 首次同步處理現在使用多線程更有效率地為集合構建索引和應用oplog記錄。
- 定義w:"majority"寫關注現在的意義變為指大多數有投票權的結點。
- 複製集配置現在有更強的約束。欲知詳情,請閱讀複製集配置驗證章節。
- 對後備成員上已經存在的集合,MongoDB 3.0不再自動構建丟失的_id索引。
擴充閱讀:
MongoDB 3.0 相容性變更中的複製集變更
分區叢集
MongoDB 3.0為分區叢集提供以下增強:
- 增加了一個新的sh.removeTagRange()協助方法來改帶標籤的進分區集合的管理。新的sh.removeTagRange()方法是sh.addTagRange()方法的補充。
- 使讀喜好設定的行為更可預料。當進行讀操作時,mongos執行個體不再把串連固定在複製集的成員上。相反,mongos為每個操作重新評估讀喜好設定,從而當讀喜好設定變化時提供一個更可預料的讀喜好設定行為(有點難懂,請先瞭解讀喜好設定——譯註)。
- 提供了一個新的writeConcern設定來配置資料片斷遷移操作的寫關注。你可以為平衡器以及moveChunk和cleanupOrphaned命令配置獨立的寫關注。
- 改進平衡器操作的透明性。sh.status()包含了平衡器的狀態資訊。查看sh.status()以得到瞭解更多細節。
擴充閱讀:
MongoDB 3.0相容性變更中的分區叢集設定
安全性改進
MongoDB 3.0包含了以下安全性增強:
- 添加新的SCRAM-SHA-1使用者認證機制。
- 當使用本地例外訪問MongoDB時增加了更多的約束。欲知詳情,請查看本地例外變更。
擴充閱讀:
安全變更
改進
新的查詢自測系統
MongoDB 3.0包含了一個新的查詢自測系統,可以提供更好的輸出格式化和把自測資訊更好地應用到查詢計劃和查詢執行中。
欲知詳情,請查看新的db.collection.explain()方法和新的explain命令,以及更新過的cursor.explain()方法。
要瞭解更多關於新輸出格式的資訊,請查看explain結果。
增強日誌
為了增加日誌訊息在診斷過程中的可用性,MongoDB分類了一些特定組件或操作的日誌訊息,提供了為這些組件設定日誌明細等級的能力。欲知詳情,請閱讀日誌訊息。
MongoDB工具改進
所有MongoDB工具現在都由Go語言編寫,作為獨立項目維護。
- mongodump和mongorestore的並行新選項。你可以用--numParallelCollections選項為mongorestore指定並行恢複的集合數。
- 新選項-excludeCollection和--excludeCollectionsWithPrefix可以為mongodump指定排除的集合。
- mongorestore現在除了從檔案中讀取BSON資料外,還支援從標準輸入資料流中接受BSON資料。
- mongostat和mongotop現在可以使用--json選項指定輸出JSON格式。
- 為mongoimport,mongorestore,mongofiles添加了可配置的寫關注,請使用--writeConcern選項。
- mongofiles現在允許使用--prefix選項配置GridFS首碼,因此現在可以使用自訂的命名空間在同一個資料庫中儲存多個GridFS命名空間。
擴充閱讀:
MongoDB工具改進
索引
- 後台構建索引現在不會因為dropDatabase,drop,dropIndexes操作影響到相關資料庫或集合而中斷。dropDatabase,drop和dropIndexes命令現在和2.6版本中一樣,會返回“後台操作進行中”而失敗。
- 如果你為createIndexes命令指定了多個索引,
- 命令只會掃描集合一次,並且
- 如果至少有一個集合需要在前台構建,該操作會在前台構建所有索引。
- 對於分版集合,現在如果索引包含了分區鍵,則可以覆蓋針對mongos進行的查詢。
擴充閱讀:
MongoDB 3.0相容性改進中的索引章節
查詢加強
MongoDB 3.0包含了以下查詢增強:
- 地球位置查詢為$geoIntersects和$geoWithin查詢添加了凸多邊形支援。
發行版
多數非企業級MongoDB發行版現在包含了SSL支援。之前只有MongoDB企業版發行版內建SSL支援;而對於非企業版發行版,你只能使用--ssl標識在本地編譯MongoDB(例如scons --ssl)。
MongoDB企業版特性
審計
MongoDB企業版中的審計功能可以按審計訊息中的任意欄位過濾,包括在param文檔中的的欄位。這個加強,加上auditAuthorizationSuccess參數,使審計可能過濾CRUD操作。然而,相對於只對認證失敗時開啟auditAuthorizationSuccess,對所有授權成功的審計開啟會降低效能。
附加資訊
影響相容性的改進
在3.0中的一些修改可能影響相容性,可能需要使用者關注。需要閱讀影響相容性的所有修改,請參考MongoDB 3.0相容性改進。
升級過程
查看升級到MongoDB 3.0以擷取完整的升級說明。
下載
要下載MongoDB 3.0請到下載頁面。
額外資源
- 所有第三方許可證說明
- 所有3.0中解決的JIRA問題