Кассандра вставить значение исчезнет - PullRequest
1 голос
/ 23 апреля 2019

Я хочу использовать систему баз данных Cassandra для создания таблиц. Исходные данные на картинке.

Итак, я создаю эти таблицы и вставляю значение

Create table course(
    Course_ID text PRIMARY KEY,
    Course_Name text,
    student_id text

);

Однако, когда я хочу выбрать все идентификаторы студентов из курса «Американская история»: select * from course where Course_Name = 'Biology';

Error from server: code=2200 [Invalid query] message="Cannot execute this query as it might involve data filtering and thus may have unpredictable performance. If you want to execute this query despite the performance unpredictability, use ALLOW FILTERING"

Затем, когда я пытаюсь распечатать всю таблицу, я обнаружил, что все значение с какой-то частью повторяющегося значения отсутствует ... Это из-за того, что я создаю таблицу неправильно? Как я могу изменить его и выбрать все идентификаторы студентов из одного курса? Спасибо !!

1 Ответ

2 голосов
/ 23 апреля 2019

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

Create table course(
  Course_ID text,
  Course_Name text,
  student_id text,
  PRIMARY KEY (Course_Name, Course_ID)
);

Уже естьответы, объясняющие разницу между клавишами типа этой , вы также можете прочитать эту статью из Datastax

...