Перейти к основному содержимому

Базы данных

Быстрый переход к обучению

  1. Базы данных — учебный модуль
  2. Все учебные модули

Что нужно знать

  1. Реляционные и нереляционные базы: когда что выбирать.
  2. SQL основы: joins, group by, фильтрация, пагинация.
  3. Индексы, EXPLAIN/ANALYZE, N+1 и write trade-offs.
  4. Транзакции, изоляция, idempotency и consistency.
  5. Кэширование и read/write trade-offs.

Что уметь объяснить на собеседовании

  1. Когда SQL лучше document-store и наоборот.
  2. Почему индекс ускоряет один запрос и может замедлить запись.
  3. Что такое N+1 и как его предотвращать.
  4. Как проектировать API-пагинацию без деградации.

Быстрая SQL-практика

  1. SELECT/WHERE: Активные клиенты и Сотрудники без ментора.
  2. JOIN: Клиенты без потери нулевых заказов и Оплаченные заказы без дублей.
  3. Aggregation: Города с выручкой выше порога и Средний оплаченный чек по городам.
  4. Senior SQL: Следующая страница заказов и Второй заказ пользователя.

Грейд-фокус

  1. Junior: базовые SQL-запросы и понимание индексов.
  2. Middle: оптимизация запросов и моделирование данных.
  3. Senior: архитектурный выбор storage и стратегия масштабирования.

Глубокие кейсы собеседования

  1. Запрос стал медленным на проде после роста данных.
  2. Дубли и несогласованность из-за отсутствия транзакционной границы.
  3. Высокая latency из-за N+1 в API.

Практический минимум

  1. Решить минимум 6 задач в SQL-песочнице: 2 basic, 2 join, 1 aggregation, 1 cursor/window.
  2. Разобрать план запроса и предложить индекс.
  3. Спроектировать схему для простого домена (users/orders/payments).

Типовые ловушки

  1. Выбирать БД по тренду, а не по нагрузке и требованиям.
  2. Игнорировать влияние индексов на write path.
  3. Не учитывать миграции схемы и обратную совместимость.

Self-review перед собеседованием

  1. Я могу объяснить основы SQL join/aggregation.
  2. Я понимаю, как оценивать влияние индексов.
  3. Я умею описать storage trade-offs для продуктового кейса.

Связанные материалы

  1. Node.js
  2. NestJS
  3. Frontend System Design