Разница между созданием вторичного индекса и созданием индекса CF вручную в Cassandra

Может ли кто-нибудь сказать мне разницу между созданием вторичного индекса и созданием индекса CF вручную в Cassandra?


person Naresh    schedule 21.07.2016    source источник


Ответы (1)


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

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

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

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

person medvekoma    schedule 22.07.2016