Сортировка результатов по времени в Cassandra

Я пытаюсь получить данные временных рядов от Кассандры.

Моя таблица представлена ​​на картинке, и когда я запрашиваю, я получаю данные, как показано ниже: сначала я вижу все ложные данные независимо от времени, когда я вставил их в Cassandra, а затем я вижу все истинные данные. Мой вопрос: как я могу сортировать или сортировать данные по времени, когда я вставляю последовательно, чтобы я мог получать данные по порядку, когда я их вставляю.

Когда я пытаюсь «выбрать c1 из table1 в порядке c2», я получаю следующую ошибку: «ORDER BY поддерживается только тогда, когда ключ раздела ограничен EQ или IN».

Спасибо моя логическая таблица


person Henrik    schedule 15.06.2017    source источник


Ответы (1)


Предполагая, что ваша схема выглядит примерно так:

CREATE TABLE table1 (
c1,
c2,
PRIMARY KEY (c1))

Это приведет к 2 разделам в вашей таблице (c1 = true и c1 = false). Каждый раздел будет управляться одним узлом.

Ваш первоначальный запрос будет извлекать данные из вашей таблицы по всем разделам. Таким образом, он перейдет к первому разделу, извлечет все строки, затем ко второму и извлечет все строки, поэтому вы видите результаты, которые вы делаете.

Cassandra оптимизирована для извлечения данных только из одного раздела, поэтому вам следует подумать о настройке схемы, чтобы разрешить это — чтобы использовать ORDER BY в запросе, вам нужно извлекать данные только из одного раздела.

В зависимости от вашего варианта использования вы можете рассмотреть возможность группировки данных или выполнения сортировки в своем приложении.

person Alec Collier    schedule 19.06.2017
comment
Алек спасибо за ответ. В моей таблице c1 — логическое значение, а c2 — метка времени. Но я думаю, что нашел решение - person Henrik; 19.06.2017