在apache cassandra的分页

时间:2018-01-19 04:49:41

标签: apache cassandra pagination cassandra-3.0

在Cassandra中如何实现分页,我通过发送最后收到的时间戳来理解,我们将能够实现它。除此之外还有其他方法可以实现卡桑德拉的分页吗?

此外,使用时间戳有一个限制,它将帮助我们仅在插入顺序中分页。

这将是一个很大的帮助。

谢谢,
哈利

2 个答案:

答案 0 :(得分:1)

执行查询时可以传递页面状态的概念,查询将返回以“已知状态”开头的结果。 NodeJS驱动程序公开执行查询后返回的结果的pageState属性 - 您可以将此状态存储在用户的会话(或网页本身)中,并将其重新用于下一个请求,将其放入选项中,例如(被盗)来自文件):

const options = { pageState : pageState, prepare : true, fetchSize :  200 };
client.eachRow(query, parameters, options, function (n, row) { // Row callback.
 }, function (err, result) {       // End callback.
    // Store the next paging state.
    pageState = result.pageState;
 }
);

NodeJS driver documentation提供了更多如何使用它的示例。您还可以查阅Java driver的文档 - 我相信它有关于页面状态的更多详细信息。

还有一些警告,比如,你不能跳到任意页面,状态可能不是Cassandra版本之间的“兼容”(如果你进行滚动升级)等。

答案 1 :(得分:-2)

$ statement = new Cassandra \ SimpleStatement(“select * from tablename where id =”。$ id); $ result = $ connection-> execute($ statement,new Cassandra \ ExecutionOptions(array('page_size'=> 5000))); $ result = $ connection-> execute($ statement); while($ result){foreach($ result as $ row){} if($ result-> isLastPage()){$ page_size = $ page_size + 1;打破; } $ result = $ result-> nextPage(); }