Cassandra 结果分页

cassandra result pagination

假设,我有一个应用程序,它从 cassandra 读取数据并以每页 10 或 20 行的形式将它们显示给用户。有没有办法在卡桑德拉有效地做到这一点?假设,我有一个 table 'ks1.cf1',分区键 'pk' 和集群列 'ck',每个分区有超过 1000 行,我想每个分区显示 10 行到用户一次。一种方法是 运行

SELECT * FROM ks1.cf1 LIMIT 10; 并获取最后一行并根据聚类列('ck' 的值)进行不等式并再次限制结果,如

SELECT * FROM ks1.cf1 WHERE ck > value_in_last_row LIMIT 10;

这是执行此操作的有效方法吗?还是会有很多开销 运行 多次执行相同的查询?结果分页在 cqlsh 中如何工作,cql 或 java 驱动程序是否支持类似的东西?另外,使用 LIMIT 是否获取整个分区并仅显示请求的记录数? 另外,如果我正在获取多个分区并想一次显示 n 个分区,我如何才能对一般查询执行相同的操作?

如果您只需要跳转到下一页,这很容易。最新的 Java 驱动程序版本(2.0.10.1 和 2.1.6)公开了查询的分页状态,请参阅文档 here

另一方面,偏移量查询没有简单的解决方案(例如直接跳转到第 20 页)。 Cassandra 没有开箱即用地实现它们,请参阅 CASSANDRA-6511