繁体   English   中英

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

[英]How to support transactions in dynamoDB with javascript aws-sdk?

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

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

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

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

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

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

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

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

最近有一个npm包提供了DynamoDb乐观锁定的实现。 Dynameh 你可以检查一下。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM