Вопрос с собеседования · Базы данных

Из чего состоит первичный ключ в Cassandra?

MiddleКолоночные БД
Ещё спрашивают так:
  • Что такое partition key и clustering key?
  • Как моделировать данные в Cassandra?
Коротко

Первичный ключ = partition key (на каком узле и в какой партиции лежат данные) + clustering columns (порядок строк внутри партиции).

  • Эффективны запросы по partition key с диапазоном по clustering columns
  • PRIMARY KEY ((chat_id), created_at, msg_id) — сообщения чата по времени
  • Партиция не должна расти бесконечно — добавляют бакет (день, месяц)

А ещё Моделирование от запросов: одна таблица на запрос, дублирование — норма

Подробно

Cassandra моделируется под запросы (query-first): partition key решает, на каком узле лежат данные и обеспечивает доступ по нему, а clustering columns задают сортировку внутри партиции. Эффективны только запросы по этому ключу, поэтому данные часто дублируют в несколько таблиц под разные паттерны.

Что хотят услышать

  • Две части ключа и их роли.
  • Какие запросы эффективны.
  • Ограничение размера партиции и бакеты.

Частые ошибки

  • Ожидать произвольных запросов по любым колонкам.
  • Выбирать монотонно растущий partition key (горячая партиция).

Проверьте себя

Один верный вариант. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✓Из partition key (выбор партиции) и clustering columns (порядок внутри неё)
  • ✗Только из одного автоинкрементного id
  • ✗Из clustering key (выбор узла) и partition columns (сортировка)
  • ✗Из внешнего ключа на другую таблицу

Что спросят дальше

  • Что такое LSM-дерево?
  • Чем wide-column отличается от колоночной OLAP-БД?

Разбор темы

Связанные вопросы

Партнёр платформы

Разбор собеседования с sotto

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

Разбор собеседования