如何使用 javascript aws-sdk 支持 dynamoDB 中的事务?
How to support transactions in dynamoDB with javascript aws-sdk?
我们有一个用 node.js 编写的微服务,我们使用 dynamoDB 进行数据存储。值以 json 格式针对键存储。在更新服务调用中,我们获取一个键的值,更新 json 并保存它。
最近,我们遇到了 2 个调用想要更新同一个键的值的情况。所以第一次调用读取值,然后第二次调用读取值,第一次调用更新并保存,然后第二次更新并保存值(竞争条件的通常情况),所以在这种情况下,第一次调用的更新没有反映在数据库中。
为了解决这个问题,我研究了一下并了解了 dynamoDB 的事务库。但是好像还没有在node-js sdk中。
此外,我搜索了关于版本控制和乐观锁定的信息,但我再次没有在 node-js sdk 中找到对此的支持。
这个有更新吗?如果它的支持不会在不久的将来出现在 node-js sdk 中,那么其他选择是什么?处理此问题的最佳方法是什么?
最近有一个 npm 包提供了 DynamoDb 乐观锁定的实现。参见 Dynameh。你可以看看。
2018 年刚刚发布 re:invent,请在此处查看 javascript sdk 用法中的本机事务支持:https://aws.amazon.com/blogs/aws/new-amazon-dynamodb-transactions/
我们有一个用 node.js 编写的微服务,我们使用 dynamoDB 进行数据存储。值以 json 格式针对键存储。在更新服务调用中,我们获取一个键的值,更新 json 并保存它。
最近,我们遇到了 2 个调用想要更新同一个键的值的情况。所以第一次调用读取值,然后第二次调用读取值,第一次调用更新并保存,然后第二次更新并保存值(竞争条件的通常情况),所以在这种情况下,第一次调用的更新没有反映在数据库中。
为了解决这个问题,我研究了一下并了解了 dynamoDB 的事务库。但是好像还没有在node-js sdk中。
此外,我搜索了关于版本控制和乐观锁定的信息,但我再次没有在 node-js sdk 中找到对此的支持。
这个有更新吗?如果它的支持不会在不久的将来出现在 node-js sdk 中,那么其他选择是什么?处理此问题的最佳方法是什么?
最近有一个 npm 包提供了 DynamoDb 乐观锁定的实现。参见 Dynameh。你可以看看。
2018 年刚刚发布 re:invent,请在此处查看 javascript sdk 用法中的本机事务支持:https://aws.amazon.com/blogs/aws/new-amazon-dynamodb-transactions/