当有多个参考键时并置数据
Collocating Data when having more than one Reference Key
如果我有多个引用键,我想了解如何在 Ignite 中配置数据。
在下面提供了一个示例 MySQL table 结构。
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)
);
这里我有 "ratings" table,它参考了用户 table 的 "user_id" 和电影 table 的 "movie_id"。
如何在这种情况下正确配置数据。
我应该尝试在 "ratings" 数据存在的地方并置用户和电影吗?有可能吗?
你不能两者兼得。最佳做法是针对常见场景进行优化。例如,如果您 80% 的查询都加入了电影和评级,则您将它们并置。涉及用户的查询仍然有效,他们只是访问了网络。
根据电影(或用户)的数量,您还可以考虑复制缓存而不是分区。
如果我有多个引用键,我想了解如何在 Ignite 中配置数据。
在下面提供了一个示例 MySQL table 结构。
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)
);
这里我有 "ratings" table,它参考了用户 table 的 "user_id" 和电影 table 的 "movie_id"。
如何在这种情况下正确配置数据。
我应该尝试在 "ratings" 数据存在的地方并置用户和电影吗?有可能吗?
你不能两者兼得。最佳做法是针对常见场景进行优化。例如,如果您 80% 的查询都加入了电影和评级,则您将它们并置。涉及用户的查询仍然有效,他们只是访问了网络。
根据电影(或用户)的数量,您还可以考虑复制缓存而不是分区。