Ответ вслух Senior Выбор хранилища обновлено

Хранилище под паттерн доступа

Вопрос

Объясните на примере, что значит «проектировать хранение от паттерна доступа».

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Это значит идти от запросов к схеме. Пример: лента заказов в личном кабинете.

Что должно прозвучать в ответе

  • Сначала перечисляю запросы и их частоту, потом выбираю модель

  • Ключи и индексы под самые частые запросы

  • Денормализация ради чтения там, где это оправдано

  • Отдельные представления или хранилища под разные запросы

  • Цена: синхронизация копий и усложнение записи

Что могут спросить следом

  • Когда денормализация оправдана?
  • Как держать копии данных согласованными?

Разбор

Это значит идти от запросов к схеме. Пример: лента заказов в личном кабинете. Самый частый запрос: последние 20 заказов пользователя со статусом и суммой. Значит, ключ шардирования user_id, индекс (user_id, created_at desc), а сумму и число позиций храню прямо в заказе, а не считаю JOIN по позициям каждый раз. Второй паттерн, отчёт продавца по продажам за месяц, совсем другой: его отдаю из ClickHouse, куда события уходят асинхронно. Цена: несколько представлений одних данных, их надо синхронизировать, а запись становится сложнее. Зато каждый частый запрос попадает в один узел и индекс.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме