Базы данных для бэкенда: PostgreSQL вглубь и карта хранилищ

Курс для бэкендера на любом языке: SQL и схема с нуля — дальше индексы, планы, MVCC, конкурентная запись, выбор хранилища под задачу. Чтобы самому находить причину медленного запроса и отвечать на секции по базам от понимания.
Средний уровень
10-15 часов в неделю
Часть
1 программы →
Сертификат Stepik

Чему вы научитесь

  • Читать EXPLAIN (ANALYZE, BUFFERS) и называть причину, по которой запрос по таблице в пять миллионов строк идёт четыре секунды вместо сорока миллисекунд
  • Подбирать индекс под конкретный запрос, объяснять, почему существующий не берётся, и считать его цену на записи
  • Защищать запись от гонок: уникальное ограничение, ограничение исключения, ON CONFLICT, блокировка строки, версия строки, идемпотентный повтор
  • Говорить, что именно видит транзакция на каждом уровне изоляции, и узнавать deadlock — потому что устроил его своими руками
  • Проектировать схему под запросы, которые к ней пойдут: нормальные формы, осознанная денормализация, типы PostgreSQL, jsonb, массивы и диапазоны
  • Писать SQL любой рабочей сложности — от JOIN и агрегатов до оконных функций, рекурсивных CTE и LATERAL
  • Переносить схему на живой базе, не заблокировав сервис: миграция в несколько шагов, двойная запись, переливка партиями, индекс без блокировки
  • Находить и устранять N+1 — по логу запросов, на любом ORM и любом языке
  • Строить поиск по описаниям: полнотекстовый на tsvector и семантический на pgvector — и называть границы обоих
  • Выносить файлы сервиса в объектное хранилище: спроектировать ключи и доступ, отдавать по временным ссылкам, держать базу согласованной с бакетом
  • Применять Redis по назначению: структура данных под задачу, TTL и вытеснение, инвалидация — и запрет делать кэш источником истины
  • Выбирать хранилище с числами в руках и выдерживать встречные вопросы — на ревью и на собеседовании

О курсе

Секция по базам данных на собеседовании — та, где разговор сходит с рельсов. Почему индекс не берётся. Что видит транзакция на Read Committed. Зачем в этом проекте Redis. Ответ пересказывает статью, и по следующему вопросу понятно, что он не засчитан.

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

Что у тебя будет в конце. Ты открываешь план медленного запроса и называешь причину, а не перебираешь индексы наугад. Объясняешь, как прошли две брони на один слот, хотя проверка в коде была, и каким механизмом это закрывается. Говоришь, почему рядом с PostgreSQL стоит Redis, а фотографии не лежат в таблице — с числами, а не со ссылкой на чужой блог. Осязаемого два: локальный стенд, на котором всё это проделано руками, и капстоун — решение по хранению для незнакомого сервиса, разложенное по ролям, с планом роста и трёхминутной защитой, которую можно произнести вслух.

Курс не питоновский — он вообще ничей. Предмет здесь данные, а не язык приложения. Запрос, схема, индекс и план читаются одинаково из Go, Java, TS, PHP, C# и Python; там, где без кода сервиса не обойтись — N+1, транзакция в коде, миграции, — он будет псевдокодом. Ни одного «как ты помнишь из своего фреймворка».

Это не курс про SELECT и JOIN. Планку видно по второй половине: MVCC и служебные колонки версий строки, уровни изоляции и аномалии, deadlock, устроенный своими руками, bloat и autovacuum, план на таблице в пять миллионов строк, построение индекса без блокировки записи, переезд схемы на живой базе, ANN-индекс и его точность.

Каждое следующее хранилище входит через ограничение, в которое ты упёрся сам. Не «глава про Redis», а «один и тот же запрос двадцать тысяч раз в минуту». Не «глава про S3», а «фотографии ресурсов не помещаются в базу». Сквозной проект — сервис бронирования ресурсов — растёт от восьми строк каталога до пяти миллионов броней; рядом живут камео-миры вроде маркетплейса на триста тысяч объявлений.

Дорога по темам: таблицы и первые запросы → JOIN, агрегаты, подзапросы → своя схема, изменения и транзакции → проектирование схемы, типы PostgreSQL и jsonb → оконные функции, CTE, LATERAL → индексы → планы запросов и диагностика → MVCC, изоляция, блокировки → схема на живой базе, партиционирование, реплики → полнотекстовый и векторный поиск → PostgreSQL как проект и другие SQL-СУБД → объектное хранилище → Redis → MongoDB → Elasticsearch → колоночная аналитика → выбор хранилища и капстоун.

Стек: PostgreSQL 18 и pgvector, SQL, Docker Compose, MinIO и S3 API, Redis, MongoDB, Elasticsearch, ClickHouse, DuckDB.

Границы честные. Эксплуатации здесь нет: настройка репликации и переключение, бэкапы и восстановление на точку во времени, пулер соединений, мониторинг, нагрузочное тестирование — не входят. Берётся только то, что меняет твой код и твою схему: наличие реплики и лаг чтения, партиционирование как дизайн, понимание пулинга. Нет API конкретных ORM — они разбираются как класс инструментов, без привязки к библиотеке. Нет распределённых систем: доставка изменений между сервисами, транзакционный исходящий ящик, сага остаются за границей. Нет дата-инженерии: пайплайны, витрины и моделирование аналитических хранилищ — другая профессия. Cassandra, графовые базы, временные ряды и Kafka разобраны обзорным уроком на глубину «на какой вопрос отвечает и где граница»; ставить по этому знанию систему в прод нельзя, и курс говорит об этом прямо.

Для кого этот курс

