Node.js 尝试使用延续哈希-NoSQL分页使用Riak返回分页结果

Node.js 尝试使用延续哈希-NoSQL分页使用Riak返回分页结果,node.js,pagination,riak,nosql,Node.js,Pagination,Riak,Nosql,编辑:我为NoSQL情况添加了一个更通用的方法 我正在使用Riak(带有LevelDB)进行一个项目 使用Riak提供的RESTAPI,我能够基于索引和范围(返回按索引排序的alpha num结果)获取数据,并返回一个连续散列 示例调用: http://server/buckets/bucketname/index/someindex_int/333333333/555555555?max_results=10&return_terms=true&continuation=somehashher

编辑:我为NoSQL情况添加了一个更通用的方法

我正在使用Riak(带有LevelDB)进行一个项目

使用Riak提供的RESTAPI,我能够基于索引和范围(返回按索引排序的alpha num结果)获取数据,并返回一个连续散列

示例调用:
http://server/buckets/bucketname/index/someindex_int/333333333/555555555?max_results=10&return_terms=true&continuation=somehashhere

示例结果:

{
results: [
{
about_river: "12312"
},
{
balloon_tall: "45345"
},
{
basket_written: "23434523"
}
],
continuation: "g2987392479789879087987asdfasdf="
}
我还单独打了一个电话,没有指定max_results和return_terms来获取集合中文档的计数。我将知道每套文档的数量和文档的总数,这很容易让我们知道“页面”的数量

虽然我能够基于散列对每一组文档进行调用,然后接收下一个结果集的散列,但我正在寻找一种预测散列的方法,因此使用分页链接预先填充客户机

这可能吗?散列是基于索引/范围信息的动态散列,还是由返回数据的节点生成的随机值

一位同事提到,散列是基于您在集群中访问的节点的,但是我找不到关于这方面的文档

其次,这个想法被提出来,在背景中循环整个集合以获得散列。这会起作用,但似乎相当昂贵


我是Riak的新手,这里的任何建议都会很好。我找不到任何使用Riak分页的好例子。据我所知,确实存在的那个已经从互联网上消失了

不,继续是不“可预测的”,你的同事说的话也不正确


不幸的是,除了在不使用
max\u results
参数的情况下查询范围外,无法知道指定范围内的对象总数(显然,索引键和对象键之间的关系为1:1)。

另一个答案是我需要的答案,但在CodingHorror的帮助下,我想出了我想要的答案

没有分页。在没有分页的情况下,只获取下一个结果集的哈希值是没有问题的,事实上,它非常适合我的用例。只需将下一个集合合并到现有集合中。但不要让它永远持续下去

我的灵感:


谢谢,杰夫·阿特伍德

回答中的结果数量不一样吗

差不多

RiakFuture<SearchOperation.Response, BinaryValue> searchResult = client.executeAsync(searchOp);
searchResult.await();
com.basho.riak.client.core.operations.SearchOperation.Response response = searchResult.get();
logger.debug("number of results {} ", response.numResults());
RiakFuture searchResult=client.executeAsync(searchOp);
searchResult.await();
com.basho.riak.client.core.operations.SearchOperation.Response=searchResult.get();
debug(“结果数{}”,response.numResults());

那么知道什么是延续的唯一方法就是调用一组文档,然后使用该延续?你能给我一些关于连续散列是如何生成的,这样我就能更好地理解它是如何工作的吗?大部分人都喜欢Riak,但这有点难克服。还有一个问题,哈希值会持续吗?例如,两周后,范围内的设置文档的哈希值是否有效?我的经验表明它们确实存在,这就是为什么我试图理解它们是如何产生的。再次感谢。