【问题标题】:Composite key vs Composite column in cassandracassandra中的复合键与复合列
【发布时间】:2014-07-04 16:12:42
【问题描述】:

我想知道在 Cassandr 中何时何地使用复合列和复合键

【问题讨论】:

    标签: cassandra hector


    【解决方案1】:

    复合键的使用在许多情况下都很有用。

    想象一个 users 表,其中您有一个用户 id (uuid) 作为主键(单键) 除非您知道用户的 id(暂时忽略二级索引),否则无法查询此表。

    现在让我们考虑一个表,其中您不再使用 id 作为主键,而是使用由 (name, surname, email) 组成的复合键

    现在您可以通过了解来查询您的用户

    名称
    姓名 - 姓氏
    姓名 - 姓氏 - 电子邮件

    主键必须是唯一的,在这种情况下,电子邮件应保证用户是唯一的。 注意,要通过电子邮件查询,您必须知道姓名和姓氏,要查询姓氏,您必须知道姓名(这是真的,除非您不使用特定的方式来建模您的数据) .

    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)
    

    在这种情况下,一旦您向 cassandra 询问推文发的推文,它们将免费按时间排序。

    干杯, 卡罗

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-30
    • 2014-09-23
    • 2016-04-08
    • 2023-03-31
    • 2013-07-08
    • 1970-01-01
    • 1970-01-01
    • 2013-09-26
    相关资源
    最近更新 更多