【问题标题】:Can a Cassandra / CQL3 column family have a composite partition key?Cassandra / CQL3 列族可以有复合分区键吗?
【发布时间】:2012-12-05 23:21:17
【问题描述】:

CQL 3 允许使用如下定义的“复合”主键:

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

使用这样的架构,分区键(存储引擎行键)将包含 user_id 值,而 tweet_id 将复合到列名中。相反,我正在寻找的是分区键(存储引擎行键)具有像 user_id:tweet_id 这样的复合值。显然我可以在我的应用程序中执行类似 key = user_id + ':' + tweet_id 的操作,但是有什么方法可以让 CQL 3 为我执行此操作?

【问题讨论】:

    标签: cassandra


    【解决方案1】:

    实际上,是的,你可以。此票证中添加了该功能:

    https://issues.apache.org/jira/browse/CASSANDRA-4179

    你的格式是:

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

    【讨论】:

    • 很高兴知道!我在上面更新了我的答案以避免混淆 - 并赞成你的。 :)
    • 因此在 Cassandra 1.2.0 以上版本中可用。
    【解决方案2】:

    在 1.2 发布之前,答案是否定的。分区键将始终是第一个组件。正如您所说,这样做的方法是自己创建复合键。你不应该回避这个,因为它实际上很常见。

    【讨论】:

      猜你喜欢
      • 2023-03-31
      • 1970-01-01
      • 2013-07-08
      • 2012-06-26
      • 2013-07-14
      • 1970-01-01
      • 2013-09-05
      • 1970-01-01
      • 2014-03-21
      相关资源
      最近更新 更多