使用ItemsCollection#query进行分页?

时间:2012-03-20 01:24:00

标签: ruby amazon-web-services amazon-dynamodb

目前,Ruby AWS SDK中的ItemCollection#查询方法返回整个数据集。我查看了Ruby AWS SDK源代码中的任何分页可能性,但最接近分页的选项是:limit,没有分页。根据亚马逊的DynamoDB API(HTTP,而不是Ruby)查询操作的文档表明,可能会对响应键LastEvaluatedKey进行分页:

  

查询操作停止的项的主键,包括先前的结果集。使用此值可以在新请求中启动不包含此值的新操作。   整个查询结果集完成后,LastEvaluatedKey为null(即操作处理“最后一页”)。

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

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

1 个答案:

答案 0 :(得分:1)

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

  

Amazon DynamoDB扫描和查询API使用两个计数值   不同的目的。

     

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

     

在回复中,Amazon DynamoDB会返回一个Count值   匹配请求中的项目。 如果匹配项目为扫描过滤器   或查询条件超过1MB,Count包含部分计数   与请求匹配的项目总数。为了得到完整的数量   与请求匹配的项目,在后续使用LastEvaluatedKey   请求。重复该请求,直到Amazon DynamoDB不再返回   LastEvaluatedKey。

     

[强调我的]

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

祝你好运!