Я пытаюсь создать базу данных фильмов для образовательных целей, используя Cassandra в бэкэнде. Запросы к базе данных в основном будут выполняться по названию фильма. Итак, в настоящее время данные, которые у меня есть, соответствуют следующей модели.
название фильма | рейтинг imdb | год выпуска | актеры
Читая документацию CQL, я нашел пример музыкального плейлиста, в котором использовалась следующая структура.
CREATE TABLE playlists (
id uuid,
song_order int,
song_id uuid,
title text,
album text,
artist text,
PRIMARY KEY (id, song_order ) );
Вопрос, который у меня есть, заключается в том, что необходимо использовать отдельный столбец идентификатора. Нельзя ли использовать столбец title в качестве первичного ключа? каковы преимущества и недостатки использования отдельного поля uuid?
Команда, которую я разрабатываю для своей модели,
CREATE TABLE movies (
title text,
imdb_rating double,
year int,
actors text,
PRIMARY KEY (title, imdb_rating ) );
Здесь я считаю, что название моей модели — PRIMARY KEY
, а PARTITION KEY
, а imdb_rating — CLUSTERING KEY
(для упорядочения вывода в порядке возрастания). Что-то не так в моей модели и как это повлияет на распределение данных и почему я должен/не должен использовать uuid? Я планирую сохранить replication_factor равным 2, потому что количество узлов, которые я использую, составляет всего 3.
Также согласно документации
Не используйте индекс в следующих ситуациях:
...... •Для часто обновляемого или удаляемого столбца.
В моей базе данных наиболее обновляемым столбцом является imdb_rating, поэтому я не строю для него вторичный индекс.