Мне нужно создать таблицу Cassandra, на которой будут выполняться конкретные запросы.Первичный ключ в таблице Кассандры
Мне нужно иметь возможность искать в этой таблице на основе диапазона дат, типа и одного или нескольких статусов. Более конкретно, запрос будет как:
выберите * из таблицы, где дата в диапазоне (от, до) и тип = 'некоторый тип' и статус IN (STATUS1, СОСТОЯНИЕ 2, ..., statusN)
Поскольку Cassandra не разрешает операцию сравнения с ключом раздела, я решил сломать дату (которая является Мгновенным типом в Java) в MONTH_YEAR. Например, дата 2015/21/12: 19: 02: 01 будет преобразована в 122015 (12 - месяц и 2015 год даты).
Пока что моя идея для ключа раздела: ((type, monthAndYear), статус, дата, uuid).
Так что, когда я хочу, чтобы все записи с определенным типом, состоянием и внутри диапазона дат, я могу выполнить: выберите * из таблицы, где типа = «типа» и monthAndYear IN «monthAndYear1 monthAndYear2, monthAndYear3» и статуса IN ('status1', status2 ') и date> = from и date < = to.
Моя единственная проблема здесь в том, что результат этого запроса упорядочен по статусу (так как это первый столбец кластеризации таблицы). Я хочу, чтобы все записи были упорядочены на основе поля даты.
Если я поменяю статус на поля даты, Cassandra не разрешает другой предикат равенства после сравнения. Если я удалю поле статуса из столбцов кластеризации и создаю на нем индекс, то снова Cassandra не разрешит операцию IN в столбце первичного ключа, если в запросе существует индексированный столбец.
Не могли бы вы предложить мне какое-либо решение (если оно существует) для этой проблемы?
Благодаря
http://stackoverflow.com/help/mcve, ** Код ** – theblindprophet