如何使用javascript aws-sdk支持dynamoDB中的事务?

ame*_*til 6 javascript amazon-web-services node.js amazon-dynamodb aws-sdk

我们有一个用node.js编写的微服务,我们使用dynamoDB进行数据存储.值以json格式存储在密钥中.在更新服务调用中,我们获取密钥的值,更新json并保存它.

最近,我们遇到了一个条件,其中2个调用想要更新相同密钥的值.所以先调用读取值,然后第二次调用读取值,首先调用更新并保存,然后第二次更新并保存值(通常情况下的竞争条件),所以在这种情况下,第一次调用更新没有反映在DB中.

为了解决这个问题,我研究了一下并了解了dynamoDB的事务库.但它似乎还没有在node-js sdk中.

此外,我搜索了版本控制和乐观锁定,但我再次在node-js sdk中找不到对此的支持.

有这个更新吗?如果它的支持在不久的将来不会出现在node-js sdk中,还有哪些其他选择呢?什么是处理这个问题的最佳方法?

Max*_*Max 10

  1. 您可以执行原子更新,例如直接在Dynamo上递增数字而无需读取,递增和更新.有关更多信息,请参阅

  2. 两个更新都更新相同的字段吗?如果是这样,您可以向更新添加一个条件,即旧值等于您读取的值.这样,如果您尝试保存第二个新值,则此条件将失败,并且不会执行第二次更新.看到这个


小智 5

刚刚于 2018 年 re:invent 发布,请在此处查看 javascript sdk 用法中的本机事务支持:https : //aws.amazon.com/blogs/aws/new-amazon-dynamodb-transactions/