AWS DynamoDB 条件写入幂等

问题描述 投票:0回答:1

AWS DynamoDB 的文档写道:

条件写入幂等性 如果条件检查针对正在更新的同一属性,则条件写入可以是幂等的。这意味着仅当项目中的某些属性值与您在请求时期望的值匹配时,DynamoDB 才会执行给定的写入请求。

例如,假设您发出

UpdateItem
请求,将某项的
Price
加 3,但前提是
Price
当前为 20。在发送请求之后但在返回结果之前,网络错误,不知道请求是否成功。由于此条件写入是幂等的,因此您可以重试相同的
UpdateItem
请求,并且仅当
Price
当前为 20 时,DynamoDB 才会更新项目。

最后一句话让我感到困惑。如果在错误期间,另一个无条件请求发送到服务器并且

Price
已更新,例如,将
Price
增加1,那么,
Price
从20增加到21,该怎么办?还假设在发出将 Price 增加 3 的条件请求之后发送了无条件
更新请求。

在这种情况下,据我了解,重试

conditional 请求不应将 Price

 增加到 23,因为 
current Price
 现在是 21 而不是 20。但是,如果没有错误,那么我们应该预计 
Price
 为 24 而不是 23。

那么,假设我的理解是正确的,对于同一组操作,我们会得到两种不同的最终结果,即一种是有条件的,一种是无条件的,在两种情况下,一种没有错误,一种有错误?

消除我对 AWS DynamoDB 幂等操作的困惑。

database amazon-dynamodb idempotent
1个回答
0
投票
但无论如何你都会得到你想要的结果。

您想增加 1,但前提是该值当前为 20。如果是,则成功,否则失败,无论重试如何。

您发送无条件更新来改变项目的事实改变了场景,但以预期的方式。

您的条件检查请求仍然是幂等的,只有在价格为 20 时才会执行。

© www.soinside.com 2019 - 2024. All rights reserved.