我想知道在Cassandr中使用复合列和复合键的位置和时间
答案 0 :(得分:2)
复合键使用在许多情况下都很有用。
想象一下表用户,其中您有一个用户ID(uuid)作为主键(单键) 除非您知道用户的id(此时忽略二级索引),否则无法查询此表。
现在让我们考虑一个表格,你不再使用id作为主键,但你使用的是由(姓名,电子邮件)
组成的复合键现在您可以通过了解
来查询您的用户名
姓氏 - 姓
姓氏 - 姓氏 - 电子邮件
主键必须是唯一的,在这种情况下,电子邮件应该保证用户是唯一的。 注意,通过电子邮件查询您必须知道姓名和姓氏,以查询您必须知道姓名的姓氏(除非您不使用特定方式为您的数据建模,否则这是真的)
CREATE TABLE users (
name text,
surname text,
email text,
age int,
address text,
id uuid,
PRIMARY KEY (name, surname, email)
)
另一个有用的场景可以是数据排序。 想象一下,你有一张表,你可以在其中保存由高音扬声器(由uuid标识)制作的推文(由时间uuid标识)。
在cassandra中,密钥的第一部分称为分区密钥,其余部分称为集群密钥。对于相同的分区,密钥数据可以通过聚类密钥进行排序
CREATE TABLE tweets (
tweeter_id uuid,
tweet_id timeuuid,
content text,
PRIMARY KEY (tweeter_id, tweet_id)
) WITH CLUSTERING ORDER BY (tweet_id DESC)
在这种情况下,一旦你问一下高音扬声器发出的推文,他们就会免费为时间排序。
干杯, 卡罗