2016-05-23 66 views
0

是否有数据存储在Cassandra的数据库,如果我将要搜索在这2个方面的数据的最佳方式:卡桑德拉事件存储

1)最后20“错误” event_types为user_ID的“123” 2)所有的“登录” event_types过去一天

将这项工作: CREATE TABLE events ( user_id text, event_type text, data text, timestamp timestamp, PRIMARY KEY (event_type, timestamp, userid));

回答

2

您将需要创建两个表本(至少在2.x版)。

从版本3.5开始,您可以使用SASI

1)最后20 “错误” 的user_ID的event_types “123”

CREATE TABLE events ( user_id text, event_type text, data text, timestamp timestamp DESC, PRIMARY KEY ((userid,event_type), timestamp) ) WITH CLUSTERING ORDER BY (timestamp DESC);

现在,你可以通过下面的查询得到的数据。

select * from events where user_id = '123' and event_type = 'error' limit 20

2)在过去的一天全部 “登陆” event_types

CREATE TABLE events_by_type ( user_id text, event_type text, data text, timestamp timestamp DESC, PRIMARY KEY (event_type, timestamp) ) WITH CLUSTERING ORDER BY (timestamp DESC);

现在,你可以通过下面的查询得到的数据。

select * from events where event_type = 'login' and timestamp > ddmmyyyy