Amazon web services Dynamodb缺少具有并发请求的更新?

Amazon web services Dynamodb缺少具有并发请求的更新?,amazon-web-services,amazon-dynamodb,Amazon Web Services,Amazon Dynamodb,我在一次多次更新单个项目时遇到问题。如果我多次尝试使用新属性更新项目,如下所示: UpdateExpression:'SET attribute.#uniqueId=:newAttribute' 并不是所有的更新都能通过。我尝试发送20个具有唯一ID的更新,结果只有15个新属性。这也发生在我的本地dynamodb实例中。我假设在“最后一次更新获胜”的场景中,更新以某种方式相互覆盖,但我不确定。如何解决这个问题?DynamoDB最终在更新时是一致的,所以“竞争条件”是可能的。如果您想在写入中使用更

我在一次多次更新单个项目时遇到问题。如果我多次尝试使用新属性更新项目,如下所示:

UpdateExpression:'SET attribute.#uniqueId=:newAttribute'


并不是所有的更新都能通过。我尝试发送20个具有唯一ID的更新,结果只有15个新属性。这也发生在我的本地dynamodb实例中。我假设在“最后一次更新获胜”的场景中,更新以某种方式相互覆盖,但我不确定。如何解决这个问题?

DynamoDB最终在更新时是一致的,所以“竞争条件”是可能的。如果您想在写入中使用更严格的逻辑,请查看

在事务处理期间,项目不会被锁定。DynamoDB事务 提供可序列化的隔离。如果一个项目是在项目外部修改的 事务当事务正在进行时,事务将被删除 已取消,并引发一个异常,其中包含有关哪个项目或项目的详细信息 项目导致了异常


您的观察非常有趣,并且与过去在和中所做的观察相矛盾-在这些问题中,人们观察到对不同集合项或不同顶级属性的并发写入似乎不会被覆盖。不过,这两种情况都与您测试的情况(嵌套属性)不完全相同,因此这并不是您的测试有问题的确切证据,但仍然令人惊讶


DynamoDB开发人员在过去所做的演示表明,DynamoDB中的写操作发生在单个节点(分区的指定“领导者”)上,并且该节点可以序列化并发写操作。这种序列化需要允许条件更新、计数器增量等安全地处理并发写入。据推测,相同的序列化还可以允许同时安全地修改多个子属性。如果没有,则可能意味着对某些更新(可能是所有无条件更新(没有条件表达式))故意禁用此序列化。这是非常令人惊讶的,亚马逊应该对此进行记录…

谢谢,使用
Transact-Write
似乎已经解决了我的问题。是的,我同意应该有更多关于这方面的信息。我希望能够并行更新单独的属性,而不会出现覆盖问题。