Я пытаюсь выяснить, как работают разные реляционные и NoSQL базы данных, чтобы понять поведение производительности той или иной базы данных. Итак, вчера я создал базу данных с PostgreSQL CSV file data into a PostgreSQL table.Импорт данных. COPY & INSERT в Cassandra
В том же примере: Movielens (http://grouplens.org/datasets/movielens/). У нас есть фильмы и рейтинги. Фильмы имеют несколько жанров. Я разделил их на отдельный стол, так как это соотношение 1: много. Есть много: много отношений, а также пользователей фильмов. Мне нужно иметь возможность запрашивать эту таблицу несколькими способами.
Теперь я хочу создать ту же базу данных с Cassandra. Я модель мои таблицы должны быть оптимизированы, чтобы ответить на конкретные запросы
CREATE TABLE movies (
movie_id int primary key,
title text,
avg_rating decimal,
total_ratings int,
genres set<text>
);
# shows all movies for specific genre
CREATE TABLE genre_to_movies (
genre text,
movie_id int,
name text,
primary key (genre, movie_id)
);
# show the number of movies of specific genre
CREATE TABLE movies_per_genre (
genre text primary key,
movies int
);
# shows all ratings for specific movie
CREATE TABLE ratings_by_movie (
movie_id int,
user_id int,
rating decimal,
ts int,
primary key(movie_id, user_id)
);
# show all ratings of specific user
CREATE TABLE ratings_by_user (
user_id int,
movie_id int,
rating decimal,
ts int,
primary key(user_id, movie_id)
);
У меня есть 2 файлов CSV: movies.csv: movie_id; MOVIE_NAME; genre_name
1;Toy Story (1995);Animation|Children's|Comedy
ratings.csv: user_id; movie_id; рейтинг, временная метка
1;1193;5;978300760
Что является лучшим способом импорта данных в мои таблицы? Например, как я могу импортировать данные в жанры, установленные из movies.csv? Как я могу разделить строку «Анимация | Детская | Комедия»? Если я сделать это вручную:
INSERT INTO movies(movie_id,..., genre) VALUES ('Toy Story (1995)', ...,['Animation','Children's','Comedy'])
, но как я могу импортировать эти данные для всех фильмов?
Можете ли вы показать лучшую стратегию для COPY & Команды INSERT с использованием этого примера/базы данных?