我们有一个用 Node.js 编写的微服务,并使用 dynamoDB 进行数据存储。值以 json 格式存储在键中。在更新服务调用中,我们获取键的值,更新 json 并保存它。
最近,我们遇到了两个调用想要更新同一个键的值的情况。因此,第一次调用读取值,然后第二次调用读取值,第一次调用更新并保存,然后第二次更新并保存值(通常是竞争条件的情况),因此在这种情况下,第一次调用的更新不会反映在数据库中。
为了解决这个问题,我进行了一些研究并了解了 dynamoDB 的事务库。但node-js sdk中似乎还没有。
另外,我搜索了有关版本控制和乐观锁定的信息,但我再次没有在 node-js sdk 中找到对此的支持。
这有什么更新吗?如果 Node-js sdk 近期不会支持它,那么还有其他选择吗?处理这个问题的最佳方法是什么?
您可以进行原子更新,例如直接在 Dynamo 上递增数字,而无需读取、递增、更新。欲了解更多信息,请参阅this
两次更新是否更新相同的字段?如果是这样,您可以在更新中添加一个条件,即旧值等于您读取的值。这样,如果您尝试保存第二个新值,此条件将失败,并且不会执行第二次更新。看this
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)