mongodb 2.0已經釋出,帶來了許多令人振奮的特性,越來越像企業級的資料庫了.
下面簡單的介紹一下,
1. compact command
compact 指令主要的功能是重組collection,重建索引,類似整理碎片。2.0以前需要通過repair database來達到同樣的目的,是以會中斷全庫的操作。compact 隻中斷單個collection的操作。同時compact操作不會被複制,是以在replica set環境,slave節點也需要做同樣的操作才能達到整理碎片的目的。
3. default stack size
預設stack size值降低到1mb或者小于系統預設設定,當資料庫被連接配接數量很大(如>1000個連接配接)是可以減少mongod線程的記憶體開銷。
4. index performance enhancements
mongodb2.0的索引比以前來說,空間占用約減少25%,性能提升25%。在建立索引的時候需要加上{v:1}的标記位。如果不想使用新的索引格式,标記為{v:0}。是以如果加了{v:1}從2.0降級到1.8需要重建索引。
5. sharding authorizaiton
以前sharding是不支援auth的,會産生bug。現在支援了。
6. replica set enhancements
6.1 priorities
以前replica set支援的優先級隻有0和1,即0不提升為primary,1可以提升為primary。現在的優先級範圍是0到1000的浮點型數值。
例如:
a的優先級是4 (primary)
b的優先級是2
c的優先級是3
當a挂掉了,或者不可用。選舉發生的時候,如果b和c的up-to-date一緻 (并且與primary的資料差異在10秒内)。那麼c會被選舉為primary。
如果c和a的差異超過了10秒,那麼b将被選舉為primary。如果b和c都進入了up-to-date狀态,但是b比較接近a,那麼還是c被選舉為primary。而b将産生一個rollback檔案,需要手工rollback超過c的部分資料。
這裡算是高可用的一個折中方案吧。對于資料要求嚴謹的可能不太适用。
6.2 datacenter awareness
這是一個令人期待的特性,在做系統架構設計時,可以考慮到資料庫節點的地域分布,機架分布。給replica set裡的每個member都打上1個或者多個tag。
利用這些tag,和getlasterror,可以控制這條dml操作需要在多少個打了某個你需要的tag的member裡面成功之後才傳回。
例如,
all of the rules up until now have only had one condition, but you can include as many and-conditions as you want. suppose we have the following:
server
tags
s1
{"continent" : "namerica", "copies" : "s1"}
s2
{"continent" : "namerica", "copies" : "s2"}
s3
{"continent" : "europe", "copies" : "s3"}
s4
{"continent" : "africa", "copies" : "s4"}
s5
{"continent" : "asia", "copies" : "s5"}
then create a mode like:
note that modes can contain as many clauses as you need.
6.3 w:"majority"
majority可以認為是少數服從多少的意思,如5個節點的replica set。majority就是3。
7. journal 增強
7.1 journal壓縮後寫入磁盤,縮短了寫入時間,降低磁盤占用。
7.2
2.0開始,journalcommitinterval支援配置,預設是100ms。配置範圍2到300毫秒。
其實這個journal有點類似postgresql在配置了synchronous_commit = off 時的wal_writer_delay 參數。
間隔多少時間做一次fsync,把journal的緩存寫入到磁盤。
7.3
{j: true}
dml操作時可以使用這個參數,使用之後journal會被立即寫入到磁盤,不必等待journalcommitinterval的發生。使用這個參數那麼這筆dml操作即達到了acid的d的要求。
其他的可以參看release notes.
【參考】
http://www.mongodb.org/display/docs/2.0+release+notes