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