pagination - cassandra结果分页

标签 pagination cassandra cql cql3

假设,我有一个应用程序,它从 cassandra 读取数据并将其以行 block 形式(例如每页 10 或 20 行)显示给用户。有没有办法在 cassandra 中有效地做到这一点?假设我有一个表“ks1.cf1”,其中分区键为“pk”,集群列为“ck”,每个分区有 1000 多行,我希望每个分区一次向用户显示 10 行。一种方法是运行

从 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 .

关于pagination - cassandra结果分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30465321/

相关文章:

php - 简单的操作,Cassandra 比 Mysql 慢很多?

cassandra - 列族 ID 不匹配(发现为 cebcc380-72d4-11e7-9a6b-bd620b945799;预期为 c05d6970-72d4-11e7-9a6b-bd620b945799)

.net - 如何使用 NHibernate 进行分页?

cakephp - 如何使用附加参数 cakephp 传递分页参数?

Cassandra - 批量太大

string - Cassandra:黑白文本(VARCHAR)和ASCII的区别

python - 输入 'mytable1' cassanda cql python session.execute 错误时没有可行的替代方案

ruby-on-rails - 有没有办法让页码作为rails中的字母

Laravel 按分页排序

select - CQL Cassandra OR 运算符