Совместное размещение данных при наличии нескольких ссылочных ключей - PullRequest
0 голосов
/ 27 июня 2019

Я хотел бы понять, как размещать данные в Ignite, если у меня более одного ссылочного ключа.

Ниже приведен пример структуры таблицы MySQL.

CREATE TABLE users(
    user_id INTEGER,
    user_name VARCHAR(250),
    age INTEGER,
    CONSTRAINT pk_user PRIMARY KEY (user_id)
);

CREATE TABLE movies(
    movie_id INTEGER,
    movie_name VARCHAR(250),
    genre VARCHAR(250),
    CONSTRAINT pk_movie PRIMARY KEY (movie_id)
);

CREATE TABLE ratings(   
    user_id INTEGER,
    movie_id INTEGER,
    rating FLOAT,
    timestamp TIMESTAMP,
    CONSTRAINT pk_rating PRIMARY KEY (user_id, movie_id)
);

Здесь у меня есть таблица «рейтинги», которая ссылается на «user_id» из таблицы пользователей и «movie_id» из таблицы фильмов.

Как правильно разместить данные в этом сценарии.

Стоит ли пытаться сопоставлять пользователей и фильмы, где существуют данные "оценок"? Это вообще возможно?

1 Ответ

1 голос
/ 27 июня 2019

Вы не можете сделать оба. Лучшей практикой будет оптимизация для общего сценария. Например, если 80% ваших запросов присоединяются к фильмам и рейтингам, вы размещаете их вместе. Запросы с участием пользователей все еще будут работать, они просто попадают в сеть.

В зависимости от количества фильмов (или пользователей) вы можете также рассмотреть возможность репликации этого кэша, а не разбиения.

...