Как создать эффективную модель Cassandra Data? - PullRequest
0 голосов
/ 07 июня 2018

Я новичок в Кассандре и пытаюсь создать приложение.В котором у меня есть сущность «ученик», состоящая из 4 столбцов, как указано ниже:

  • student_id
  • student_name
  • dob
  • course_name

создать таблицу student (student_id uuid, текст student_name, дата dob, текст курса_name, PRIMARY KEY (student_id));

У меня естьискать студентов по имени курса.Теперь в соответствии с моделированием данных Cassandra для поиска студента по названию курса мне нужно создать еще одну таблицу в виде student_by_course_name, которая состоит из двух столбцов:

  • имя_курса
  • student_id

где course_name будет ключом раздела, а student_id будет ключом кластера, как указано ниже:

создать таблицу student_by_course_name (text_name text, student_id uuid PRIMARY KEY (course_name, student_id));

Проблема возникает, когда студент меняет курс.Теперь я хочу обновить имя курса в таблице student_by_course_name, но оно выдает ошибку, поскольку столбец course_name является ключом раздела.Как решить эту проблему или, пожалуйста, предложите, если я неправильно использую моделирование данных Cassandra ??

Ответы [ 3 ]

0 голосов
/ 12 июня 2018

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

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

0 голосов
/ 12 июня 2018

Самый лучший способ - это, как предположил Алекс.Удалите и обновите.

Существует пара проблем, о которых вам, возможно, придется знать.

  1. Если на вашем курсе ОЧЕНЬ много студентов, он будет создавать большие разделы (для этого конкретного случая это может не быть проблемой)
  2. Удаление записей приведет к появлению надгробий, и поэтому выдолжен быть готов обработать их (например, используйте низкий GC_GRACE, если вы думаете, что будет много сгенерировано, установите unchecked_tombstones в таблице)
0 голосов
/ 07 июня 2018

В этом случае вы должны сначала удалить старую запись, а затем добавить новую запись в student_by_course_name с новым курсом.

Ваша модель выглядит хорошо

...