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