open atlas

sql-postgres

SQL и PostgreSQL вглубь

Язык SQL и внутренности Postgres для senior-инженеров — джоины, окна, CTE, транзакции, планировщик.

10 юнитов·47 уроков·~12 ч

Начать трек
00

С нуля

Перед глубоким материалом: что такое SQL и как Postgres исполняет запрос.
01

Основы SQL

Ментальная модель: SQL описывает множества, а не шаги.
02

Джоины вглубь

Любой join — отфильтрованное декартово произведение; увидев это, поймёшь outer/semi/anti/lateral.
03

Агрегация и группировка

GROUP BY схлопывает строки в корзины; всё в SELECT должно быть на корзину.
04

Оконные функции

Окна агрегируют, не схлопывая строки — суперсила senior-SQL.
05

CTE и рекурсия

WITH именует подзапрос; WITH RECURSIVE обходит деревья и графы на чистом SQL.
06

Типы и моделирование

У Postgres богатая система типов — моделируй с ней, а не в обход.
07

Транзакции и конкурентность

Уровни изоляции — обещания о том, что видят конкурентные транзакции.
08

Внутренности и тюнинг

Читай план, чини оценку, следи за bloat — цикл тюнинга.
09

Собираем вместе

Спроектируй и затюнь реальную систему запросов от начала до конца.

Проекты по этому треку

Guided-проекты, которые закрепляют изученное здесь.

◆ Проекты

Очередь задач at-least-once

Собери долговечную очередь задач на Postgres с visibility timeout и идемпотентными консьюмерами, чтобы упавший воркер не терял задачу.

◆ Проекты

Идемпотентный ETL-конвейер

Конвейеры не падают аккуратно — они падают в три часа ночи, на середине загрузки, и кто-то их перезапускает. Этот проект учит одному свойству, которое отличает любительский скрипт от настоящей дата-инженерии: прогон, который можно повторить сколько угодно раз и всё равно получить ровно одну копию каждой строки. Ты построишь пакетную загрузку, идемпотентный load, watermark для инкрементальных выгрузок и проверки качества данных, которые останавливают мусор, прежде чем он отравит всё ниже по течению.

◆ Проекты

Оптимизатор отчётной схемы

Отчётность — это место, где база либо оправдывает себя, либо нет: запросы широкие, таблицы большие, а «тормозит» — самый частый баг в продакшен-аналитике. Ты смоделируешь домен продаж и событий, напишешь честные медленные версии запросов для дашборда, а затем ускоришь их индексами и материализованными представлениями — и прочитаешь EXPLAIN ANALYZE, чтобы доказать ускорение, а не гадать о нём. Это сердце трека: превратить расплывчатое «отчёт подтормаживает» в измеренное, обоснованное изменение плана.

◆ Проекты

Краш-устойчивое key-value хранилище с WAL

Собери крошечное дисковое KV-хранилище, которое переживает kill -9 на середине записи, дописывая в write-ahead log до изменения основного файла.

Следующий трек

Внутренности движка JavaScript

Как V8 исполняет твой код — парсинг, байткод, скрытые классы, JIT, сборка мусора и как оставаться быстрым.