尝试确定哪个最适合您实际上取决于您将使用它的目的,它们各有优势,如果没有更多细节,它就更像是一场宗教战争。你引用的那篇文章也有一年多的历史,从那时起都经历了很多变化。还请记住,我不熟悉 Cassandra 最近的发展。
话虽如此,我将解释 HBase 提交者 Andrew Purtell 并添加一些我自己的经验:
HBase 处于较大的生产环境(1000 个节点)中,尽管这仍然在 Cassandra 的约 400 个节点安装的范围内,所以它确实是一个边际差异。
HBase 和 Cassandra 都支持集群/数据中心之间的复制。我相信 HBase 向用户展示了更多内容,因此它看起来更复杂,但您也获得了更大的灵活性。
如果您的应用程序需要强一致性,那么 HBase 可能更适合。它从一开始就被设计成一致的。例如,它允许更简单地实现原子计数器(我认为 Cassandra 刚刚得到它们)以及 Check 和 Put 操作。
写入性能很棒,据我了解,这也是 Facebook 选择 HBase 作为其 Messenger 的原因之一。
我不确定 Cassandra 有序分区器的当前状态,但在过去它需要手动重新平衡。如果您愿意,HBase 会为您处理。有序分区器对于 Hadoop 风格的处理很重要。
Cassandra 和 HBase 都很复杂,Cassandra 只是更好地隐藏了它。HBase 通过使用 HDFS 进行存储来更多地公开它,如果您查看代码库 Cassandra 也是分层的。如果您比较 Dynamo 和 Bigtable 的论文,您会发现 Cassandra 的操作理论实际上更复杂。
HBase 有更多的单元测试 FWIW。
所有的 Cassandra RPC 都是 Thrift,HBase 有 Thrift、REST 和原生 Java。Thrift 和 REST 仅提供整个客户端 API 的一个子集,但如果您想要纯速度,则可以使用本机 Java 客户端。
对等和主从都有优势。主从设置通常使调试更容易,并降低了相当多的复杂性。
HBase 不仅仅与传统的 HDFS 绑定,您可以根据需要更改底层存储。MapR看起来很有趣,虽然我自己没有使用过,但我听说了一些好东西。