我正在开发与Amazon DynamoDB相关联的网络应用, 我想实现一个功能,我的用户可以直接进入第N页以查看项目信息,
有人告诉我,DynamoDB中的分页是基于最后一个键,而不是限制/偏移。它本身不支持偏移。DynamoDB Scan / Query Pagination
这是否意味着:如果我想要进入第10页的项目,那么我必须先查询9页?(这似乎不是一个好的解决方案)
有更简单的方法吗?
答案 0 :(得分:14)
你是对的。 DynamoDB不支持数字偏移。分页的唯一方法是在发出请求时使用LastEvaluatedKey
参数。你仍然有一些很好的选择来使用数字来实现分页。
您可以通过丢弃完整结果并仅获取密钥来制作快速分页请求。每个请求限制为1MB。这代表了大量的密钥!使用此功能,您可以将光标移动到所需位置并开始读取完整对象。
此解决方案适用于小/中数据集。您将遇到大型数据集的性能和成本问题。
您还可以创建一个全局二级索引,您可以在其中对数据集进行分页。您可以为所有对象添加offset
属性。您可以直接查询此全局索引以获取所需的页面。
显然,这只有在您不使用任何自定义过滤器时才有效...而且您必须在插入/删除/更新对象时保持此值。所以这个解决方案只有在你只有一个附加的'数据集强>
此解决方案建立在第一个解决方案之上。但是,您不是每次都可以获取密钥,而是可以缓存页面位置并将其重用于其他请求。像redis或memcached这样的缓存工具可以帮助您实现这一目标。
选择适合您需求的解决方案。我希望这会对你有所帮助:)。