cassandra分页

Posted chenatu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cassandra分页相关的知识,希望对你有一定的参考价值。

在cassandra的协议中,没有具体规定查询结果的行数限制。但是对于大的数据集,依然有结果分页的必要。过大的结果集会爆掉服务端或者客户端的内存。

传统的分页方法采用了一点trick,采用了token函数

SELECT * FROM images LIMIT 100;
SELECT * FROM images WHERE token(image_id) > token([Last image ID received]) LIMIT 100;

这种方式会造成一点编程上的麻烦,一般开发中会重新再封装一次分页的方法。在cassandra2.0的java api中,添加了对于分页的支持,如下所示:

Statement stmt = new SimpleStatement("select * FROM raw_weather_data WHERE wsid= '725474:99999' AND year = 2005 AND month = 6");
stmt.setFetchSize(24);
ResultSet rs = session.execute(stmt);
Iterator<Row> iter = rs.iterator();
while (!rs.isFullyFetched()) {
   rs.fetchMoreResults();
   Row row = iter.next();
   System.out.println(row);
}

参考资料

  1. Things You Should Be Doing When Using Cassandra Drivers
  2. Improvements on the driver side with Cassandra 2.0

以上是关于cassandra分页的主要内容,如果未能解决你的问题,请参考以下文章

如何在 cassandra 中为 API 实现分页?

cassandra中列表集合的模型分页

Cassandra 的 Stargate 文档 API 的分页

Spring Data Cassandra 中的分页和排序查询

在 Cassandra 的分页选择期间执行更新是不是安全?

cassandra高级操作之分页的java实现(有项目具体需求)