我只是想知道hbase,cassandra,couchdb和monogodb之间是否存在根本区别?换句话说,他们是否都在完全相同的市场中竞争,并试图解决完全相同的问题.或者它们在不同情况下最适合?
这一切都是问题所在,我应该选择什么时候.品味问题?
谢谢,
费德里科
这些是来自@Bohzo的长篇答案.(但它们是很好的链接)
事实是,他们"有点"竞争.但他们肯定有不同的优点和缺点,他们绝对不能解决同样的问题.
例如,Couch和Mongo都提供Map-Reduce引擎作为主包的一部分.HBase(基本上)是Hadoop顶层的一层,所以你也可以通过Hadoop获得MR.Cassandra非常注重成为一个Key-Value商店,并且有一些插件可以将Hadoop"分层"到顶层(所以你可以map-reduce).
一些DB提供MVCC(多版本并发控制).Mongo没有.
所有这些DB都旨在水平扩展,但它们以不同的方式实现.所有这些DB也试图以不同的方式提供灵活性.灵活的文档大小或REST API或高冗余或易用性,他们都在做出不同的权衡.
那么对于你的问题:换句话说,他们是否都在完全相同的市场竞争并试图解决完全相同的问题?
是的:他们都试图解决数据库可扩展性和性能问题.
不,他们肯定会做出不同的权衡取舍.
你应该从什么开始?
伙计,这是一个棘手的问题.我在一家大公司工作,推动大量数据,我们已经度过了几年.几年前我们尝试过Cassandra,它无法处理负载.我们到处都在使用Hadoop,但它肯定有一个陡峭的学习曲线,并且在我们的某些环境中没有成功.最近我们尝试过Cassandra + Hadoop,但结果却是很多配置工作.
就个人而言,我的部门正在向MongoDB转移几件事.我们的理由是诚实,只是简单.
在Linux机器上设置Mongo需要几分钟,并且不需要root访问权限或更改文件系统或任何花哨的东西.没有疯狂的配置文件或java重新编译需要.因此,从这个角度来看,Mongo一直是让人们进入KV/Document商店的最简单的"门户药物".
CouchDB和MongoDB是文档存储
Cassandra和HBase是基于键值的
以下是HBase和Cassandra之间的详细比较.
这是MongoDB和CouchDB之间的(有偏见的)比较
简短回答:在生产中使用之前进行测试.
我可以提供我的HBase(广泛)和MongoDB(刚开始)的经验.
尽管它们不是同一类商店,但它们解决了同样的问题:
可扩展的数据存储
随机访问数据
低延迟访问
起初我们对HBase非常热衷.它建立在Hadoop(坚如磐石)之上,它在Apache下,它是活跃的...你还想要什么?我们的经验:
HBase很脆弱
管理员的噩梦(完整的配置设置,默认配置不完美,不透明的配置,从版本到版本的变化,......)
丢失数据(除非你已经设置了X配置并将Y更改为......你明白了:) - 我们发现当HBase崩溃时我们丢失了2小时(!!!)数据,因为WAL设置不正确
缺乏二级指标
缺少任何方法来执行数据库备份而不关闭它
总而言之,HBase是一场噩梦.除了我们的直接竞争对手之外,不会向任何人推荐它.:)
MongoDB解决了所有这些问题以及更多问题.设置是一种乐趣,它使管理它成为一个简单而透明的工作,默认配置设置实际上是有意义的.您可以执行(热)备份,也可以使用二级索引.根据我的阅读,我不建议在MongoDB上使用MapReduce(JavaScript,每个节点只有1个线程),但你可以使用Hadoop.
与HBase相比,它也非常活跃.
另外:http://www.google.com/trends? q = HBase%2CMongoDB
需要我多说?:)
更新:几个月后,我必须说明所有帐户都提供了MongoDB.唯一真正的缺点是托管公司不提供它提供MySQL的方式.;)看起来MapReduce也必然会成为2.2中的多线程.不过,我不会这样使用MR.因人而异.