2016-07-21 7 views

ответ

0

Вторичные индексы в Кассандре сохраняются и поддерживаются на каждом узел. Таким образом, при фильтрации по второстепенному индексу Cassandra нужно будет выполнять поиск на каждом узле, а затем возвращать комбинированные результаты. Поэтому фильтрация по вторичным индексам может быть значительно медленнее, чем фильтрация по ключу раздела (по моим тестам она может быть в 10 раз медленнее, в зависимости от ваших данных и топологии).

Поддержание собственной индексной таблицы более эффективно для большинства случаев использования, но вам нужно иметь дело с обновлением индексной таблицы самостоятельно. Кроме того, вам нужно будет выполнить два запроса для извлечения ваших данных: запрос, который запрашивает индексную таблицу, а другой - для получения фактических данных.

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

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