我有一个cassandra表结构如下
create table demo (user_id text , comment_id text , timestamp timeuuid , PRIMARY KEY (user_id , comment_id , timestamp))
现在在UI中我希望分页,以便在点击下一个按钮时,我应该得到10到20之间的值,然后是20到30,依此类推。
我知道我们无法在cassandra中启动查询
select * from demo limit 10,20
因此,如果我创建一个查询
select * from demo where timestamp = 'sometimestampvalue' limit 10;
这将提供来自' sometimestampvalue
'的10个值。直到接下来的10个值。
然后将最后一行时间戳值存储在变量(比如X)中,然后将下一个查询作为
启动select * from demo where timestamp = 'X' limit 10;
等等,这会有效吗?或者更好的事情可以做,因为我已经准备好改变表格的结构,同时添加了计数器列,基本上我应该可以根据任何列进行分页。
答案 0 :(得分:1)
看到这个答案: Cassandra Limit 10,20 clause
基本上,您必须在应用代码中处理它。你的建议看起来会起作用,只需稍加调整即可。
答案 1 :(得分:1)
在驱动程序中可以更轻松地完成分页,您可以在其中设置获取大小。例如,在Java中:
cluster.getConfiguration().getQueryOptions().setFetchSize(10);
请参阅DataStax Java Driver for Apache Cassandra, Features, Paging