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。
假设,我有一个应用程序,它从 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。