下表說(shuō)明了Cassandra和HBase之間的主要區(qū)別:
| HBase | Cassandra |
|---|---|
| HBase是基于Bigtable(Google) | Cassandra基于DynamoDB(亞馬遜)。 它最初是由前亞馬遜工程師在Facebook開(kāi)發(fā)的。 這是Cassandra支持多數(shù)據(jù)中心的原因之一。 |
| HBase使用Hadoop基礎(chǔ)架構(gòu)(Zookeeper,NameNode,HDFS)。 部署Hadoop的組織必須具備Hadoop和HBase的知識(shí)。 | Cassandra與Hadoop分開(kāi)開(kāi)發(fā),其基礎(chǔ)工具和操作知識(shí)的要求與Hadoop不同。 然而,對(duì)于分析,許多Cassandra部署使用Cassandra + Storm(使用zookeeper)和/或Cassandra + Hadoop。 |
| HBase-Hadoop基礎(chǔ)工具有幾個(gè)由Zookeeper,Name Node,HBase master和數(shù)據(jù)節(jié)點(diǎn)組成的“移動(dòng)部件”,Zookeeper是集群的,自然是容錯(cuò)的。名稱節(jié)點(diǎn)需要集群為容錯(cuò)。 | Cassandra使用單個(gè)節(jié)點(diǎn)類型。 所有節(jié)點(diǎn)相等并執(zhí)行所有功能。 任何節(jié)點(diǎn)都可以作為協(xié)調(diào)器,確保沒(méi)有Spof。 添加Storm或Hadoop當(dāng)然會(huì)增加基礎(chǔ)設(shè)施的復(fù)雜性。 |
| HBase非常適合進(jìn)行基于范圍的掃描。 | Cassandra不支持基于范圍的行掃描,這可能在某些用例中是有限制的。 |
| HBase提供跨越一個(gè)HBase集群的異步復(fù)制。 | Cassandra隨機(jī)分區(qū)提供了跨越單行的行復(fù)制。 |
| HBase僅支持有序分區(qū)。 | Cassandra正式支持有序分區(qū),但Cassandra沒(méi)有生產(chǎn)用戶使用有序分配,由于“熱點(diǎn)”創(chuàng)建并操作困難等熱點(diǎn)引起。 |
| 由于有序分區(qū),HBase可以輕松地水平放置,同時(shí)還支持Rowkey范圍掃描。 | 如果數(shù)據(jù)存儲(chǔ)在Cassandra的列中以支持范圍掃描,Cassandra中行大小的實(shí)際限制是10兆字節(jié)。 |
| HBase支持原子比較和設(shè)置,HBase支持一行內(nèi)的事務(wù)。 | Cassandra不支持原子比較和設(shè)置。 |
| HBase不支持單行讀取負(fù)載平衡,一行只有一個(gè)區(qū)域服務(wù)器一次提供。 | Cassandra將支持單行讀取負(fù)載平衡。 |
| Bloom過(guò)濾器可用于HBase作為另一種形式的索引。 | Cassandra使用bloom過(guò)濾器進(jìn)行鍵查找。 |
| 觸發(fā)器由HBase中的協(xié)處理器功能支持。 | Cassandra不支持協(xié)處理器功能。 |