Любая альтернатива вторичной индексации в семействе суперколонок Cassandra
Моя модель данных выглядит следующим образом
#keyspace_name{
#columnfamily1
{startDate_mobileNo: // row key
{ Call_TYpe: // super column
{ xyz: value
endDate : value;
}
}
}
Теперь я хочу сделать результаты поиска с фильтрацией startDate_mobileNo, Call_TYpe и endDate. Это можно сделать, сделав endDate в качестве вторичного индекса. Но вторичная индексация в супер-столбце невозможна. Поэтому я не могу понять, как поступить. Да, я могу выполнить вторичную фильтрацию индексации, отфильтровывая данные результатов, используя простое кодирование Java. Но я думаю, что это неправильная идея, так как в случае больших данных может быть нехватка памяти. Поэтому, пожалуйста, предложите мне несколько идей.
Заранее спасибо
1 ответ
Я верю, что вы можете получить то, что вы хотите, используя составные ключи, которые имеют новую первоклассную поддержку CQL в Cassandra 1.1. См. Этот пост в блоге о моделировании с использованием композитов для получения дополнительной информации.
Суперколонны - определенно неправильный путь - они всегда были несколько проблематичными, и теперь они устарели, и вы можете получить все, что вы хотели от них, используя вместо этого композиты.
Если я правильно интерпретирую вашу модель, вы можете сделать что-то вроде:
CREATE TABLE columnfamily1 (
startDate timestamp,
mobileNo text,
Call_TYpe int,
endDate timestamp,
xyz text,
PRIMARY KEY (startDate, mobileNo, Call_TYpe)
);
Вы также можете создать вторичный индекс для endDate, если хотите. Мне не ясно, будете ли вы.
Если вы хотите привести более конкретный пример запросов сортировки, которые вам нужно поддерживать, я могу помочь вам больше.