Связанные с Cassandra Data моделирование - PullRequest
0 голосов
/ 01 мая 2018

Требование: Стол в Кассандре. Нам нужны номера разделов для заданий, которые никогда не выполнялись успешно из следующей таблицы:

CREATE TABLE SAMPLE.ALERTS (job_id UUID, section text, result text, PRIMARY KEY(job_id,section));

INSERT INTO  SAMPLE.ALERTS (job_id, section, result) values (now(),'0100','successful');
INSERT INTO  SAMPLE.ALERTS (job_id, section, result) values (now(),'0100','successful');

INSERT INTO  SAMPLE.ALERTS (job_id, section, result) values (now(),'0200','successful');
INSERT INTO  SAMPLE.ALERTS (job_id, section, result) values (now(),'0200','failed');

INSERT INTO  SAMPLE.ALERTS (job_id, section, result) values (now(),'0300','failed');
INSERT INTO  SAMPLE.ALERTS (job_id, section, result) values (now(),'0300','successful');

INSERT INTO  SAMPLE.ALERTS (job_id, section, result) values (now(),'0400','failed');
INSERT INTO  SAMPLE.ALERTS (job_id, section, result) values (now(),'0400','failed');

INSERT INTO  SAMPLE.ALERTS (job_id, section, result) values (now(),'0700','failed');
INSERT INTO  SAMPLE.ALERTS (job_id, section, result) values (now(),'0700','failed');

Таким образом, в выводе нам нужны номера секций 0400 и 0700. Есть ли способ, с помощью которых мы можем достичь этого, изменив структуру таблицы и выполнив запрос?

1 Ответ

0 голосов
/ 02 мая 2018

Как правило, такие вещи выполняются путем добавления материализованных представлений или вторичных индексов, но в вашем случае это не оптимально, так как у вас не так много разных значений result ...

Если вы используете DSE, то вы можете использовать DSE Search для выполнения таких запросов (но учтите, что задержка для таких запросов будет выше, чем обычные запросы Cassandra).

Другая возможность - просто добавьте 2-ю таблицу, в которую вы будете записывать только неудачные запросы (как копии исходных данных).

...