如果应用程序大约同时在不同区域中更新同一项目,则可能会发生冲突。为了确保最终的一致性,DynamoDB全局表在并发更新之间使用“最后写入者获胜”调节,DynamoDB会尽最大努力确定最后写入者。通过这种冲突解决机制,所有副本将就最新更新达成一致,并收敛到它们都具有相同数据的状态。
这是AWS文档所说的。我不明白“最后作家获胜”政策如何导致一致的全球数据库?
例如
区域1获得写入顺序T1(设置为0)T2(设置为5) 区域2获得写入顺序T2(设置为5)T1(设置为0)
在2个地方以不同的顺序应用记录,最终结果不同。区域1的值为5,区域2的值为0。
这真的是DynamoDB的功能吗?
答案 0 :(得分:0)
我会说“不”。并非您所描述的那样。
冲突解决仅在以下情况下适用:T1是对区域1的直接写入,随后复制到区域2 ...而T2是近并发的 direct 写入区域2中的同一项目(不同数据),然后复制到区域1。
您描述的是最初发送到单个区域的写入的无序复制,这不是问题,因为复制本身是按顺序进行的。全局表复制使用D captures a time-ordered sequence of item-level modifications的DynamoDB流。
如果您的应用程序仅写入单个区域,则在这种意义上不会发生冲突,因为任何其他区域将始终按顺序看到更新 replicate 。
“最后一位作者获胜”是指直接复制到R2的更新T2通过复制到达R1时,R1看到T2的出现时间晚于T1,并将其应用到R1上……但是当更新直接写到R1的T1通过复制到达R2,R2认为它在时间上早于T2并丢弃了它(不适用于R2),因为T2是最后一次发生(在时间上)。>