Получить доступ

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

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

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

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

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

Так подсказку видит пользователь sotto на живом собеседовании — за пару секунд, пока вы думаете вслух.

Подробно

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

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

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

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

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

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

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

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

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

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

Разбор темы

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

Закрытая бета

Подсказки на собеседовании — в реальном времени

sotto слышит вопрос интервьюера и показывает короткий ответ и план, как в блоке «Коротко». Оставьте контакт — пришлём доступ и промокод.

  • Промокод на 2 часа — сверх пробных 30 минут
  • Программа для Windows — скачать сразу, войти — через Яндекс ID или VK ID
  • Прямая связь с разработчиком: что улучшить — сделаем