我对 cassandra 中的数据建模有疑问。我想创建一个包含电影、演员、评级等的 cassandra 数据库。我已经定义了我的表应该是什么样子,我想创建像 movies_by_genre、movies_by_year、actors_by_movie、movies_by_actor 等表。 例如,我的电影数据如下所示:
ID | 标题 | 年 | 流派 |
---|---|---|---|
1 | 壮志凌云:特立独行 | 2022 | 动作、剧情、冒险 |
2 | 黑豹:永远的瓦坎达 | 2019 | 动作、科幻、超级英雄 |
3 | 雷神:爱与雷霆 | 2015 | 喜剧、动作、超级英雄、科幻 |
4 | 霍比特人 | 2012 | 奇幻、浪漫 |
5 | 欢乐满人间 | 1964 | 儿童、音乐剧 |
所以当我想创建表 movies_by_genre 时,我希望将流派作为分区键,对于流派“Action”,输出如下所示:
类型 | 标题 | 年 |
---|---|---|
动作 | 壮志凌云:特立独行 | 2022 |
动作 | 黑豹:永远的瓦坎达 | 2019 |
动作 | 雷神:爱与雷霆 | 2015 |
所以类型是列表的一部分,正如您在第一个表中看到的那样,因此每部电影都可以有多种类型。我必须如何为我的表定义我的数据输入以获得我需要的结果?我是否必须为电影所属的每种类型制作一个数据集?
如果你能帮助我,我很高兴!
如果您的应用程序需要按流派检索电影,那么您应该设计一个表,该表 (1) 按流派分区,(2) 行按电影标题聚集。
例如,这是一个为特定应用程序查询设计的简单示例表:
CREATE TABLE movies_by_genre (
genre text,
title text,
release_year int,
duration int,
director text,
...
PRIMARY KEY (genre, title)
)
有了这个
PRIMARY KEY (genre, title)
定义,每个流派都会有一行或多行电影。
这是一个检索 5 部动作片的示例查询:
SELECT genre, title FROM movies_by_genre
WHERE genre = 'action'
LIMIT 5
样本输出:
genre | title
--------|---------------------------------------------
action | Top Gun: Maverick
action | Black Panther: Wakanda Forever
action | Thor: Love and Thunder
action | Doctor Strange in the Multiverse of Madness
action | The Batman