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