我一直在閱讀Nathan Marz的'article關於如何用Lambda架構擊敗CAP定理,並不明白不變數據如何使最終一致性更簡單。不可變數據如何使最終一致性變得微不足道?
以下段落從文章採取:
的關鍵在於數據是不可變的。不可變的數據意味着沒有更新這樣的事情,所以一塊數據的不同副本不可能變得不一致。這意味着沒有發散值,矢量時鐘或讀取修復。從查詢的角度來看,一段數據存在或不存在。數據上只有數據和功能。你不需要做任何事情來強化最終的一致性,最終的一致性不會妨礙系統的推理。
想象一下下面的例子:我有一個分佈式插入數據庫,它有兩個節點A和B,兩者都保存記錄[timestamp=1; id=1; value=10]
。然後與此同時,針對節點A的插入導致[timestamp=2; id=1; value=20]
以及針對節點B的讀取以用於記錄id=1
。
與具有更新可能性的數據庫相比,如何解決與該示例相比最終一致性問題更簡單的問題?