CQL:使用'<'在cassandra中搜索表在索引列上

时间:2014-08-18 14:54:24

标签: cassandra data-modeling cql cassandra-2.0

我的cassandra数据模型:

    CREATE TABLE last_activity_tracker ( id uuid, recent_activity_time timestamp, PRIMARY KEY(id));
    CREATE INDEX activity_idx ON last_activity_tracker (recent_activity_time) ;

我们的想法是跟踪他们及其最近一次活动的活动。

我需要找到其上一次活动是一年前的“ID”。 所以,我试过了:

    SELECT * from last_activity_tracker WHERE recent_activity_time < '2013-12-31' allow filtering;

据我所知,我不能使用&#39; =&#39;对于二级索引列。

但是,我无法添加&#39; recent_activity_time&#39;到密钥,因为我需要使用事件的最近活动时间来更新此列。

非常感谢任何解决我的问题的想法。

1 个答案:

答案 0 :(得分:0)

我可以看到您的查询存在问题。你没有打一个分区。因此,查询的性能将非常糟糕。它需要在整个集群中进行查询(假设您已采取措施使其工作)。

如果您要查询ID的最后活动时间,请考虑以更友好的查询格式存储它。你可以试试这个:

create table tracker (dummy int, day timestamp, id uuid, primary key(dummy, day, id));

然后您可以插入日期作为日期的纪元(忽略时间),并且哑= 0。

这应该使你能够:

select * from tracker where dummy=0 and day > '2013-12-31';

您可以在插入时设置ttl,以便旧条目过期(在这种情况下可能在一年之后)。我们的想法是以适合您查询的方式存储信息。