Cassandra/CQL3列族能否具有复合分区键?
CQL 3允许使用如下定义的“复合”主键: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:
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及以后版本中提供。