gpt4 book ai didi

database - 使用 CQL3 在 Cassandra 2 中建模多对多关系

转载 作者:太空狗 更新时间:2023-10-30 01:49:12 25 4
gpt4 key购买 nike

使用 CQL3 建模多对多关系的规范方法是什么?假设我必须表

CREATE TABLE actor (
id text PRIMARY KEY,
given text,
surname text,
)

CREATE TABLE fan (
id text PRIMARY KEY,
given text,
surname text,
)

我想模拟一个 Actor 可以有很多粉丝,每个粉丝可以喜欢很多 Actor 的事实。

我的第一个想法是使用 sets ,就像下面这样(对于粉丝来说是另一种方式):

CREATE TABLE actor (
id text PRIMARY KEY,
given text,
surname text,
fans set<text>
)

<similarly for fan>

但它们似乎是为小场景设计的,我看不出有什么方法可以在不完全加载任何一个场景的情况下检查粉丝是否与 Actor 有关。

我发现的第二个选择是制作两个映射表,每个对应于每个关系方向:

CREATE TABLE actor_fan (
text actor,
text fan,
PRIMARY KEY(actor,fan)
);

<similarly for fan_actor>

这是否能让我获得 Actor 的粉丝列表并检查特定的人是否是给定 Actor 的粉丝?有很多关于 Cassandra 的文档,但它通常与旧版本相关,并且这些版本之间似乎存在很多差异。

最佳答案

在 Cassandra 中执行此操作的正确方法是将数据反规范化为 2 个表。您不必担心必须在每个表上写入两次,一次,因为 Cassandra 旨在非常快速地处理写入以支持这种模型。

看看这个数据建模教程,这将有助于理解这些事情:

Data modelling tutorials

我还看到你也提到了集合。作为旁注,虽然它不是您问题的答案,但您可能希望了解一些新功能,例如:http://www.datastax.com/dev/blog/cql-in-2-1

关于database - 使用 CQL3 在 Cassandra 2 中建模多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26573243/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com