HBase | Cassandra |
---|
HBase 基于 Bigtable (Google) | Cassandra 基于 DynamoDB (Amazon)。它最初由前 Amazon 工程师在 Facebook 开发。 这也是 Cassandra 支持多数据中心的原因之一。 |
HBase 使用 Hadoop 基础设施 (Zookeeper、NameNode、HDFS)。 部署 Hadoop 的组织必须具备 Hadoop 和 HBase 的知识 | Cassandra 起源于 Hadoop 之外并与其基础设施分开演进,并且其操作知识要求与 Hadoop 不同。 但是,对于分析,许多 Cassandra 部署使用 Cassandra + Storm(使用 zookeeper),和/或 Cassandra + Hadoop。 |
HBase-Hadoop 基础设施有几个“活动部件”,包括 Zookeeper、Name Node、HBase 主节点和数据节点,Zookeeper 是集群的并且本质上具有容错能力。 Name Node 需要集群才能实现容错。 | Cassandra 使用单个节点类型。 所有节点都是平等的并执行所有功能。 任何节点都可以充当协调器,确保没有单点故障。 当然,添加 storm 或 Hadoop 会增加基础设施的复杂性。 |
HBase 非常适合执行基于范围的扫描。
| Cassandra 不支持基于范围的行扫描,这在某些用例中可能会受到限制。 |
HBase 提供了通过广域网异步复制 HBase 集群的功能。 | Cassandra 的随机分区提供了跨广域网的单行行复制。 |
HBase 仅支持有序分区。 | Cassandra 官方支持有序分区,但由于它创建的“热点”以及这些热点引起的操作困难,没有 Cassandra 的生产用户使用有序分区。 |
由于有序分区,HBase 将很容易横向扩展,同时仍支持 Rowkey 范围扫描。 | 如果数据存储在 Cassandra 的列中以支持范围扫描,则 Cassandra 中行大小的实际限制是几十兆字节。 |
HBase 支持原子比较和设置。 HBase 支持行内的事务。 | Cassandra 不支持原子比较和设置。 |
HBase 不支持针对单行的读取负载均衡。 单行一次只由一个区域服务器提供服务。 | Cassandra 将支持针对单行的读取负载均衡。 |
Bloom 过滤器可以在 HBase 中用作另一种索引形式。 | Cassandra 使用布隆过滤器进行键查找。 |
触发器由 HBase 中的协处理器功能支持。 | Cassandra 不支持类似协处理器的功能。 |