Курс для тех, кто уверенно пишет код, но данные до сих пор трогал через ORM и готовые запросы: что-то слышал про индексы и транзакции, системного знания нет. 1. Бэкенд-разработчики на любом языке — Go, Java, TS, PHP, C#, Python. Язык приложения здесь не имеет значения: предмет курса общий для всех. 2. Те, кто готовится к собеседованию на грейд выше и знает за собой, что секция по базам — самая слабая. 3. Разработчики, у которых пет-проект перерос игрушку: данных стало миллионы, список грузится секундами, и «добавить индекс» больше не помогает. 4. Те, кто прошёл вводный курс по backend и упёрся в данные: сервис написан, а что происходит внутри базы — по-прежнему непонятно. 5. Аналитики, дата-инженеры и QA-автоматизаторы, которым SQL нужен глубже уровня «выбрать строки», а устройство базы — чтобы понимать, почему запрос идёт долго. Кому не сюда: 1. если ты уже читаешь планы запросов, настраиваешь autovacuum и сам решаешь, какой индекс здесь нужен, — курс будет повторением. 2. Если нужна эксплуатация СУБД (репликация, бэкапы, PITR, мониторинг, тюнинг пулов) — этого здесь нет сознательно. 3. Если нужен курс по конкретному ORM или по своему фреймворку — тоже не сюда: курс языконезависим.

Начальные требования

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

  • Программировать на каком-либо языке: функции, типы, коллекции, циклы, условия. Какой именно — неважно.
  • Работать в терминале на базовом уровне: запустить команду, прочитать вывод.

Что нужно на машине

  • Docker Desktop или Docker Engine с плагином compose — ставится по ходу курса, перед первым стендом.
  • Памяти виртуальной машине Docker — около 4 ГБ. Полный стенд к концу курса занимает меньше половины, и в шагах сказано, что останавливать, если памяти меньше.

Наши преподаватели

Как проходит обучение

Формат. Курс полностью текстовый: 17 модулей, 93 урока, 1159 шагов. Видео нет — есть текст, запросы, вывод команд, планы и разбор ошибок.

Проверка знаний. 446 шагов из 1159 — проверяемое задание: 77 SQL-задач и 369 вопросов с выбором, сопоставлением и порядком.

SQL решается прямо на платформе. Пишешь запрос, движок Stepik исполняет его на настоящих данных, ты сразу видишь результат — ставить для этого ничего не нужно. Одна честная деталь: тренажёр Stepik построен на MySQL 8, а курс про PostgreSQL. Поэтому задачи написаны в пересечении диалектов, и там, где диалекты расходятся, курс говорит об этом в том же шаге, где конструкция появляется. Переносимый SQL — рабочий навык, а не компромисс.

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

Стенд на твоей машине — и это главное про формат. 192 шага-инструкции: сгенерировать пять миллионов строк, снять EXPLAIN, устроить deadlock, посмотреть вытеснение в Redis, переехать со схемой на живой базе. Автопроверить это платформа не может — серверов баз данных в её песочнице нет, и симулировать их на Python было бы нечестной формой. Поэтому вместо автопроверки: точные команды, дословно приведённый ожидаемый вывод, 61 блок «Проверь себя» и квизы на результат наблюдения.

Проектные шаги. Начиная с четвёртого модуля каждый заканчивается собственным проектом — 15 за курс, по условию и чек-листу «готово, когда»: что денормализовать, какие индексы нужны сервису, как защитить запись, как переехать со схемой незаметно, какое хранилище выбрать и чем за это платить.

Капстоун. Финал — спроектировать хранение под незнакомый сервис и защитить решение: разбор по ролям, индексы с обоснованием, план роста на десятикратном объёме и трёхминутная защита. Три варианта на выбор, включая «своё решение по своему проекту».

Сообщество. Проходить курс в одиночку не обязательно — у него есть «Гильдия вайба»: помощь, когда застрял, разбор чужих и своих решений по хранению, план, в котором оценка не сходится с фактом, поиск тиммейтов и вопросы с собеседований, на которые не нашлось ответа. Чем активнее участвуешь — тем больше берёшь от курса

Программа курса

загружаем...
Certificate

Сертификат

Сертификат Stepik

Входит в 1 программу

  •    
     
     

Что вы получаете

  • Локальный стенд на Docker Compose, собранный по ходу курса: PostgreSQL 18 и pgvector, MinIO, Redis, MongoDB, Elasticsearch, ClickHouse, DuckDB — вместе с данными, запросами и экспериментами он остаётся у тебя
  • Капстоун: решение по хранению для сервиса, разложенное по ролям, с числами, планом роста и защитой на три минуты — файл, который читается без тебя
  • Пройденный руками стек из вакансий: SQL и PostgreSQL, индексы и планы, транзакции и блокировки, объектное хранилище, Redis, MongoDB, Elasticsearch, ClickHouse
  • Ответы на вопросы секции по данным — от механизма, а не от заученной формулировки: в 27 шагах отдельно разобрано, почему эту тему спрашивают и что на самом деле засчитывают
  • 446 проверяемых заданий и 15 проектных шагов с чек-листами самопроверки
  • Умение объяснить своё решение по данным: что оптимизируем, чем платим и каким требованием это оправдано
  • Сертификат Stepik по итогам курса
  • Доступ к сообществу «Гильдия вайба» в Telegram и Discord

Сколько стоит обучение

Old Price: 4 990  Discount Price: 2 495 
Вы попробовали и поняли, что вам сейчас не подходит этот курс? Ничего страшного, мы вернём вам деньги в течение 30-ти дней после покупки.

Часто задаваемые вопросы

Расскажите о курсе друзьям

Old Price: 4 990  Discount Price: 2 495