Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cassandra/CQL3列族能否具有复合分区键?_Cassandra - Fatal编程技术网

Cassandra/CQL3列族能否具有复合分区键?

Cassandra/CQL3列族能否具有复合分区键?,cassandra,Cassandra,CQL 3允许使用如下定义的“复合”主键: CREATE TABLE timeline ( user_id varchar, tweet_id uuid, author varchar, body varchar, PRIMARY KEY (user_id, tweet_id) ); 对于这样的模式,分区键(存储引擎行键)将由user\u id值组成,而tweet\u id将复合到列名中。相反,我想要的是分区键(存储引擎行键)有一个像user\u id:

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

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

对于这样的模式,分区键(存储引擎行键)将由
user\u id
值组成,而
tweet\u id
将复合到列名中。相反,我想要的是分区键(存储引擎行键)有一个像user\u id:tweet\u id这样的复合值。显然,我可以在我的应用程序中做一些像
key=user\u id+:“+tweet\u id
,但是有没有办法让CQL 3为我做这件事?

,直到1.2出来,答案是否定的。分区键将始终是第一个组件。正如您所说,这样做的方法是自己创建复合键。你不应该回避这一点,因为这其实很常见。

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

您的格式为:

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

很高兴知道!为了避免混淆,我更新了上面的答案,并对你的答案进行了更新因此,在Cassandra 1.2.0及以后版本中提供。