我一直在阅读 Nathan Marz关于如何使用 Lambda 架构击败 CAP 定理的文章,但我不明白不可变数据如何降低最终一致性的复杂性。
以下段落摘自文章:
关键是数据是不可变的。不可变数据意味着没有更新之类的东西,因此一条数据的不同副本不可能变得不一致。这意味着没有分歧值、矢量时钟或读取修复。从查询的角度来看,一条数据要么存在,要么不存在。该数据上只有数据和功能。您无需执行任何操作来强制执行最终一致性,并且最终一致性不会妨碍对系统进行推理。
想象一下下面的例子:我有一个分布式的仅插入数据库,有两个节点 A 和 B 并且都保存记录[timestamp=1; id=1; value=10]
。然后同时,对节点 A 进行插入,导致[timestamp=2; id=1; value=20]
对节点 B 进行读取以获取记录id=1
。
与具有更新可能性的数据库相比,该示例解决最终一致性问题的复杂性如何?