Чему вы научитесь
- Читать 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 разобраны обзорным уроком на глубину «на какой вопрос отвечает и где граница»; ставить по этому знанию систему в прод нельзя, и курс говорит об этом прямо.
Для кого этот курс
Начальные требования
Что нужно знать
- Программировать на каком-либо языке: функции, типы, коллекции, циклы, условия. Какой именно — неважно.
- Работать в терминале на базовом уровне: запустить команду, прочитать вывод.
Что нужно на машине
- 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 за курс, по условию и чек-листу «готово, когда»: что денормализовать, какие индексы нужны сервису, как защитить запись, как переехать со схемой незаметно, какое хранилище выбрать и чем за это платить.
Капстоун. Финал — спроектировать хранение под незнакомый сервис и защитить решение: разбор по ролям, индексы с обоснованием, план роста на десятикратном объёме и трёхминутная защита. Три варианта на выбор, включая «своё решение по своему проекту».
Сообщество. Проходить курс в одиночку не обязательно — у него есть «Гильдия вайба»: помощь, когда застрял, разбор чужих и своих решений по хранению, план, в котором оценка не сходится с фактом, поиск тиммейтов и вопросы с собеседований, на которые не нашлось ответа. Чем активнее участвуешь — тем больше берёшь от курса
Программа курса
Сертификат
Входит в 1 программу
Что вы получаете
- Локальный стенд на Docker Compose, собранный по ходу курса: PostgreSQL 18 и pgvector, MinIO, Redis, MongoDB, Elasticsearch, ClickHouse, DuckDB — вместе с данными, запросами и экспериментами он остаётся у тебя
- Капстоун: решение по хранению для сервиса, разложенное по ролям, с числами, планом роста и защитой на три минуты — файл, который читается без тебя
- Пройденный руками стек из вакансий: SQL и PostgreSQL, индексы и планы, транзакции и блокировки, объектное хранилище, Redis, MongoDB, Elasticsearch, ClickHouse
- Ответы на вопросы секции по данным — от механизма, а не от заученной формулировки: в 27 шагах отдельно разобрано, почему эту тему спрашивают и что на самом деле засчитывают
- 446 проверяемых заданий и 15 проектных шагов с чек-листами самопроверки
- Умение объяснить своё решение по данным: что оптимизируем, чем платим и каким требованием это оправдано
- Сертификат Stepik по итогам курса
- Доступ к сообществу «Гильдия вайба» в Telegram и Discord