Cassandra 卡桑德拉时间序列数据建模

Cassandra 卡桑德拉时间序列数据建模,cassandra,time-series,data-modeling,Cassandra,Time Series,Data Modeling,我有一个定义如下的表 create table events (offset int,key varchar, user uuid,name varchar, emitted int, day int, month int, year int,PRIMARY KEY((offset), year, month, day) ) WITH CLUSTERING ORDER BY (year DESC, month DESC, day DESC); 其中user是提交事件的用户的uuid,

我有一个定义如下的表

create table events (offset int,key varchar, user uuid,name varchar, 
emitted int, day int, month int, year int,PRIMARY KEY((offset), year, month, 
day) ) 
WITH CLUSTERING  ORDER BY (year DESC, month DESC, day DESC);
其中user是提交事件的用户的uuid, 偏移量是唯一的,但用户不是唯一的,因为用户有许多事件。 我想在给定用户和日期范围的情况下选择事件,如何实现这一点

您需要创建物化视图或其他表

如果您使用的是cassandra>=3.x,则可以创建物化视图

CREATE MATERIALIZED VIEW events_by_user AS
    SELECT user, year, month, day, offset
    FROM events
    WHERE user IS NOT NULL AND year IS NOT NULL AND month IS NOT NULL AND day IS NOT NULL AND offset IS NOT NULL
    PRIMARY KEY (user, year, month, day, offset)
    WITH CLUSTERING ORDER BY (year DESC, month DESC, day DESC, offset ASC);
或者,如果使用较低版本,则创建另一个表:

CREATE TABLE events_by_user (
   user uuid, 
   offset int, 
   day int, 
   month int, 
   year int, 
   primary key(user,  year, month, day, offset)
);
现在您可以按用户查询日期范围,即:

SELECT * FROM events_by_user WHERE user = 6d5c6400-3f04-11e7-b92e-371a840aa4bb AND (year, month, day) >= (2017,05,20) AND (year, month, day) <= (2017,05,25);

偏移量是事件id吗?是的,它是事件id。您使用的是哪个cassandra版本?cassandra的最新版本