MongoDB 2.2版本發(fā)布 并發(fā)性能增強(qiáng)
我們能夠看到,廣受詬病的全局鎖已經(jīng)在這一版中被拿掉,取而代之的是DB級(jí)別的鎖,而且collection 級(jí)別的鎖也不遠(yuǎn)了。
下面就看看2.2 版本的幾個(gè)新功能吧:
1.并發(fā)性能增強(qiáng)
如上面所說(shuō),MongoDB 2.2版本中不再有凌駕于整個(gè)daemon上的全局鎖,而是將鎖的粒度減小到了DB級(jí)別。并且按MongoDB 的CEO Dwight Merriman所說(shuō),這次雖然沒有一步到位的將鎖粒度改到collection級(jí)別,但是從全局鎖到DB 鎖這一步,已經(jīng)完成了鎖粒度細(xì)化的最艱難部分工作,相信collection級(jí)別的讀寫鎖會(huì)很快到來(lái)。
除了減小鎖粒度外,MongoDB對(duì)2.0 版本中的鎖抑制功能也進(jìn)行了一些增強(qiáng),引入了PageFaultException 架構(gòu)來(lái)進(jìn)行鎖抑制的判定。
感興趣的朋友可以看看這個(gè)演講及PPT:http://www.10gen.com/presentations/concurrency-internals-mongodb-2-2
2.新的統(tǒng)計(jì)框架
統(tǒng)計(jì)操作一直不是MongoDB 的強(qiáng)項(xiàng),這次版本MongoDB 對(duì)統(tǒng)計(jì)工作的易用性又進(jìn)行了提升。在新的統(tǒng)計(jì)框架中,用戶不需要再使用mapreduce方法去進(jìn)行數(shù)據(jù)統(tǒng)計(jì),而是使用統(tǒng)計(jì)框架提供和各種方便易用的函數(shù)來(lái)實(shí)現(xiàn)。這個(gè)在NoSQLFan之前的文章中也有介紹,見:http://blog.nosqlfan.com/html/3648.html
3.Tag Aware Sharding
在2.2版本中,可以人為的對(duì)數(shù)據(jù)的分片方式進(jìn)行一些控制,從而使得數(shù)據(jù)能放到合適的分片節(jié)點(diǎn)上(這里所謂的合適,通常來(lái)說(shuō)就是數(shù)據(jù)離要使用它的應(yīng)用層更近)。具體的做法是通過(guò)對(duì)分片節(jié)點(diǎn)打tag標(biāo)識(shí),再將sharding key 按范圍對(duì)應(yīng)到這些標(biāo)識(shí)上。比如我們?cè)O(shè)定sharding key在范圍 [a, b]之間時(shí),數(shù)據(jù)需要放到tag為BeiJing的節(jié)點(diǎn)。在[b, c]之前,數(shù)據(jù)放到tag為TianJin的節(jié)點(diǎn)。然后我們?cè)賹?duì)不同的分片節(jié)點(diǎn)打上不同的tag。這樣對(duì)應(yīng)sharding key在某個(gè)范圍內(nèi)的數(shù)據(jù)就會(huì)在我們的控制下存儲(chǔ)到指定的分片節(jié)點(diǎn)上了。
詳見:http://www.mongodb.org/display/DOCS/Tag+Aware+Sharding
4.TTL的collection
我們知道,MongoDB的capped collection,它保持?jǐn)?shù)據(jù)在一定大小和條數(shù)范圍內(nèi),在collection大小超量后,采用移除老數(shù)據(jù)的方式對(duì)空間進(jìn)行循環(huán)利用。capped collection被大量使用在日志及隊(duì)列系統(tǒng)中,具有很高的性能,但是其靈活性一直不高。
在2.2版本中,MongoDB又引入了TTL collection(TTL == time to live),你可以在給某個(gè)字段建立索引的時(shí)候指定多長(zhǎng)時(shí)間后刪除掉對(duì)應(yīng)的記錄。建立索引的字段必須是date類型的。這樣我們就可以靈活的控制數(shù)據(jù)的過(guò)期,可以更方便的存儲(chǔ)和管理臨時(shí)數(shù)據(jù)。
詳見:http://docs.mongodb.org/manual/tutorial/expire-data/
更多介紹:http://docs.mongodb.org/manual/release-notes/2.2/
下載地址:http://www.mongodb.org/downloads
【編輯推薦】