Почему выбор ключа партиционирования в key-value хранилище настолько важен?
- Как выбрать ключ партиционирования в DynamoDB?
Ключ определяет распределение по узлам, а значит равномерность нагрузки: перекос упирается в возможности одной партиции, сколько бы ни было остальных.
- Высокая кардинальность и равномерное обращение: user_id лучше, чем status или дата
- Запросы должны содержать ключ — иначе полный перебор
- Дата как ключ — все сегодняшние записи в одну партицию
А ещё Составной ключ или «соль» для горячих значений
Подробно
Хранилище распределяет данные хешированием ключа, поэтому равномерность зависит от того, насколько разнообразны и равновероятны ключи. Классические ошибки: ключом становится дата, и вся сегодняшняя нагрузка идёт в одну партицию; или идентификатор арендатора, среди которых один крупнее остальных на порядок. Итог один — горячая партиция, ограничивающая пропускную способность всей системы, сколько бы узлов ни добавили. Приёмы борьбы: добавить к ключу случайный или производный суффикс, чтобы разнести нагрузку, кэшировать горячие значения перед хранилищем, либо пересмотреть саму модель доступа. Проектировать ключ нужно до запуска: сменить его потом означает переливать все данные.
Что хотят услышать
- Связь ключа с распределением нагрузки.
- Критерии хорошего ключа.
- Примеры плохих ключей.
Частые ошибки
- Брать ключом монотонно растущее значение вроде текущей даты.
- Рассчитывать, что добавление узлов решит проблему горячего ключа.
Проверьте себя
Один верный вариант. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✗Ключ влияет только на удобство чтения кода
- ✓Ключ определяет партицию: неудачный выбор перекашивает нагрузку на один узел
- ✗Ключ определяет уровень изоляции и максимальный размер значения, хранимого в партиции
- ✗От ключа зависит формат сериализации значения
Что спросят дальше
- Что такое приём с суффиксом ключа и чем за него платят?
- Как обнаружить горячую партицию по метрикам?
Разбор темы
- Key-value хранилища
Простейшая модель доступа по ключу, типичные применения, Redis против DynamoDB, партиционирование и ограничения.
Связанные вопросы
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.