試圖確定哪個最適合你,這取決於你將要使用它的原因,他們每個人都有自己的優勢,沒有更多的細節,它變得更像是一場宗教戰爭。你引用的這篇文章也超過了一年,從那以後都經歷了許多變化。請記住,我不熟悉最近的Cassandra開發。
話雖如此,我會轉述HBase的提交者安德魯Purtell,並添加了一些我自己的經驗:
HBase的是更大的生產環境中(1000個節點),雖然仍處於Cassandra的的球場〜400節點安裝,所以它真的是一個邊際差異。
HBase和Cassandra都支持羣集/數據中心之間的複製。我相信HBase更多地向用戶公開,所以它看起來更復雜,但是你也獲得了更多的靈活性。
如果強大的一致性是您的應用程序需要的,那麼HBase可能更適合。它從根本上設計爲一致。例如,它允許更簡單地實現原子計數器(我認爲Cassandra剛剛得到它們)以及Check和Put操作。
從我的理解來看,寫入性能非常好,這是Facebook使用HBase爲其使者的原因之一。
我不確定Cassandra的有序分區程序的當前狀態,但過去需要手動重新平衡。如果你願意,HBase會爲你處理。有序分區對於Hadoop風格處理非常重要。
Cassandra和HBase都很複雜,Cassandra只是把它隱藏得更好。如果你看看代碼庫Cassandra就像分層一樣,HBase通過使用HDFS來存儲更多的信息。如果你比較Dynamo和Bigtable的論文,你會發現Cassandra的操作理論實際上更復雜。
HBase有更多的單元測試FWIW。
所有Cassandra RPC都是Thrift,HBase擁有Thrift,REST和本地Java。 Thrift和REST只提供全部客戶端API的一部分,但如果您希望純粹的速度,那麼本地Java客戶端就在那裏。
對等和主從同時具有優勢。主 - 從設置通常使調試變得更容易,並降低了一些複雜性。
HBase並不僅限於傳統的HDFS,您可以根據自己的需要更換底層存儲。MapR看起來很有趣,我聽說過好東西,雖然我沒有用過它自己。
我很確定Facebook會因爲與模塊化軟件堆棧相關的其他原因在100個節點HBAse羣集中分片。在最近的一次演講中,來自Cloudera的Todd Lipcon提到[1PT 1000節點HBase簇](http://www.slideshare.net/cloudera/sf-nosql2011/58),並且我已經提到了700多個節點的HBase簇。 – cftarnas
好點。這也可能是特定工作負載。 – jbellis
上面有很多Cassandra的優點。但爲什麼Facebook最終選擇HBase而不是Cassandra? –