【发布时间】:2023-03-23 01:24:01
【问题描述】:
在 DynamoDb 中,默认情况下使用全局二级索引的读取最终是一致的:https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GSI.html#GSI.Querying
但是,这是否意味着对 GSI 的查询可能会返回以下内容之一:
- 具有旧值的旧记录集
- 带有新值的旧记录集
- 新的记录集,但记录的属性将是旧的
说明示例:
- Table Foo 有 3 个字段:a、b、c
- Foo 在 b 上有一个主键 a 和一个 GSI
Foo 以以下记录开头: {a:1,b:苹果,c:蓝色} {a:2,b:橙色,c:绿色}
对 foo 的写入将 a = 2 的记录更新为: {a:2, b: 苹果, c: 红色}
另一个写入将 a = 1 的记录更新为: {a: 1, b: 苹果, c: 橙}
在写入之后,假设有一些延迟,在 GSI 一致之前,使用 GSI 对表进行读取
查询使用 GSI 获取 b = apple 的所有记录
此查询是否返回:
结果 X - 设置错误但属性值正确: {a: 1, b: 苹果, c: 橙}
结果 Y - 设置正确但属性值错误: {a:1,b:苹果,c:蓝色} {a:2,b:橙色,c:绿色}
结果 Z - 错误的集合和错误的属性值: {a:1,b:苹果,c:蓝色}
还是别的什么?
【问题讨论】:
标签: amazon-web-services amazon-dynamodb