gpt4 book ai didi

cassandra - 这个主键如何获取组中的所有用户?

转载 作者:搜寻专家 更新时间:2023-10-30 20:26:24 25 4
gpt4 key购买 nike

我正在尝试使用 this 从关系背景了解 Cassandra 中的数据建模文章。但是,我无法理解其中一个示例。

示例 2 用户组中:

CREATE TABLE groups (
groupname text,
username text,
email text,
age int,
PRIMARY KEY (groupname, username)
)

Note that the PRIMARY KEY has two components: groupname, which is the partitioning key, and username, which is called the clustering key. This will give us one partition per groupname. Within a particular partition (group), rows will be ordered by username. Fetching a group is as simple as doing the following:

SELECT * FROM groups WHERE groupname = ?

但是,我无法理解的是,如果我们要创建一个组,我们将在插入中传递一个组名和相应的用户名。

那么,如何使用 select 语句检索属于一个组的所有用户呢?此外,由于组名是主键,我们不能添加更多具有相同组名的用户,因为这会导致违规。

最佳答案

您可以将分区视为数据桶。它可以容纳单行或多行数据。当您读取该数据桶时,Cassandra 可以非常高效地访问该桶中的所有行,或者仅访问您通过集群键指定的一系列行。

分区是 Cassandra 中的复制单位,因此一个分区桶中的所有数据都存储在单个节点上(如果您使用比一个更高的复制因子,其他节点上可能会有额外的副本)。

但是分区键只是键的一部分。存储桶中的每一行仍然需要有一个唯一的主键,因此在该示例中,您存储在特定组分区中的每个用户都需要有一个不同的用户名。所以组名和用户名的组合需要是唯一的。只要组内的每个用户名不同,您始终可以在同一组名下插入更多用户。如果您插入了重复的用户名,那么它将更新具有该用户名的行,而不是添加一行。

关于cassandra - 这个主键如何获取组中的所有用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31866965/

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