当我在CQL中创建表时,是否必须精确确定primary_key和 NOT 聚类列中 NOT 列的顺序:
CREATE TABLE user (
a ascii,
b ascii,
c ascii,
PRIMARY KEY (a)
);
它等同于吗?
CREATE TABLE user (
a ascii,
c ascii, <-- switched
b ascii, <-- switched
PRIMARY KEY (a)
);
感谢您的帮助
答案 0 :(得分:5)
这两个陈述都会失败,因为:
假设你已经修好了,那么答案仍然是“是的,它们是相同的”。
Cassandra在创建表时将自己的订单应用于您的列。考虑这个表,因为我输入了它:
CREATE TABLE testorder (
acolumn text,
jcolumn text,
dcolumn text,
bcolumn text,
apkey text,
bpkey text,
ackey text,
bckey text,
PRIMARY KEY ((bpkey,apkey),bckey,ackey));
创建后,我将描述该表,以便您可以看到Cassandra已应用于列的顺序。
aploetz@cqlsh:stackoverflow> desc table testorder ;
CREATE TABLE stackoverflow.testorder (
bpkey text,
apkey text,
bckey text,
ackey text,
acolumn text,
bcolumn text,
dcolumn text,
jcolumn text,
PRIMARY KEY ((bpkey, apkey), bckey, ackey)
) WITH CLUSTERING ORDER BY (bckey ASC, ackey ASC)
基本上,Cassandra将对分区键和聚类键(按PRIMARY KEY定义中的优先级排序)进行排序,然后列按升序排列。