在Cassandra订购的列

Fun*_*hor 4 cql cassandra

当我创建CQL表,是否有必要准确的是列的排列顺序不是在primary_key和NOT聚类列:

CREATE TABLE user (
    a ascii,
    b ascii,
    c ascii,
    PRIMARY KEY (a)
);
Run Code Online (Sandbox Code Playgroud)

它等同于?

CREATE TABLE user (
    a ascii,
    c ascii, <-- switched
    b ascii, <-- switched
    PRIMARY KEY (a)
);
Run Code Online (Sandbox Code Playgroud)

谢谢您的帮助

Aar*_*ron 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));
Run Code Online (Sandbox Code Playgroud)

创建它之后,我将描述该表,以便您可以看到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)
Run Code Online (Sandbox Code Playgroud)

本质上,Cassandra将对分区键和聚类键(按PRIMARY KEY定义中的优先级排序)进行排序,然后列按升序排列.