PostgreSQL для тех, кто пишет на Go

Ты — новый бэкенд-разработчик Brew, вымышленной сети кофеен. Практический курс по PostgreSQL 18 для разработчиков приложений на Go: от первого подключения и типов данных до индексов, MVCC, JSONB, оконных функций и серверной логики — и капстонов с outbox/CDC. Одна модель данных проходит весь курс; финал — ты сам открываешь PUBLICATION и передаёшь поток изменений Brew в соседний kafka-cookbook. SQL пишется руками, типизируется через sqlc, весь код запускается на локальном sandbox (postgres:18 + Adminer) и оставляет наблюдаемый эффект — это рабочие сценарии, а не лекции «на доске».

Знакомство с Brew
/ contents

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

11 модулей · 63 урока
  1. 01

    Подключение и ориентация

    Старт курса: кто ты, что за Brew и что мы построим (вводный урок-карта), затем первый технический слой — клиент-сервер, локальный sandbox (postgres:18 + Adminer), psql как рабочий инструмент, подключение из Go через pgxpool и типизированные запросы через sqlc. После этого модуля есть рабочий конвейер «SQL руками → sqlc generate → типизированный pgx-код», на который опираются все остальные темы.

    не начатов процессепройдено0/6
    6 уроков2 ч 10 мин
  2. 02

    Типы данных

    Какой тип выбрать и почему: numeric vs float для денег, text/boolean/null, timestamptz для времени, uuid и PG18 uuidv7, enum/массивы и введение в jsonb. Правильный тип на старте снимает целый класс багов на проде.

    не начатов процессепройдено0/5
    5 уроков1 ч 55 мин
  3. 03

    Схема

    Identity vs serial, NOT NULL, первичные и внешние ключи, UNIQUE/CHECK, генерируемые столбцы и домены (PG18 virtual vs stored), и мышление миграций — какие ALTER мгновенны, а какие переписывают таблицу и блокируют запись.

    не начатов процессепройдено0/6
    6 уроков2 ч 15 мин
  4. 04

    CRUD-беглость

    Уверенный CRUD: INSERT ... RETURNING, SELECT с WHERE/ORDER/LIMIT и keyset-пагинация, безопасные UPDATE/DELETE, upsert через ON CONFLICT, PG18 RETURNING old/new и трезвая семантика NULL (ловушка NOT IN + NULL, COALESCE/NULLIF/IS DISTINCT FROM).

    не начатов процессепройдено0/6
    6 уроков2 ч 15 мин
  5. 05

    Запросы по таблицам

    Связываем данные: join'ы (inner/left/right/full), self-join'ы, агрегация GROUP BY/HAVING, DISTINCT ON (последний заказ на клиента), подзапросы EXISTS vs IN и CTE с материализацией. Здесь данные превращаются в ответы на вопросы бизнеса.

    не начатов процессепройдено0/6
    6 уроков2 ч 25 мин
  6. 06

    Транзакции

    Как Postgres ведёт себя под конкурентной нагрузкой: ACID и транзакции, ментальная модель MVCC (видимые xmin/xmax), блокировки строк и потерянные обновления, уровни изоляции на практике, ретраи на 40001 и дедлоки с advisory-локами.

    не начатов процессепройдено0/6
    6 уроков2 ч 25 мин
  7. 07

    Индексы и EXPLAIN

    Производительность через чтение планов: EXPLAIN ANALYZE с buffers (в PG18 по умолчанию), B-tree и порядок столбцов (PG18 skip-scan), когда индексы не помогают (expression index), partial/covering/unique и Index-Only Scan, GIN для jsonb/массивов, CREATE INDEX CONCURRENTLY.

    не начатов процессепройдено0/6
    6 уроков2 ч 20 мин
  8. 08

    JSONB, массивы и поиск

    Полуструктурированные данные и поиск внутри БД: доступ и containment в jsonb (-> ->> @> ?), когда jsonb не нужен, SQL/JSON path и сборка, массивы vs junction-таблица, полнотекстовый поиск (tsvector + GIN) и нечёткий поиск через pg_trgm — с матрицей выбора FTS/trgm/движок.

    не начатов процессепройдено0/6
    6 уроков2 ч 20 мин
  9. 09

    Аналитика

    Аналитика прямо в SQL: оконные функции (running total, ранжирование, top-N на группу), lag/lead и фреймы (day-over-day, скользящее среднее), рекурсивные CTE (дерево категорий), LATERAL-join'ы (top-3 на клиента — убийца N+1) и grouping sets/rollup/cube.

    не начатов процессепройдено0/6
    6 уроков2 ч 25 мин
  10. 10

    Запись

    Продвинутая запись и логика на стороне БД: MERGE и COPY, очередь задач через SKIP LOCKED, transactional outbox, LISTEN/NOTIFY, триггеры и волатильность функций (IMMUTABLE/STABLE/ VOLATILE) — с явной секцией «когда НЕ класть логику в БД».

    не начатов процессепройдено0/5
    5 уроков2 ч
  11. 11

    Use cases

    Сквозные капстоны с integration-тестами, связывающие весь курс в работающие приложения: сборка схемы Brew, движок цен и промо (PG18 temporal), клиника анти-паттернов приложения, пулинг из приложения (pgbouncer caveats) и CDC-шов — байт-совместимый handoff в kafka-cookbook.

    не начатов процессепройдено0/5
    5 уроков2 ч 55 мин