DynamoDB 中的一致读取扫描会隐藏扫描开始后所做的更改吗?
Do consistent-read scans in DynamoDB hide changes made after the scan starts?
给定一个 Scan
操作 ConsistentRead=true
和一个跨越许多页面的大型结果集(这样需要后续请求来获取后续页面):如果一个项目被更新会发生什么 扫描开始后但在该项目的相关页面返回给我们之前(当对扫描结果进行分页时)?
当我们最终到达该页面时,我们会看到更新后的项目,还是会看到扫描开始时项目的版本?还是行为不可预测?
并且:同样的问题,但是对于删除?
一致性读取指的是单个项目的一致性 -- 而不是整个 table。
当您启动扫描时,通过一致的读取,读取的每个项目都将反映它在请求时的最新状态,但这并不意味着您获得的项目集合是由于扫描表示启动扫描时的时间点快照。在扫描过程中可以添加新项目,这取决于它们的键在键中的位置 - space 它们可能会或可能不会被包含。
删除的项目也是如此。
您也可以自己设置一个简单的测试,方法是在扫描时故意放慢扫描速度并执行更新。
给定一个 Scan
操作 ConsistentRead=true
和一个跨越许多页面的大型结果集(这样需要后续请求来获取后续页面):如果一个项目被更新会发生什么 扫描开始后但在该项目的相关页面返回给我们之前(当对扫描结果进行分页时)?
当我们最终到达该页面时,我们会看到更新后的项目,还是会看到扫描开始时项目的版本?还是行为不可预测?
并且:同样的问题,但是对于删除?
一致性读取指的是单个项目的一致性 -- 而不是整个 table。
当您启动扫描时,通过一致的读取,读取的每个项目都将反映它在请求时的最新状态,但这并不意味着您获得的项目集合是由于扫描表示启动扫描时的时间点快照。在扫描过程中可以添加新项目,这取决于它们的键在键中的位置 - space 它们可能会或可能不会被包含。
删除的项目也是如此。
您也可以自己设置一个简单的测试,方法是在扫描时故意放慢扫描速度并执行更新。