DynamoDB 上次评估的密钥是否过期?

Kyl*_*son 2 amazon-dynamodb

我的应用程序从由 DynamoDB 支持的第 3 方 REST API 摄取数据。结果是分页的,因此我通过将最后一个评估的键传递给每个后续请求来向前翻页。

我的问题是最后评估的密钥是否有保质期?它会过期吗?

假设我查询了 REST API,然后决定停止。如果我保存上次评估的密钥,是否可以在30 天后准确地从我中断的地方继续?最后评估的键是否仍然有效并根据我之前离开的地方返回正确的下一页?

rpm*_*rtz 7

您不应该将最后评估的键视为结果集中的“占位符”或“书签”,从中可以恢复暂停的迭代。

您应该将其更像是“起点”位置标记。一个例子可能会有所帮助。假设您有一个带有散列键userId和范围键的表timestamp。范围键timestamp将为您的结果集提供排序。假设您的表如下所示:

user ID | Timestamp
   1    |  123
   1    |  124
   1    |  125 
   1    |  126
Run Code Online (Sandbox Code Playgroud)

按照此顺序,当您查询表中的所有记录时userId 1,您将按照上面列出的顺序或按时间戳升序获取记录。如果您希望它们按降序返回,您可以使用 Dyanmo DB 的scanIndexForward标志来指示将它们“从最新到最旧”或按时间戳降序排列。

现在,假设表中有 4 个以上的项目,需要多次查询才能返回 auserId为 1 的所有记录。好吧,您不希望不断获取页面和页面,因此您可以通过为 Dynamo DB 提供最后一个评估的键来告诉它从哪里开始。假设上一个查询的最后一个结果是带有userId = 1和的记录timestamp = 124。您在查询中告诉 Dynamo 那是您获得的最后一条记录,它会以具有userId = 1和的记录开始您的下一个结果集timestamp = 125

因此,最后评估的键不是“过期”的东西,它是您与 Dynamo 通信的一种方式,您希望它根据您已经处理、向用户显示等的记录返回哪些记录。