Использование предложения Order by в cassandra

При создании таблицы в cassandra мы можем указать ключи кластеризации с порядком, как показано ниже.

Create table user(partitionkey int, id int, name varchar, age int, address text, 
   insrt_ts timestamp,
 Primary key(partitionkey, name, insrt_ts, id)
 with clustering order by (name asc, insrt_ts desc, id asc);

когда мы вставляем данные в эту таблицу, в соответствии с документацией cassandra записи сортируются на основе ключей кластеризации.

Когда я извлекаю записи с помощью CQL1 и CQL2, я получаю тот же порядок сортировки.

CQL1:

Select * from user where partitionkey=101;

CQL2:

Select * from user where partitionkey=101 order by name, insrt desc, id;

в чем разница между CQL1 и CQL2?


person suresh    schedule 29.01.2014    source источник
comment
Ваши столбцы кластеризации такие же, как ваш ORDER BY в вашем операторе CQL2. Почему вы ожидаете, что результаты будут упорядочены по-разному между двумя утверждениями?   -  person Aaron    schedule 30.01.2014
comment
Таким образом, нет смысла упоминать порядок по предложению, если нам нужны значения в порядке ключей кластеризации. когда я запрашиваю записи с другим порядком, я получаю сообщение об ошибке. Могу ли я узнать, каковы все другие порядки, которые я могу сделать с указанными выше ключами кластеризации?   -  person suresh    schedule 31.01.2014


Ответы (1)


DataStax рекомендует подход к моделированию данных, ориентированный на запросы, при котором результаты сохраняются в том порядке, в котором они требуются во время запроса. Этот порядок определяется как ключом раздела, так и первым столбцом кластеризации [составного] первичного ключа. документ DataStax по пункту ORDER BY< /a> объясняет это:

Запрос составных первичных ключей и результаты сортировки Предложения ORDER BY могут выбирать только один столбец. Этот столбец должен быть вторым столбцом в составном PRIMARY KEY. Это также относится к таблицам с более чем двумя компонентами столбцов в первичном ключе. Порядок может быть выполнен в порядке возрастания или убывания, по умолчанию в порядке возрастания и указан с помощью ключевых слов ASC или DESC.

В предложении ORDER BY ссылайтесь на столбец, используя фактическое имя, а не псевдонимы.

Например, настройте таблицу списков воспроизведения, в которой используется составной первичный ключ, вставьте данные примера и используйте этот запрос для получения информации о конкретном списке воспроизведения, упорядоченном по song_order. Начиная с Cassandra 1.2, вам не нужно включать столбец ORDER BY в выражение выбора.

Таким образом, вы действительно можете изменить его, только запросив порядок ASCending или DESCending.

Вы также можете ознакомиться с (бесплатным) онлайн-курсом по разработке Java с помощью Apache Cassandra по адресу DataStax Ac*ademy. Я считаю, что сеанс 3 предлагает модуль по предложению ORDER BY.

Редактировать 2019

Для всех будущих гуглеров я написал статью на эту тему примерно через год после этого поста. Сейчас он устарел, но по-прежнему актуален для упорядочивания наборов результатов с помощью Cassandra: https://www.datastax.com/dev/blog/we-shall-have-order

person Aaron    schedule 03.02.2014
comment
Таким образом, запросы упорядочены так, как мы определяем ключи кластеризации при создании таблиц. Если мы хотим изменить порядок, только в этот раз мы должны указать порядок по предложению с desc. Спасибо за объяснение. - person suresh; 08.02.2014