sql-postgres
SQL и PostgreSQL вглубь
Язык SQL и внутренности Postgres для senior-инженеров — джоины, окна, CTE, транзакции, планировщик.
Начать трек →С нуля
Перед глубоким материалом: что такое SQL и как Postgres исполняет запрос.Основы SQL
Ментальная модель: SQL описывает множества, а не шаги.Джоины вглубь
Любой join — отфильтрованное декартово произведение; увидев это, поймёшь outer/semi/anti/lateral.Агрегация и группировка
GROUP BY схлопывает строки в корзины; всё в SELECT должно быть на корзину.Оконные функции
Окна агрегируют, не схлопывая строки — суперсила senior-SQL.CTE и рекурсия
WITH именует подзапрос; WITH RECURSIVE обходит деревья и графы на чистом SQL.Типы и моделирование
У Postgres богатая система типов — моделируй с ней, а не в обход.Транзакции и конкурентность
Уровни изоляции — обещания о том, что видят конкурентные транзакции.Внутренности и тюнинг
Читай план, чини оценку, следи за bloat — цикл тюнинга.Собираем вместе
Спроектируй и затюнь реальную систему запросов от начала до конца.Проекты по этому треку
Guided-проекты, которые закрепляют изученное здесь.
Очередь задач at-least-once
Собери долговечную очередь задач на Postgres с visibility timeout и идемпотентными консьюмерами, чтобы упавший воркер не терял задачу.
Идемпотентный ETL-конвейер
Конвейеры не падают аккуратно — они падают в три часа ночи, на середине загрузки, и кто-то их перезапускает. Этот проект учит одному свойству, которое отличает любительский скрипт от настоящей дата-инженерии: прогон, который можно повторить сколько угодно раз и всё равно получить ровно одну копию каждой строки. Ты построишь пакетную загрузку, идемпотентный load, watermark для инкрементальных выгрузок и проверки качества данных, которые останавливают мусор, прежде чем он отравит всё ниже по течению.
Оптимизатор отчётной схемы
Отчётность — это место, где база либо оправдывает себя, либо нет: запросы широкие, таблицы большие, а «тормозит» — самый частый баг в продакшен-аналитике. Ты смоделируешь домен продаж и событий, напишешь честные медленные версии запросов для дашборда, а затем ускоришь их индексами и материализованными представлениями — и прочитаешь EXPLAIN ANALYZE, чтобы доказать ускорение, а не гадать о нём. Это сердце трека: превратить расплывчатое «отчёт подтормаживает» в измеренное, обоснованное изменение плана.
Краш-устойчивое key-value хранилище с WAL
Собери крошечное дисковое KV-хранилище, которое переживает kill -9 на середине записи, дописывая в write-ahead log до изменения основного файла.
Внутренности движка JavaScript
Как V8 исполняет твой код — парсинг, байткод, скрытые классы, JIT, сборка мусора и как оставаться быстрым.