2015-07-17 3 views
2

Я пытаюсь найти модель данных, которая работает для моей ситуации. У меня есть следующие столбцы: runid, stat1, stat2, stat3.Модель данных Cassandra для запроса столбца с неповторимыми значениями

Я буду запрашивать на основе runid (например, выберите * из таблицы, где runid = 123), но runid будет иметь повторяющиеся значения, поэтому я не могу сделать его основным ключом. Кроме того, при запросе я ничего не знаю о stat1-3, поэтому я не могу сделать эти столбцы частью первичного ключа.

(Справочная информация: Мой экземпляр Cassandra заполняется другой программой и моя программа будет просто получать информацию, относящуюся к конкретному RunID от него и отобразить его на экране)

Это кажется достаточно общий сценарий, но я м новый для Кассандры. Я знаю, что runid должен быть частью первичного ключа, так как я должен запускать запросы на основе этого, но он имеет повторяющиеся значения.

Любые предложения?

ответ

2

Вы считаете, что это достаточно распространенный сценарий, и, к счастью, вам не нужно знать полный первичный ключ, чтобы делать запросы! Просто ключ раздела (первая часть первичного ключа требуется в ваших избранных критериев

Например, если вы создаете таблицу, как это:.

CREATE TABLE test.runs (
    stat1 text, 
    stat2 text, 
    stat3 text, 
    runid int, 
    PRIMARY KEY (runid, stat1) 
); 

Вы должны быть в состоянии восстановить данные, просто указав ключ раздела (RunID):

[email protected]:test> insert into runs (runid, stat1, stat2, stat3) values (0, '1', 'hi', 'hi'); 
[email protected]:test> insert into runs (runid, stat1, stat2, stat3) values (0, '2', 'lo', 'lo'); 
[email protected]:test> insert into runs (runid, stat1, stat2, stat3) values (0, '3', 'yo', 'yo'); 
[email protected]:test> insert into runs (runid, stat1, stat2, stat3) values (1, '1', '22', '33'); 
[email protected]:test> select * from runs where runid = 0; 

runid | stat1 | stat2 | stat3 
-------+-------+-------+------- 
    0 |  1 | hi | hi 
    0 |  2 | lo | lo 
    0 |  3 | yo | yo 

это, как говорится, это, вероятно, будет хорошо придумать лучшее среднее значение для вашего первичного ключа, чтобы несколько «STAT1» столбцов имеют одинаковую ценность в пределах runid, может быть, случайный uuid, чтобы создать уникальное значение?

Смежные вопросы