DynamoDB的写入一致性能保证事务性写入吗



我的web服务中有一个事务系统。基本上,你可以在账户之间来回发送(假(货币
这需要一个强一致的写入模型。这就是我担心的情况。A有0美元B有0美元C有100美元。C发送100加元的余额目前正在更新中。在更新传播到所有dynamoDB节点之前,C向B发送100$,因为在另一个实例中,他的余额仍然是100$。现在C有-100美元的余额,a和B都有100美元。这将是一个无效状态
由于这种情况需要一致的读取和写入(以检查和更新余额(,因此dynamoDB写入适合这种情况吗?

我不是DynamoDB专家,但我几乎可以肯定你能做到。

要实现此功能,请确保在UpdateItem请求中使用ConditionExpression功能。这样你就可以避免你所说的话。

DynamoDB中的读取是";最终一致";,因此,正如你所说,读者可能会认为";C有$100";就在你改变了C的平衡之后。然而,我非常确信使用条件表达式,你可以完全保证你永远不会进入这种糟糕的状态。您可以将更新请求构造为一个完全原子化的操作,除非满足以下条件,否则不会执行:;仅当C的余额>=$100〃;。DynamoDB可以为您原子化地执行更新,从而防止出现问题。

第页。看看这个演讲。如果我没记错的话,演讲者涵盖了一些与此相关的话题。

最新更新