2016-11-17 10 views
1

У меня есть таблица с составным первичным ключом. названия, описание, IDКак обрабатывать поиск по уникальному идентификатору в Cassandra

PRIMARY KEY (id, name, description) 

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

Итак, я создал материализованное представление в отношении этой таблицы и переписал ключи, чтобы сначала иметь идентификатор, чтобы я мог искать только на основе идентификатора.

Но как удалить или обновить запись только с идентификатором?

+0

Сколько уникальных имен и описаний у вас есть на идентификатор? –

ответ

2

Это не ясно, если вы используете ключ разделов с 3-мя колоннами, или если вы используете составного первичного ключа.

Если вы используете ключ разделов с 3-мя столбцами:

CREATE TABLE tbl (
    id uuid, 
    name text, 
    description text, 
    ... 
    PRIMARY KEY ((id, name, description)) 
); 

Обратите внимание на двойной скобка вам нужны все 3 компонента, чтобы идентифицировать данные. Поэтому, когда вы запрашиваете свои данные по идентификатору из материализованного представления, вам нужно также получить как поля name, так и description, а затем выдать одно удаление за каждый набор <id, name, description>.

Вместо этого, если вы используете композитный первичный ключ с ID будучи единственным Partition KEY:

CREATE TABLE tbl (
    id uuid, 
    name text, 
    description text, 
    ... 
    PRIMARY KEY (id, name, description) 
); 

Обратите внимание на одного скобка, то вы можете просто выпустить один удалить, потому что вы уже знаете раздел и ничего не нужно.

Check this SO post для четкого пояснения на первичный ключ типы.

Еще одна вещь, о которой вы должны знать, - это то, что материализованное представление заполнит таблицу под капотом для вас, и те же правила/идеи по моделированию данных также должны применяться для материализованных представлений.

+0

yes его составной первичный ключ с 3 столбцами, но если я создам таблицу с единственным id, когда я создаю составную таблицу, я могу добавить только еще один столбец для поиска. –