Запросы в Cassandra
Вопрос
Таблица в Cassandra с PRIMARY KEY ((user_id), created_at). Какой запрос будет эффективным без дополнительных индексов?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Варианты ответа
- Все события за вчера по всем пользователям сразу
- Число событий по каждому пользователю за месяц
- Последние 20 событий одного
user_idправильный ответ - Поиск событий по подстроке в тексте сообщения
Разбор
Ключ партиции user_id определяет, на каком узле лежат данные, а created_at задаёт порядок внутри партиции. Поэтому запрос по конкретному user_id с диапазоном или сортировкой по created_at читает одну партицию последовательно. Запрос по дате без user_id требует обойти все партиции на всех узлах (Cassandra требует ALLOW FILTERING). Агрегаты по всем пользователям и полнотекстовый поиск это задачи для других систем. В Cassandra таблицы проектируют под запросы, часто дублируя данные.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.