2

目前,Ruby AWS 开发工具包中的 ItemCollection#query 方法返回整个数据集。我查看了 Ruby AWS 开发工具包源代码中是否存在分页的可能性,但最接近分页的选项是:limit, no pagination。根据 Amazon 的 DynamoDB API(HTTP,不是 Ruby)文档,查询操作建议可以使用响应键进行分页LastEvaluatedKey

查询操作停止的项目的主键,包括上一个结果集。使用此值启动新操作,在新请求中排除此值。当整个查询结果集完成时(即操作处理“最后一页”),LastEvaluatedKey 为空。

所以我可以通过添加:limit选项来进行分页,然后在我的 last 之后对范围值进行下一个查询Item,但是除非我进行完整查询,否则我不知道总计数是多少。

有没有更好/更简单的方法来实现分页?

4

1 回答 1

1

根据您的需要,构建一个完整的寻呼机可能需要两个请求,请参阅Query and Scan in Amazon DynamoDB,特别是Count 和 ScannedCount

Amazon DynamoDB 扫描和查询 API 将 Count 值用于两个不同的目的。

在请求中,如果您希望 Amazon DynamoDB提供与扫描过滤器或查询条件匹配的项目总数,而不是匹配项目的列表,请将 Count 参数设置为 true 。

在响应中,Amazon DynamoDB 返回请求中匹配项目数的 Count 值。如果扫描过滤器或查询条件的匹配项超过 1MB,则 Count 包含与请求匹配的项目总数的部分计数。要获取与请求匹配的项目的完整计数,请在后续请求中使用 LastEvaluatedKey。重复请求,直到 Amazon DynamoDB 不再返回 LastEvaluatedKey。

[强调我的]

也就是说,为避免最初的复杂逻辑,您可能希望预先查询匹配项目的数量,然后仅在需要时请求特定页面。

祝你好运!

于 2012-03-20T01:58:01.220 回答