MongoDB vs Cassandra

这不算是一篇PK文章,当然对于任意一个产品,没有绝对的主场,所以文章内容更多是从各个方面的对比。本文来自boxedice的技术博客,在写此文时他们已经在Server Density中使用MongoDB两年多时间了。全文分为两部分,技术方面和市场运作方面。

技术方面

1.数据结构

MongoDB使用文档型存储,其数据结构为与JSON类似的BSON结构,而Cassandra支持的是key-value式存储,而每个key-value还会保存一个时间戳,这个时间戳实际上起到了版本控制的作用。

2.索引结构

MongoDB的索引几乎与关系型数据库完全一样,其普通索引、联合索引、唯一索引的意义和实现上都可以参考对MySQL索引的理解。而Cassandra由于其是一个key-value结构的存储,如果你要对value进行条件查找,那么就必须建立反向索引,重新建立一个value-key的键值对。可以参考此文

3.部署

MongoDB提供了Replica Sets的高可用部署方式,配置好RS的节点后,整个集群会自动选举出Primary机器供写入操作,并自动复制数据到其它节点。它还具有故障后自动选举新的主机的机制。而Cassandra提供的策略更为灵活,它通过一种对网络结构可感知的机制,它让你可以配置数据是备份在本地网络中的其它节点还是备份到远端的数据中心。

市场动作

1.商业支持

Cassandra和MongoDB都是开源产品,不同的是Cassandra是完全自由地在Apache孵化器中进行发展。而MongoDB是由商业公司10gen在背后支持,绝大部分的MongoDB贡献者都来自10gen。

2.技术支持

对MongoDB来说,最好的技术支持肯定来源于10gen,因为MongoDB是他们开发的,所以他们应该最了解。在10gen的网站上,你可以看到相关的支持支持联系方式。而Cassandra也有一些第三方的机制提供技术支持服务,这些机构基本上都有一些Cassandra的核心开发者在其中,以保证其对Cassandra能有足够的了解。

3.发展状态

MongoDB在10gen的带领下一直稳步而快速地进行着BUG修复和新功能增加,比如他们会举行新功能投票来让你参与MongoDB发展中来。另外值得一提的是10gen对社区的关注热情很高,对于使用用户的需求了解非常充分。相对来说Cassandra在这方面就相对混乱一些,与10gen的全职开发工程师不同,Cassandra更多的是自发的开源项目参与者,像Eric Evans这样的全职开发者非常之少。

4.技术文档

Cassandra的官方文档并不太好,相对好一些的是Datastax自己上面的一个版本。但还是缺乏一个完整详尽的介绍。而MongoDB的文档相对来说比较完整而成体系。在其官方网站上你就能看到结构明了的文档了,而且多语言版本也都在跟进翻译中。

5.社区活动

这方面MongoDB做得非常出色,几乎可以用技术营销经典案例来形容。在去年一年,MongoDB相关的会议就举行了40场。相信在国内的很多朋友还记得在北京举行的Mongo Beijing。而Cassandra的活动更多的是自发进行的。

6.第三方客户端

这也是boxedice选择MongoDB的另一个原因,MongoDB拥有非常广泛的客户端支持,几乎所有流行语言都有其操作客户端。而且这些客户端几乎都是由10gen官方开发并维护的。而Cassandra仅有Java和Python的官方客户端,剩下的都是一些自发的第三方客户端

来源:blog.boxedice.com

anyShare一切看了好文章不转的行为,都是耍流氓!
          

无觅相关文章插件,快速提升流量

  1. 许多关于Cassandra的描述都是过时的, 有点误导. 比如商业支持, 有DataStax.
    技术描述也是旧的. Cassandra从0.8开始支持组合索引, 从1.1 (CQL3.0) 支持 Composite Primary Key.

    -木匠