Базы данных
Для чего модуль
Научиться принимать решения по данным так, чтобы система была быстрой, корректной и эволюционировала без аварийных миграций.
Результат после прохождения
- Вы выбираете SQL/NoSQL под конкретный продуктовый сценарий.
- Вы проектируете схемы и индексы через реальные паттерны чтения/записи.
- Вы понимаете транзакции, согласованность и компромиссы под нагрузкой.
- Вы умеете планировать безопасные миграции и производственную поддержку БД.
Термины и аббревиатуры
| Термин | Коротко |
|---|---|
ACID | Свойства надежной транзакции |
Index | Ускорение поиска |
Isolation | Степень изоляции транзакций |
N+1 | Лишние последовательные запросы |
Replication | Копирование данных между узлами |
Фокус по грейдам
Junior: понимать базовые механики и объяснять их простыми примерами.Middle: применять тему в продуктовых сценариях с учетом рисков и ограничений.Senior: управлять архитектурными trade-offs, метриками и эволюцией решения.
Как работать с модулем
- Для каждого урока используйте один домен (orders, payments, users).
- Любое решение связывайте с workload: read/write ratio, latency, consistency.
- После урока фиксируйте артефакт: схема, explain-анализ, миграционный план.
Программа модуля
Урок 1. Моделирование данных
Цель: проектировать схему, которая отражает доменные инварианты и рабочие сценарии.
От домена к схеме
- Определите сущности и их жизненный цикл.
- Выделите инвари анты (уникальность, обязательность, связи).
- Отразите инварианты на уровне constraints, а не только кода.
SQL vs NoSQL (практично)
- SQL — когда критичны связи, транзакции, отчетность.
- NoSQL — когда нужны гибкие документы, горизонтальный масштаб, event-heavy сценарии.
- Часто оптимален polyglot подход, если есть дисциплина границ.
Где ломается в проде
- Схема проектируется «под текущий экран», а не под эволюцию домена.
- Инварианты живут только в приложении и теряются при обходных путях.
- Выбор типа БД делается по моде, а не по workload.
Мини-задача (обязательная)
Смоделируйте схему для одного домена: сущности, связи, ограничения, ожидаемые read/write patterns.
Что спросит интервьюер: почему вы выбрали эту модель данных и какие альтернативы отвергли.
Критерий готовности по уроку: вы можете защитить схему через доменные инварианты и рабочие сценарии.
Урок 2. Запросы и индексы
Цель: ускорять запросы системно, а не «добавляя индекс на всё подряд».
Оптимизация через планы выполнения
- Читайте
EXPLAIN/EXPLAIN ANALYZE. - Ищите full scan, неэффективные join, сортировки и фильтры.
- Оптимизируйте в порядке наибольшего влияния на p95/p99.