在Web应用程序中使用Dynamodb进行分页

Sud*_*fle 0 python django boto amazon-web-services amazon-dynamodb

我的数据库中有大约5000多个视频,我创建了一个页面http://mysite.com/videos列出所有视频.现在我正在实施分页,因此每页只列出20个视频.例如

http://mysite.com/videos?page=1显示前20个视频,http://mysite.com/videos?page = 2显示接下来的20个视频.

我在选择实现分页的最佳方法时遇到问题.我想过每次执行新页面时都使用table.scan(),然后根据Python代码的某些逻辑选择只需要.但这似乎相当昂贵.

我正在使用Python/Django和boto库.

Dan*_* C. 6

在Dynamo中,您可以通过设置限制来执行查询.来自以下文件:

http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Query.html

你可以阅读:

ExclusiveStartKey 
Run Code Online (Sandbox Code Playgroud)

此操作将评估的第一个项的主键.使用上一操作中为LastEvaluatedKey返回的值.

ExclusiveStartKey的数据类型必须是String,Number或Binary.不允许设置任何数据类型.

Type: String to AttributeValue object map

Required: No
Run Code Online (Sandbox Code Playgroud)

Limit
Run Code Online (Sandbox Code Playgroud)

要评估的最大项目数(不一定是匹配项的数量).如果Amazon DynamoDB在处理结果时处理的项目数量达到限制,它将停止操作并返回到该点的匹配值,并在后续操作中应用LastEvaluatedKey,以便您可以选择离开的位置关闭.此外,如果在Amazon DynamoDB达到此限制之前处理的数据集大小超过1 MB,它将停止操作并将匹配值返回到限制,并在后续操作中应用LastEvaluatedKey以继续操作.有关更多信息,请参阅Amazon DynamoDB开发人员指南中的查询和扫描.

Type: Number

Required: No
Run Code Online (Sandbox Code Playgroud)

您不提供有关表格键的结构的任何信息.但是,方法是查询表中与您的键匹配的元素(如果合适,则为范围键),限制设置为20.在结果中,您将收到一个"LastEvaluatedKey",您将不得不使用它查询,再次将限制设置为20.