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

Почему выбор ключа партиционирования в key-value хранилище настолько важен?

MiddleKey-value хранилища
Ещё спрашивают так:
  • Как выбрать ключ партиционирования в DynamoDB?
Коротко

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

  • Высокая кардинальность и равномерное обращение: user_id лучше, чем status или дата
  • Запросы должны содержать ключ — иначе полный перебор
  • Дата как ключ — все сегодняшние записи в одну партицию

А ещё Составной ключ или «соль» для горячих значений

Подробно

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

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

  • Связь ключа с распределением нагрузки.
  • Критерии хорошего ключа.
  • Примеры плохих ключей.

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

  • Брать ключом монотонно растущее значение вроде текущей даты.
  • Рассчитывать, что добавление узлов решит проблему горячего ключа.

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

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

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

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

  • Что такое приём с суффиксом ключа и чем за него платят?
  • Как обнаружить горячую партицию по метрикам?

Разбор темы

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

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

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

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

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