如何对包含电影标题的数据建模以按流派检索电影列表?

问题描述 投票:0回答:1

我对 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

所以类型是列表的一部分,正如您在第一个表中看到的那样,因此每部电影都可以有多种类型。我必须如何为我的表定义我的数据输入以获得我需要的结果?我是否必须为电影所属的每种类型制作一个数据集?

如果你能帮助我,我很高兴!

cassandra data-modeling denormalization
1个回答
1
投票

如果您的应用程序需要按流派检索电影,那么您应该设计一个表,该表 (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
© www.soinside.com 2019 - 2024. All rights reserved.