gpt4 book ai didi

cassandra - 在此示例中,在cassandra中创建了多少个表/列系列

转载 作者:行者123 更新时间:2023-12-03 07:58:39 25 4
gpt4 key购买 nike

我正在cassandra的架构中阅读此post

作者创建了两个表:

CREATE TABLE tweets (
tweet_id uuid PRIMARY KEY,
author varchar,
body varchar
);

CREATE TABLE timeline (
user_id varchar,
tweet_id uuid,
author varchar,
body varchar,
PRIMARY KEY (user_id, tweet_id)
);


注意:至于表,他们不知道两个表都可以在tweet_id上“ JOINED”。每个表都将tweet_id视为uuid类型的唯一列名。

如果我对帖子的理解在这里,那么作者说,实际上并没有创建两个列族(也称为表)。它是一个包含两个逻辑列系列信息的ONE HUGE表。

但是当我说 select * from tweets where tweet_id="xxx"时,查找是如何发生的
(是否有内部标记来确定列属于推文)

请看一下帖子,作者以其很好的例子进行了说明。

我的问题是,表时间轴中的tweet_id如何知道它应该与表twe​​ets中的tweet_id“连接”。

最佳答案

不,它不是作为一个列族创建的。这两个列族是分别创建的,并且彼此独立地运行。作者所指的是非关系数据建模的一个方面,它涉及对数据进行规范化和创建与查询模式匹配的表。

制作“ tweet”时,必须将应用程序设计为将有关tweet的数据存储到两个不同的列族中。它在tweets列族中存储一次,然后为每个关注者在timeline列族中创建一个条目。本质上,关于特定推文的数据将为tweets列族复制一次,并为作者拥有的每个关注者复制一次。


表时间轴中的tweet_id如何知道应该与
表鸣叫中的tweet_id。


很简单,它不知道。 Cassandra不允许连接,并且由Cassandra支持的经过适当设计的应用程序也不会使用客户端连接。同样,每个列族都是根据可能运行的每个查询而设计的。有时,应用程序可能想通过tweet_id查询特定的tweet,并为此使用tweets列系列。另一方面,该帖子提到该应用程序有一个用例,可以查询来自特定用户的20条最新推文。在这种情况下,timeline列系列旨在解决这一问题。

摘要:


定义了两个列族。
每个列族都旨在处理特定的查询。
没有联接;数据库或客户端。对数据进行非规范化(重复),以便应用程序可以按要求的方式快速查询数据。

关于cassandra - 在此示例中,在cassandra中创建了多少个表/列系列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24945675/

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