1

对于一个独特的商品销售数据库,如果我们使用顺序一致性,我们可以保证,例如,这个独特的商品永远不会卖给不同的人。因果一致性能保证我们吗?连续和因果一致性

如果有一些销售开始/结束的同时会破坏系统吗?

由于物品是唯一的,我们只能出售每件物品中的一件。

谢谢

回答

0

Causual一致性保证您,如果两个事件是随便相关,每个人都将他们发生的顺序上达成一致。它允许对事件的顺序意见不一致(或“同时”)。

购买由系统中不同节点执行的项目的两次尝试可能不会与因果相关 - 买方B几乎肯定不会尝试购买项目,因为他已经看到买方A已经买了它。在一个事实上一致的系统中,这意味着这两个事件是同时发生的,系统中的不同节点可能不同意他们的相对顺序 - A可能认为她的购买尝试是第一个成功的,B可能相信同样的事情。

您可以强制两次购买尝试与一些额外的最终性因果关系。让买家直接购买物品,而不是让他们写一条记录,表明他们希望购买物品。指定一个节点作为该项目的“所有者”。每当它看到一个购买欲望记录时,它就会读取该项目的当前状态,并且 - 如果它是可用的 - 将其出售给给定购买者。购买者观看该物品,看它是卖给他们还是卖给其他人。

这建立了两个事件之间的顺序:要么是所有者首先看到A的记录并将其卖给她,要么先看B的记录并将其卖给他。这两个事件并不是因果相关的,因此其他节点可能会以相反顺序看到记录,但这很好 - 他们的意见不计算在内,只有业主的意见。所有者的第二次阅读(应该看到该项目已被出售)与之前的写作相关,因为它们是在同一节点上执行的,因此我们保证它只会出售该项目一旦。