2016-05-23 13 views
0

Gibt es einen besten Weg, um Daten in einer Cassandra Datenbank zu speichern, wenn ich die Daten in diesen zwei Möglichkeiten suchen will:Cassandra Ereignisspeicher

1) Das letzte 20 „Fehler“ event_types für user_id „123“ 2) Alle "Login" event_types in den letzten Tagen

Würde diese Arbeit: CREATE TABLE events ( user_id text, event_type text, data text, timestamp timestamp, PRIMARY KEY (event_type, timestamp, userid));

Antwort

2

Sie müssen zwei Tabellen für diese schaffen (zumindest in der Version 2.x).

Ab Version 3.5 können Sie SASI verwenden.

1) Die letzten 20 "Fehler" event_types für user_id "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);

Jetzt können Sie die Daten, die durch die folgende Abfrage erhalten.

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

2) Alle "Login" event_types in den letzten Tagen

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);

Jetzt können Sie die Daten, die durch die folgende Abfrage erhalten.

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