当我们扫描DynamoDB表时,我们可以/应该使用LastEvaluatedKey
来跟踪进度,以便我们可以在出现故障时恢复。文档说明
LastEvaluateKey
是The primary key of the item where the operation stopped, inclusive of the previous result set. Use this value to start a new operation, excluding this value in the new request.
我的问题是,如果我开始扫描,暂停,插入几行并从之前的LastEvaluatedKey
恢复扫描,我会在恢复扫描后获得这些新行吗?
我的猜测是我可能会错过所有新行中的一些,因为新密钥会被散列并且值可能会小于LastEvaluatedKey
。
我猜对了吗?任何解释或文档链接都表示赞赏。
答案 0 :(得分:1)
它会依次通过您的数据,并且不知道在此过程中添加的所有项目:
扫描操作按顺序进行;但是,为了更快的性能 在大型表或二级索引上,应用程序可以请求一个 并行通过提供Segment和TotalSegments扫描操作 参数。
不仅可以错过在您开始扫描后添加的某些项目,如果您最终使用,还可能会错过在扫描开始之前添加的一些项目一致阅读:
扫描在访问数据时最终使用一致读取 表;因此,结果集可能不包括对数据的更改 在操作开始前的表格中。
如果您需要跟踪在开始扫描后添加的项目,可以使用DynamoDB streams。