当前位置: 首页 > 知识库问答 >
问题:

如何在DynamoDB中处理最终一致的读取

平学
2023-03-14

用例:

每个用户都有一个项目列表。当在UI中创建一个新项目时,它会被添加到DynamoDB,然后再次获取整个列表,以显示新的结果。

问题是,在某些情况下,新添加的项不会出现在该列表中,这是基于索引(基于该用户ID的索引)的最终一致读取。

处理这种情况的正确方法是什么?

“item”表将“itemId”作为索引的主分区键,“userId”作为索引的主分区键(在读取列表时查询)。

共有1个答案

司徒河
2023-03-14

DynamoDB使用最终一致的读取,除非您另有指定。读取操作(如GetItem、Query和Scan)提供一致的读取参数。如果将此参数设置为true,则DynamoDB在操作期间使用强一致性读取。

 类似资料:
  • 使用CQRS和事件存储,微服务之间的编排提供了最终的一致性,其中一个微服务中的更改需要一点时间传播到其他相关的下游系统(本质上是其他微服务)。如果数据非常关键,以至于两个微服务都应该具有很强的数据一致性,那么有什么选择呢?我能想到的一个选择是像数据网格那样的直写缓存,但这非常脆弱,特别是在分布式系统中。

  • 你和我都想去听音乐会,但只剩下一张票了。我们都试图同时预订那张票。使用AWS SDK for PHP的PHP脚本运行以下updateItem API调用,该调用试图将“票据”的“状态”从0(可用)更改为1(保持)。 对于这个用例,这是正确的方法吗? 有人看过DynamoDB文档吗? 如果这是一个正确的实现,对测试方案有什么建议吗?

  • 希望创建一个DynamoDB全局表来存储客户信息。我的问题是,我目前的模式是监听此表上的更改,并使用Lambda触发器发送电子邮件更新。 i、 e.您的个人资料信息已更改。如果不是你。。 我现在是否需要在每个区域中使用该Lambda?数据复制是否意味着每个区域都会触发该Lambda?

  • 我正在开发一个GAE web应用程序,我需要在没有祖先关系的两个实体的实例之间创建和删除关联(还要考虑同一个实例可能有多个关联,这些关联可能随时间变化,而祖先关系一旦创建,就无法删除)。我经历过“最终一致性”策略,这意味着我的网页中的数据不能与我正在创建/删除的关系一致地刷新。然而,我已经看到,通过两次执行put()方法,一致性似乎是强制的。 这符合“最终一致性”定义,该定义规定“…如果没有进行新

  • 我们有一个DynamoDb表,其中一个列名“createdAt”有时创建为S(String)数据类型,有时创建为N(Number)数据类型。 在我的代码中,如果我定义为String,当我想获取数据时它会失败,它是数字: 如果我定义为Number,当我想获取数据并且它是表中的字符串时失败: 你们有没有人以前也有过同样的问题?应该有办法解决它对吗?并且不能只选择一种数据类型:(

  • 这是一个正在使用AWS开发的项目。 我已经使用CloudWatch中的cron表达式安排了lambda函数。该函数将每天上传项目到DynamoDB。 尽管有一个唯一的主键,但有些项目没有上传到Dynamodb。有时跳过连续项,有时跳过主键稍相似的项。通常,跳过的项目数少于20个。 当我再次手动运行lambda函数时,它完全可以工作。想知道这背后的原因,可能的解决方案。谢谢!