你是对的。DynamoDB 不支持数字偏移。分页的唯一方法是在发出请求时使用该参数。您仍然有一些不错的选择来使用数字实现分页。LastEvaluatedKey
快速光标
您可以通过丢弃完整结果并仅获取密钥来发出快速分页请求。每个请求的容量限制为 1MB。这代表了大量的密钥!使用此功能,您可以将光标移动到所需位置并开始读取整个对象。
此解决方案适用于中小型数据集。您将在大型数据集上遇到性能和成本问题。
数值指数
您还可以创建一个全局二级索引,您将在其中对数据集进行分页。例如,您可以向所有对象添加一个属性。您可以直接查询此全局索引以获取所需的页面。offset
显然,这只有在不使用任何自定义过滤器时才有效...并且在插入/删除/更新对象时必须保持此值。因此,此解决方案只有在您具有“仅追加”数据集时才是好的
缓存游标
此解决方案构建在第一个解决方案的基础上。但是,您可以缓存页面位置并将其重新用于其他请求,而不是每次都获取密钥。像redis或memcached这样的缓存工具可以帮助您实现这一目标。
- 检查缓存以查看页面是否已计算
- 如果没有,则扫描数据集,仅获取密钥。然后,将每个页面的起始键存储在缓存中。
- 您请求所需的页面以获取完整的对象
选择适合您需求的解决方案。我希望这能帮助你:)