2017-08-03 72 views
0

当我们扫描DynamoDB表格时,我们可以/应该使用LastEvaluatedKey来跟踪进度,以便在发生故障时可以恢复。该文件说,在插入时扫描DynamoDB表格

LastEvaluateKeyThe 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

我的猜测是对的吗?任何解释或文件链接表示赞赏。

回答

1

它是通过你的数据顺序去,它不知道在这个过程中添加的所有项目:

扫描操作顺序进行;但是,为了在较大的表或辅助索引上获得更快的性能 ,应用程序可以通过提供段和TotalSegments 参数请求并行扫描操作 。

它不仅会错过一些你已经开始扫描,也可以错过一些添加项目前的扫描,如果你使用的是最终一致的读取开始的之后加入的项目:

扫描在访问 表中的数据时使用最终一致的读取;因此,结果集可能不包括操作开始之前表中数据 的更改。

如果您需要跟踪开始扫描后添加的项目,则可以使用DynamoDB streams