NoSQL數(shù)據(jù)庫(kù)對(duì)比:MongoDB vs.Cassandra
這不算是一篇PK文章,當(dāng)然對(duì)于任意一個(gè)產(chǎn)品,沒(méi)有絕對(duì)的主場(chǎng),所以文章內(nèi)容更多是從各個(gè)方面的對(duì)比。本文來(lái)自boxedice的技術(shù)博客,在寫(xiě)此文時(shí)他們已經(jīng)在Server Density中使用MongoDB兩年多時(shí)間了。全文分為兩部分,技術(shù)方面和市場(chǎng)運(yùn)作方面。
技術(shù)方面
1.數(shù)據(jù)結(jié)構(gòu)
MongoDB使用文檔型存儲(chǔ),其數(shù)據(jù)結(jié)構(gòu)為與JSON類(lèi)似的BSON結(jié)構(gòu),而Cassandra支持的是key-value式存儲(chǔ),而每個(gè)key-value還會(huì)保存一個(gè)時(shí)間戳,這個(gè)時(shí)間戳實(shí)際上起到了版本控制的作用。
2.索引結(jié)構(gòu)
MongoDB的索引幾乎與關(guān)系型數(shù)據(jù)庫(kù)完全一樣,其普通索引、聯(lián)合索引、唯一索引的意義和實(shí)現(xiàn)上都可以參考對(duì)MySQL索引的理解。而 Cassandra由于其是一個(gè)key-value結(jié)構(gòu)的存儲(chǔ),如果你要對(duì)value進(jìn)行條件查找,那么就必須建立反向索引,重新建立一個(gè)value- key的鍵值對(duì)。
3.部署
MongoDB提供了Replica Sets的高可用部署方式,配置好RS的節(jié)點(diǎn)后,整個(gè)集群會(huì)自動(dòng)選舉出Primary機(jī)器供寫(xiě)入操作,并自動(dòng)復(fù)制數(shù)據(jù)到其它節(jié)點(diǎn)。它還具有故障后自動(dòng)選舉 新的主機(jī)的機(jī)制。而Cassandra提供的策略更為靈活,它通過(guò)一種對(duì)網(wǎng)絡(luò)結(jié)構(gòu)可感知的機(jī)制,它讓你可以配置數(shù)據(jù)是備份在本地網(wǎng)絡(luò)中的其它節(jié)點(diǎn)還是備份 到遠(yuǎn)端的數(shù)據(jù)中心。
#p#
市場(chǎng)動(dòng)作
1.商業(yè)支持
Cassandra和MongoDB都是開(kāi)源產(chǎn)品,不同的是Cassandra是完全自由地在Apache孵化器中進(jìn)行發(fā)展。而MongoDB是由商業(yè)公司10gen在背后支持,絕大部分的MongoDB貢獻(xiàn)者都來(lái)自10gen。
2.技術(shù)支持
對(duì) MongoDB來(lái)說(shuō),最好的技術(shù)支持肯定來(lái)源于10gen,因?yàn)镸ongoDB是他們開(kāi)發(fā)的,所以他們應(yīng)該最了解。在10gen的網(wǎng)站上,你可以看到相關(guān)的支持支持聯(lián)系方式。而Cassandra也有一些第三方的機(jī)制提供技術(shù)支持服務(wù),這些機(jī)構(gòu)基本上都有一些Cassandra的核心開(kāi)發(fā)者在其中,以保證其對(duì)Cassandra能有足夠的了解。
3.發(fā)展?fàn)顟B(tài)
MongoDB在10gen的帶領(lǐng)下一直穩(wěn)步而快速地進(jìn)行著 BUG修復(fù)和新功能增加,比如他們會(huì)舉行新功能投票來(lái)讓你參與MongoDB發(fā)展中來(lái)。另外值得一提的是10gen對(duì)社區(qū)的關(guān)注熱情很高,對(duì)于使用用戶(hù)的需求了解非常充分。相對(duì)來(lái)說(shuō)Cassandra在這方面就相對(duì)混亂一些,與10gen的全職開(kāi)發(fā)工程師不同,Cassandra更多的是自發(fā)的開(kāi)源項(xiàng)目參與者,像Eric Evans這樣的全職開(kāi)發(fā)者非常之少。
4.技術(shù)文檔
Cassandra的官方文檔并不太好,相對(duì)好一些的是Datastax自己上面的一個(gè)版本。但還是缺乏一個(gè)完整詳盡的介紹。而MongoDB的文檔相對(duì)來(lái)說(shuō)比較完整而成體系。在其官方網(wǎng)站上你就能看到結(jié)構(gòu)明了的文檔了,而且多語(yǔ)言版本也都在跟進(jìn)翻譯中。
5.社區(qū)活動(dòng)
這方面MongoDB做得非常出色,幾乎可以用技術(shù)營(yíng)銷(xiāo)經(jīng)典案例來(lái)形容。在去年一年,MongoDB相關(guān)的會(huì)議就舉行了40場(chǎng)。相信在國(guó)內(nèi)的很多朋友還記得在北京舉行的Mongo Beijing。而Cassandra的活動(dòng)更多的是自發(fā)進(jìn)行的。
6.第三方客戶(hù)端
這也是boxedice選擇MongoDB的另一個(gè)原因,MongoDB擁有非常廣泛的客戶(hù)端支持,幾乎所有流行語(yǔ)言都有其操作客戶(hù)端。而且這些客戶(hù)端幾乎都是由10gen官方開(kāi)發(fā)并維護(hù)的。而Cassandra僅有Java和Python的官方客戶(hù)端,剩下的都是一些自發(fā)的第三方客戶(hù)端。
【編輯推薦】
- CouchDB和SQLite聯(lián)合推出NoSQL查詢(xún)語(yǔ)言
- Java開(kāi)源NoSQL數(shù)據(jù)庫(kù)大全
- NoSQL就業(yè)形勢(shì)分析:Cassandra和MongoDB最受歡迎
- Mongodb億級(jí)數(shù)據(jù)量的性能測(cè)試