timestamp(timeuuid) 的 Cassandra 限制子句

Cassandra limit clause for timestamp(timeuuid)

我有一个cassandra table结构如下

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;

等等,这行得通吗?或者可以做一些更好的事情,因为我已经准备好更改 table 的结构,还添加了计数器列,因为基本上我应该能够根据任何列进行分页。

看到这个答案: Cassandra Limit 10,20 clause

基本上您必须在您的应用程序代码中处理它。您的建议看起来会奏效,只需稍加调整即可。

分页在驱动程序中更容易完成,您可以在驱动程序中设置获取大小。例如,在 Java:

cluster.getConfiguration().getQueryOptions().setFetchSize(10);

参见 DataStax Java Driver for Apache Cassandra, Features, Paging