Cassandra 中的列排序
Columns ordering in Cassandra
当我在 CQL 中创建 table 时,primary_key 和 NOT 中的列的顺序是否必须准确 primary_key 和 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)
);
感谢您的帮助
这两个语句都会失败,因为:
- 多余的逗号。
- 您还没有提供主键定义。
假设您已修复这些问题,那么答案仍然是 "yes they are the same."
Cassandra 在 table 创建时将自己的顺序应用于您的列。考虑一下我输入的 table:
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));
创建后,我将描述 table 以便您可以看到 Cassandra 应用到列的顺序。
aploetz@cqlsh:Whosebug> desc table testorder ;
CREATE TABLE Whosebug.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 定义中的优先级排序),然后列按升序排列。
当我在 CQL 中创建 table 时,primary_key 和 NOT 中的列的顺序是否必须准确 primary_key 和 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)
);
感谢您的帮助
这两个语句都会失败,因为:
- 多余的逗号。
- 您还没有提供主键定义。
假设您已修复这些问题,那么答案仍然是 "yes they are the same."
Cassandra 在 table 创建时将自己的顺序应用于您的列。考虑一下我输入的 table:
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));
创建后,我将描述 table 以便您可以看到 Cassandra 应用到列的顺序。
aploetz@cqlsh:Whosebug> desc table testorder ;
CREATE TABLE Whosebug.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 定义中的优先级排序),然后列按升序排列。