Заказ колонок в Кассандре
Когда я создаю таблицу в CQL, нужно ли быть точным для порядка столбцов, которые Не в primary_key и Не кластеризуют столбцы:
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)
);
Спасибо за вашу помощь
1 ответ:
Оба эти утверждения будут неудачными, потому что:
- лишняя запятая.
- вы не предоставили определение первичного ключа.
Предполагая, что вы их зафиксировали, то ответ все равно: "да, они одинаковы."
Кассандра применяется свой порядок своей колонны во время создания таблицы. Рассмотрим эту таблицу так, как я ее набрал:
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)