2015年3月3號,MongoDB新版本3.0發佈了,和之前版本相比,此次改動較大,主要有如下幾個方面:數據庫
1. 引入了插件式的存儲引擎架構,容許第三方根據實際項目的須要開發存儲引擎,相似於MySql中的分層存儲引擎架構。隨同這種架構發佈的新的存儲引擎爲WiredTiger,老的存儲引擎改名爲MMAPv1,也是目前默認的存儲引擎。架構
WiredTiger存儲引擎主要特色有:併發
(1)目前只支持64位的MongoDB。工具
(2)支持文檔級別的鎖,至關於MySql中的行級別鎖,多個客戶端可以同時修改同一個集合中的多個文檔,相比之前版本,WiredTiger存儲引擎帶來了更細粒度的鎖,所以MongoDB的併發性能獲得了大大的提升。oop
(3)支持集合和索引的壓縮存儲,這樣能減小存儲的消耗而只須要較少的CPU開支。性能
2. 不一樣存儲引擎對應的數據文件不能兼容,也就是說之前版本對應的數據文件不能直接被WiredTiger存儲引擎所支持,若是要升級到3.0的WiredTiger存儲引擎,必須先將版本升級到2.6,而後再升級到3.0,下面介紹一個單實例升級步驟:大數據
Step1:下載最新的3.0版本的mongod二進制文件,取代2.6版本的二進制。插件
Step2:啓動3.0版本的mongod進程,確保使用的是默認存儲引擎MMAPv1。rest
Step3:利用mongodump導出數據文件。索引
Step4:建立新的數據目錄爲WiredTiger存儲引擎。
Step5:重啓mongod實例用WiredTiger存儲引擎選項,以下:
mongod –storageEngine wiredTiger –dbpath ‘Step4建立的新目錄’
Step6:使用mongorestore恢復數據文件。
關於mongodump,mongorestore命令的使用方法能夠參考《大數據存儲MongoDB實戰指南》一書。
3. 默認的存儲引擎MMAPv1在3.0版本中也有所改進,支持了集合級別的鎖,至關於MySql中的表級別鎖,之前版本都是數據庫級別和全局實例級別的鎖,鎖的粒度有所下降。
4.複製集的也發生了一點改變,在3.0版本中,首先容許的成員最大數量增長了,能夠達到50個;其次複製集中primary節點關閉時,複製集的行爲也有所變化,在3.0版本中,複製集會終止耗時較長的操做,例如索引的構造,map-reduce做業等,複製集會等到有新的priamry節點選出後原來的primary節點纔會關閉,而之前的版本只是簡單的等待10秒,無論是否選出了新的primary節點,同時如今也能夠指定參數secondaryCatchUpPeriodSecs值,明確指定等待多少秒。
5. 工具的改變,mongodump,mongorestore,mongoexport,mongoimport,mongofiles以及mongooplog工具必須鏈接到正在運行的mongod實例上進行操做,不能像之前版本那樣直接經過—dbpath選項操做數據文件。
6. 本地鏈接權限的改變,本地鏈接只能建立第一個用戶在admin數據庫中,不像之前版本,本地鏈接沒有權限限制,能在實例上作任何操做。同時db.addUser()命令被廢棄了,用db.createUser()和db.updateUser()來代替。