dynamodb 更新非规范化数据并保持一致性

dynamodb update denormalized data and keep consistency

我将 dynamodb 与 python API 一起使用并对我的数据进行非规范化以保持快速读取。我的想法是我担心在更新数据时保持一致性说我有 table 个用户,每个用户都有一个密钥和一个名称,table 个购买每个都有一个密钥和一个包含买家密钥(用户)和买家姓名的数据。

我想更新用户的姓名并使用原子操作更新他的所有购买,就像在 firebase 中可用(多路径更新)解释的那样here

我该怎么做?

谢谢

这是 dynamodb transaction 的一个很好的文档。

以下是博客的一些亮点 post。

  1. Dynamodb 支持事务功能 across multiple table,您 can also have pre-condition on every insert(即仅当 prev_snapshot=1223232 时才插入订单 table,这将确保您只是在修改最后读取的数据。)

  2. 有 2 种类型的获取支持 TransactGetItems 和 Eventual/Strongly 一致的 GetItem。在TransactGetItems, if a transaction is in progress the request is rejected。而在其他 2 种情况下,根据您的一致性要求返回最后提交的数据。

  3. 如果其他线程正在写入一个没有事务的table,事务不是锁,如果在事务完成之前写入成功,事务将抛出异常。

  4. 无需额外 steps/permissions 即可在单个区域 table 上启用交易。

  5. 使用事务功能时,每次读写的成本都会翻倍。

以下是不支持的功能

  1. Transactional capabilities in global table。但这可以通过请求粘性来避免,在我看来应该不是一个大问题。