在DynamoDb中,默认情况下,使用全局二级索引的读取最终是一致的:https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GSI.html#GSI.Querying
但是,这是否意味着对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 =苹果
此查询将返回:
结果X-设置错误但属性值正确: {a:1,b:苹果,c:橙色}
结果Y-设置正确但属性值错误: {a:1,b:苹果,c:蓝色} {a:2,b:橙色,c:绿色}
结果Z-错误的集和错误的属性值: {a:1,b:苹果,c:蓝色}
还是其他?
答案 0 :(得分:1)
GSI上的查询有时会返回旧的记录集
是
查询将返回新的记录集,但是记录的属性将是旧的吗?
这永远不会发生。