我将dynamodb与python api一起使用,并对我的数据进行非规范化,以保持快速读取。我担心在更新数据时保持一致性,比如我有一个用户表,每个用户有一个密钥和一个名称,一个采购表每个用户有一个密钥和一个包含买方密钥(用户)和买方名称的数据。
我想更新用户的姓名,并使用原子操作更新所有购买的物品,如firebase中提供的(多路径更新)解释here
我该怎么做?
谢谢

最佳答案

这里有一个很好的dynamodb transaction文档。
以下是博客文章的一些亮点。
dynamodb支持事务处理能力across multiple table(即,仅当prev_snapshot=1223232时才插入order表,这将确保只修改最后读取的数据。)
有两种类型的get支持transactingitems和最终/强一致的getitem。在can also have pre-condition on every insert中。而在其他两种情况下,最后提交的数据将根据一致性要求返回。
如果其他线程正在无事务地写入表,并且如果在事务完成之前写入成功,则事务不是锁,并且将在事务上引发异常。
在单个区域表上启用事务不需要额外的步骤/权限。
使用事务性功能的每次读写操作的成本将翻一番。
以下是不支持的功能
TransactGetItems, if a transaction is in progress the request is rejected。但这可以通过请求粘性来避免,并且在imo中不应该是一个大问题。

08-08 01:42
查看更多