根据this documentation from AWS,可以在Amazon DynamoDB上进行分页查询,但它没有提供任何关于如何进行的示例,它只说使用迭代器方法,这是我在使用DynamoDBMapper.query()
后在PaginatedQueryList
上找到的。
有人能解释一下它是如何工作的,如何正确使用它,以及当你不想像扫描操作那样一次从dynamoDB中检索所有结果时,它是否真的值得使用吗?
根据this documentation from AWS,可以在Amazon DynamoDB上进行分页查询,但它没有提供任何关于如何进行的示例,它只说使用迭代器方法,这是我在使用DynamoDBMapper.query()
后在PaginatedQueryList
上找到的。
有人能解释一下它是如何工作的,如何正确使用它,以及当你不想像扫描操作那样一次从dynamoDB中检索所有结果时,它是否真的值得使用吗?
2条答案
按热度按时间nnt7mjpx1#
要了解Amazon DynamoDB Java API,请参阅AWS Java Developer Guide。要使用分页结果(当响应对象太大而无法在单个响应中返回时),最佳做法是使用AWS SDK for Java V2。
在AWS SDK for Java 1.0中,响应包含您必须用于检索下一页结果的令牌。AWS SDK for Java 2.x中的新增功能是自动生成方法,可进行多个服务调用以自动获取下一页结果。
有关详细信息,请参见Java V2 DEV Guide中的文档主题:
Retrieving paginated results using the AWS SDK for Java 2.x
要查看使用DynamoDB Java V2和分页的代码示例,请参见:
https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javav2/example_code/dynamodbasync/src/main/java/com/example/dynamodbasync/AsyncPagination.java
bnl4lu3b2#
使用DynamoDB没有完全原生的方式来使用页码分页。主要是因为DynamoDB的分布式特性-表存储在多个分区中(mb甚至在多个服务器中)。此外,在DynamoDB中,从查询中检索的每条记录都有直接成本,所以我敢打赌您不想运行类似于计数查询的东西。
但是如果你想要实现像无限滚动或者“显示更多效果”这样的东西,有一种方法可以做到。以下示例实际适用于AWS Java SDK v2 2. 20. 7。该示例显示了增强型客户端的用法。
型号:
分页示例以JUnit 5test的形式提供。
数据准备使用Easy Random lib:
实际分页过程:
通知及结论:
因此,可以以这种方式实现连续分页(无限滚动)。