#list #dictionary #cassandra #set
Вопрос:
Это действительно в Кассандре? Можем ли мы использовать Набор, список, карту в качестве ключа кластера.
1)
CREATE TABLE employee (
id text,
exams SET<text>,
courses list<text>,
results map<text, text>
PRIMARY KEY (id, exams)
);
- СОЗДАТЬ ТАБЛИЦУ сотрудника (
текст идентификатора,
набор экзаменов,
список курсов,
карта результатов<текст, текст>PRIMARY KEY (id, courses)
);
- СОЗДАТЬ ТАБЛИЦУ сотрудника ( текст идентификатора, набор экзаменов, список курсов, карта результатов<текст, текст>
PRIMARY KEY (id, results)
);
Ответ №1:
Вы можете использовать коллекции как часть первичного ключа, но они должны быть frozen
коллекциями.
Эта схема недопустима:
CREATE TABLE student_results (
studentid text,
results list<text>,
PRIMARY KEY (studentid, results)
)
Если вы попытаетесь создать таблицу, она выдаст недопустимое исключение запроса:
Invalid non-frozen collection type for PRIMARY KEY component
Правильная схема — это когда коллекция заморожена:
CREATE TABLE student_results (
studentid text,
results frozen<list<text>>,
PRIMARY KEY (studentid, results)
)
Ваше здоровье!