2

我有一个 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;

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

4

2 回答 2

1

请参阅此答案: Cassandra 限制 10,20 条款

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

于 2016-07-18T23:59:20.807 回答
1

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

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

请参阅用于 Apache Cassandra 的DataStax Java 驱动程序、功能、分页

于 2016-07-20T00:34:52.973 回答