基于时间的Cassandra查询

基于时间的Cassandra查询,cassandra,cql3,Cassandra,Cql3,我有下面的Cassandra表,它记录了用户对网页的访问 create table user_access ( id timeuuid primary key, user text, access_time timestamp ); 并希望执行如下查询: 获取在过去一小时内访问该页面超过10次的用户列表 可以在卡桑德拉做吗?(我被有限的CQL查询功能卡住了) 如果没有,我如何重新建模表格以实现此目的?您能做到吗?对 你能有效地做到吗?我不相信 您使用的timeuuid代

我有下面的Cassandra表,它记录了用户对网页的访问

create table user_access (
    id timeuuid primary key,
    user text,
    access_time timestamp
);
并希望执行如下查询:
获取在过去一小时内访问该页面超过10次的用户列表

可以在卡桑德拉做吗?(我被有限的CQL查询功能卡住了)
如果没有,我如何重新建模表格以实现此目的?

您能做到吗?对 你能有效地做到吗?我不相信

您使用的timeuuid代表什么还不清楚

你可以重新组织这个

CREATE TABLE user_access (
  user text,
  access_time timestamp,
  PRIMARY KEY (user_id, access_time)
);

SELECT COUNT(*)
FROM user_access
WHERE user_id = '101'
  AND access_time > 'current unix timestamp - 3600'
  AND access_time < 'current unix timestamp';
创建表用户访问权限(
用户文本,
访问时间戳,
主键(用户id、访问时间)
);
选择计数(*)
从用户访问
其中用户_id='101'
并访问\u time>“当前unix时间戳-3600”
和访问时间<'当前unix时间戳';
然后用自己选择的语言过滤结果。我不会让你屏住呼吸等待子查询支持

如果你有很多用户的话,这将是非常低效的

可能有更好的解决方案,使用cql的计数器列和一小时开始时的装箱访问。这可以让你每小时访问一次,但这与过去一小时内的访问量不同