我只是想知道 hbase、cassandra、couchdb 和 monogodb 之间是否存在根本区别?换句话说,他们是否都在完全相同的市场上竞争并试图解决完全相同的问题。或者它们最适合不同的场景?
这一切都引出了一个问题,我应该在什么时候选择。口味问题?
谢谢,
费德里科
这些是@Bohzo的一些长答案。(但它们是很好的链接)
事实是,他们“有点”竞争。但是它们肯定有不同的优点和缺点,而且它们肯定不会都解决相同的问题。
例如,Couch 和 Mongo 都提供 Map-Reduce 引擎作为主包的一部分。HBase(基本上)是 Hadoop 之上的一层,因此您也可以通过 Hadoop 获得 MR。Cassandra 高度专注于作为一个键值存储,并具有在顶部“分层”Hadoop 的插件(因此您可以映射减少)。
一些 DB 提供 MVCC(多版本并发控制)。蒙哥没有。
所有这些数据库都旨在水平扩展,但它们以不同的方式进行。所有这些数据库还试图以不同的方式提供灵活性。灵活的文档大小或 REST API 或高冗余或易用性,它们都在做出不同的权衡。
所以对于您的问题:换句话说,他们是否都在完全相同的市场上竞争并试图解决完全相同的问题?
你应该从什么开始?
伙计,这是一个棘手的问题。我在一家推动大量数据的大公司工作,我们已经经历了几年。几年前我们曾尝试过 Cassandra,但它无法处理负载。我们到处都在使用 Hadoop,但它肯定有一个陡峭的学习曲线,而且在我们的某些环境中还没有奏效。最近我们尝试做 Cassandra + Hadoop,但结果证明是很多配置工作。
就个人而言,我的部门正在将几件事转移到MongoDB。老实说,我们这样做的原因只是简单。
在 linux 机器上设置 Mongo 需要几分钟,并且不需要 root 访问权限或更改文件系统或任何花哨的东西。不需要疯狂的配置文件或 java 重新编译。所以从这个角度来看,Mongo 一直是让人们进入 KV/Document 存储的最简单的“门户药物”。
简短的回答:在生产中使用之前进行测试。
我可以提供我在HBase(广泛)和MongoDB(刚刚开始)方面的经验。
尽管它们不是同一种商店,但它们解决了相同的问题:
一开始我们对 HBase 非常感兴趣。它建立在 Hadoop 之上(坚如磐石),它在 Apache 之下,它是活跃的......你还想要什么?我们的经验:
总而言之,HBase 是一场噩梦。除了我们的直接竞争对手,不会向任何人推荐它。:)
MongoDB 解决了所有这些问题以及更多问题。设置是一种乐趣,它使管理它成为一项简单而透明的工作,并且默认配置设置实际上很有意义。您可以执行(热)备份,您可以拥有二级索引。根据我的阅读,我不推荐在 MongoDB 上使用 MapReduce(JavaScript,每个节点仅 1 个线程),但您可以使用 Hadoop。
与 HBase 相比,它也非常活跃。
另外: http ://www.google.com/trends?q=HBase%2CMongoDB
需要我多说?:)
更新:几个月后,我必须说 MongoDB 已交付给所有帐户等等。唯一真正的缺点是托管公司不像他们提供 MySQL 那样提供它。;) 看起来 MapReduce在 2.2中必然会成为多线程。不过,我不会以这种方式使用 MR。YMMV。
这是 HBase 和 Cassandra 之间的详细比较
这是 MongoDB 和 CouchDB 之间的(有偏见的)比较
Cassandra 非常适合写入数据。它具有“写入永不失败”的优势。它没有单点故障。
HBase 非常适合数据处理。HBase 基于 Hadoop 文件系统 (HDFS),因此 HBase 无需担心数据复制、数据一致性。HBase 有单点故障。我不确定如果它有单点故障是什么意思,那么它与我们有单点故障的 RDBMS 有点相似。我可能是错误的,因为我很新。
RIAK 怎么样?有人有使用 RIAK 的经验吗?我在一些你需要支付的地方涂红了,我不确定。需要解释。
当您只关心读取大量数据时,您更喜欢使用另一件事。你对写作没有任何顾虑。试想一下,您有一个带有 pitabyte 的数据库,并且您想快速搜索您更喜欢哪个 NOSQL 数据库?