Ответ 1
Этот запрос также не работает:
Это потому, что вы неправильно понимаете, как порядок сортировки работает в Кассандре. Вместо использования вторичного индекса на firstname
создайте таблицу специально для этого запроса, например:
CREATE TABLE usersByFirstName (
id int,
firstname text,
lastname text,
PRIMARY KEY (firstname,id));
Теперь этот запрос должен работать:
SELECT * FROM usersByFirstName WHERE firstname='francois'
ORDER BY id DESC LIMIT 5;
Обратите внимание, что я создал составной первичный ключ на firstname
и id
. Это приведет к разделению данных на firstname
(позволяя вам выполнить запрос), а также кластеризации ваших данных с помощью id
. По умолчанию ваши данные будут группироваться по id
в порядке возрастания. Чтобы изменить это поведение, вы можете указать CLUSTERING ORDER
в инструкции создания таблицы:
WITH CLUSTERING ORDER BY (id DESC)
... и тогда вам даже не понадобится предложение ORDER BY
.
Недавно я написал статью о том, как работает кластеризация в Cassandra ( "У нас есть заказ" ). Он объясняет это и охватывает также некоторые стратегии упорядочения.