Перво-наперво: в запросах Cassandra нет OR
Если в своих запросах вы всегда ограничиваете поля типа user
или eventtype
или action
, тогда я предлагаю вам создатьотдельная таблица для каждого из этих типов запросов, одна таблица, которая поддерживает запросы с полем user
, в котором partition key
будет поле user
, и другая таблица с eventtype
в качестве partition key
для поддержки запросов споле eventtype
и одна таблица для поля action
и т. д. Это соответствует моделированию данных Cassandra для создания таблиц на основе ваших запросов.
Поэтому таблица, поддерживающая запросы с помощью user
, должнабыть:
CREATE TABLE userTable (
user text,
id uuid,
eventtype text,
sourceip text,
sessionid text,
roleid int,
menu text,
action text,
log text,
PRIMARY KEY (user)
);
Таблица, поддерживающая запросы с помощью eventtype
, должна быть:
CREATE TABLE eventtypeTable (
eventtype text,
id uuid,
user text,
sourceip text,
sessionid text,
roleid int,
menu text,
action text,
log text,
PRIMARY KEY (eventtype)
);
И вы можете создать столько таблиц, сколько вы хотите, чтобы каждая поддерживала запрос.
Затем, когда вы выполняете свои запросы (например, в коде приложения), если вы знаете, что у вас есть значение поля user
, тогда запрашиваете таблицу, в которой поле user
является partition key
иограничьте значение поля user
, например:
select * from userTable where user='Aqib';
, иначе, если вы знаете, что у вас есть значение поля eventtype
, вам следует запросить таблицу, в которой partition key
является полем eventtype
например:
select * from eventtypeTable where eventtype='DemoType';
и аналогично для других полей и их таблиц.