1. 程式人生 > >dynamo和cassandra區別

dynamo和cassandra區別


1 如何處理副本的一致性。

cassandra:採用最後寫入獲勝。當有多個版本的資料存在時,以時間戳大的值為準。
Dynamo:使用向量時鐘(vector lock)。為資料保持一個時鐘列表,其中的每個元素是(更新值的節點,序列號),見下圖。
 
圖 向量時鐘處理多個版本的一致性
2 負載均衡
使用一致性hash來分佈資料可能會導致資料分佈不均勻。
dynamo:使用虛擬節點技術,一個物理節點可能在環上對應多個節點。

cassandra:分析節點的負載,移動節點在環上的位置。

3 hinted handoff
dynamo:用來處理節點暫時的失效。如某個節點A 異常,若此時有寫操作,則資料會臨時的寫入另外一個節點B上,待A節點恢復後,把資料寫入到恢復健康的節點A。這個操作會在寫入成功的節點數中計數【注: R/W請求中都會帶一個引數,表示R/W操作涉及到的最小副本數】,在A節點恢復之前,讀操作也可以從B節點上讀取,並且會計數。而在cassandra中,在B節點上進行讀寫操作,都不會計數,所以在cassandra中,hinted handoff只用來加速節點的恢復。

4 底層的儲存模型
cassandra:採用bigtable的儲存模型,表分為多個列族,每個列族由memtable和sstable files組成。
dynamo:沒有公開的文件顯示其儲存模型。