1 回答

TA貢獻(xiàn)10條經(jīng)驗(yàn) 獲得超2個(gè)贊
兩個(gè)都用過(guò),學(xué)過(guò),雖然是NoSQL,但是它們從本質(zhì)上完全不同(想了解各種不同的NoSQL,推薦看老Martin的NoSQL Distilled這本書)。這里只點(diǎn)出最重要的不同:數(shù)據(jù)的集中和分散
HBase基于Big Table,和Hadoop MapReduce完美integrate,數(shù)據(jù)組織以支持scan為最優(yōu)先(rowkey 按大小排序分region,所以相近的rowkey必然在相同的region server上),甚至每一個(gè)get操作的內(nèi)部實(shí)現(xiàn)都是scan。所以你的應(yīng)用場(chǎng)景需要大量scan操作 或者需要經(jīng)常配合MapReduce,而random access數(shù)據(jù)為輔助手段,那么HBase是你的絕佳選擇。
Cassandra基于我司的Dynamo,強(qiáng)調(diào)自由配置CAP中的C(consistance)和A(availability),強(qiáng)調(diào)讀寫的分散(由于數(shù)據(jù)都用Distibute Key散列到了不同host,所以相近的Distibute key很大幾率散列到不同的host上,這里取決于你的hash算法,這里只說(shuō)大多數(shù)情況)。這種storage model(consistent hash)決定了Cassandra的scan效率比HBase低,但是可以支持更高的并發(fā)寫與讀,并且高并發(fā)寫和讀可以在不同的配置的情況下在一個(gè)表上同時(shí)實(shí)現(xiàn)(由于讀寫的replica number是可以基于per request 定義的)如果你需要高并發(fā)可調(diào)節(jié)讀寫,scan需求少,那么Cassandra則比HBase更合適。
其他的不同就是各種feature了,比如cassandra支持用戶自定義multi version control,multi version conflict resolve,算是一個(gè)亮點(diǎn),而HBase貌似只支持multi version… cassandra的server是peer to peer的,完全不會(huì)有single point failure;而HBase則依賴于Master Server的協(xié)調(diào)… 等等
綜上所述,兩種NoSQL DB cover了兩種完全不同的data access pattern,他們倆 完全 不雷同。
至于國(guó)內(nèi)注重HBase?個(gè)人猜測(cè)嘛,還不是為了跟風(fēng)hadoop催的… 為人必提大數(shù)據(jù),提大數(shù)據(jù)必提hadoop,hadoop怎么存數(shù)據(jù)?HFile?那怎么random access? 然后...恩....
Canssandra提供了太多可調(diào)節(jié)的地方了,調(diào)不好可以比MySQL還慢…
添加回答
舉報(bào)