假设我有一个从cassandra读取数据的应用程序,并以每行10行或20行的行显示给用户。有没有办法在cassandra有效地做到这一点?假设,我有一张桌子' ks1.cf1'使用分区键' pk'和聚类列' cn'并且每个分区有超过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个分区?
答案 0 :(得分:4)
如果您只需要跳转到下一页,这很容易。最新的Java驱动程序版本(2.0.10.1和2.1.6)公开了查询的分页状态,请参阅文档here。
另一方面,偏移查询没有简单的解决方案(例如直接跳转到第20页)。 Cassandra没有开箱即用,请参阅CASSANDRA-6511。