Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
数字限制&;DynamoDB(Java)中基于偏移量的分页_Java_Amazon Dynamodb_Dynamodb Queries_Aws Java Sdk Dynamodb - Fatal编程技术网

数字限制&;DynamoDB(Java)中基于偏移量的分页

数字限制&;DynamoDB(Java)中基于偏移量的分页,java,amazon-dynamodb,dynamodb-queries,aws-java-sdk-dynamodb,Java,Amazon Dynamodb,Dynamodb Queries,Aws Java Sdk Dynamodb,我想在DynamoDB中实现基于数字限制和偏移量的分页 我的API看起来像这样:http://foo.bar/user?offset=50&limit=20 在Java中,如果不考虑DynamoDB,那么最好的方法是什么呢 编辑: 让我们假设基于偏移量的分页是一个硬要求,我不知道“之前”页面。我的API合同具有如上所述的offset和limit查询参数。我不是在寻找“不进行基于偏移量的分页”的答案。在查看之后,似乎最有效的方法是在配置中仅使用迭代分页加载策略,并执行如下操作: DynamoDBM

我想在DynamoDB中实现基于数字限制和偏移量的分页

我的API看起来像这样:
http://foo.bar/user?offset=50&limit=20

在Java中,如果不考虑DynamoDB,那么最好的方法是什么呢

编辑:

让我们假设基于偏移量的分页是一个硬要求,我不知道“之前”页面。我的API合同具有如上所述的
offset
limit
查询参数。我不是在寻找“不进行基于偏移量的分页”的答案。

在查看之后,似乎最有效的方法是在配置中仅使用
迭代
分页加载策略,并执行如下操作:

DynamoDBMapperConfig config=new DynamoDBMapperConfig.Builder()
.使用分页加载策略(仅限迭代)
.build();
PaginatedQueryList users=dynamoDBMapper.query(MyUser.class,myQueryExpression,config);
//此迭代器将“按需”获取1MB的数据
迭代器userIterator=users.Iterator();
跳过(迭代器,偏移量);
List aPageOfUser=collect(迭代器,限制);
当然,我将承担在那里实现自己的
skip
collect
方法的成本。有没有更好/更简洁的方法

编辑:

似乎我可以免费使用
跳过
收集

Iterator<MyUser> userIterator = IteratorUtils.boundedIterator(users.iterator(), offset, limit);
List<MyUser> aPageOfUser = IteratorUtils.toList(userIterator);

Iterator userIterator=IteratorUtils.boundeditor(users.Iterator(),offset,limit);
List aPageOfUser=IteratorUtils.toList(userIterator);

20条记录的基于偏移量的分页(0、20、40、60…),而不是搜索上一页的最后一个键+21条记录。后者可以快得多。(只是为了避免后一种智能分页技术)谢谢@joop eggen,但是让我们假设基于偏移量的分页在这里是一个困难的要求(我将添加一个编辑来澄清)。另外@JoopEggen,让我们假设我不知道上一页,我不保持这种状态(这确实是一种克服db偏移量访问速度慢的技术,需要保持和处理数据,而不是在代码设计中使用。)啊,我现在明白你的意思了@JoopEggen,我可以有一个单独的“跳转表”来保存每个“bucket”的开始键。现在如果我需要深入页面,我可以跳转到最近的“bucket”,而不必从头开始遍历。但这需要我在更新源表时以某种方式维护这个跳转表。这是一个有趣的想法。我想知道如果有一个库/模式可以帮助实现这一点。