О разделе
Раздел 8.11 — продвинутый практикум по PostgreSQL для бэкенд-разработчиков, DBA и DevOps-инженеров. Здесь собран маршрут от внутреннего устройства (MVCC, WAL, VACUUM) до промышленной эксплуатации в Docker, облаке и Kubernetes с репликацией, бэкапами и автоматизацией через Ansible и Terraform.
Базовый SQL, CRUD из приложения и установка «на голое железо» уже есть в разделе 3.07 и 3.08. Этот практикум углубляет темы, которые решают задачи production — bloat, wraparound, планы запросов, пулинг соединений, Patroni и Wal-G.
Материал рассчитан на тех, кто уже писал SQL и подключал PostgreSQL из кода, но ещё не эксплуатировал СУБД в контейнерах или кластере. Нужны базовый Linux, понимание Docker и желательно знакомство с Kubernetes.
Маршрут по шагам
| Шаг | Статья | Содержание |
|---|---|---|
| 1 | Архитектура и внутреннее устройство | MVCC, XID, снимки, системные поля, VACUUM, bloat, wraparound, процессы, Shared Buffers, WAL |
| 2 | Продвинутая оптимизация и индексы | EXPLAIN, B-tree, GiST, GIN, BRIN, частичные индексы |
| 3 | Конфигурация postgresql.conf | Память, I/O, autovacuum, checkpoint |
| 4 | JSONB, партиционирование и расширения SQL | Документы в Postgres, разбиение таблиц, связь с оконными функциями |
| 5 | PL/pgSQL, триггеры и NOTIFY/LISTEN | Логика на стороне СУБД, аудит, событийные системы |
| 6 | Репликация, Hot Standby и PgBouncer | Streaming и logical replication, чтение с реплик, пулинг |
| 7 | PostgreSQL в Docker | Образы, volumes, compose, типовые ошибки |
| 8 | Облако и Kubernetes | Managed-сервисы, StatefulSet, операторы, секреты |
| 9 | HA-кластеры и распределённые СУБД | Patroni, Greenplum, CockroachDB — когда что выбирать |
| 10 | Бэкапы и восстановление | pg_dump, PITR, pg_probackup, Wal-G |
| 11 | Профилирование и мониторинг | pg_stat_*, auto_explain, pgBadger, Prometheus — практикум Prometheus, Zabbix — практикум Zabbix |
| 12 | Автоматизация — Ansible и Terraform | Роли, playbooks, провайдеры облака |
Закрепление — итоги, чек-лист.
Что здесь не повторяем
| Тема | Где уже есть |
|---|---|
| Синтаксис SELECT, JOIN, транзакции | 3.07 SQL |
| Оконные функции и CTE | 885, 886 |
| Практикум JSONB с примерами | 66 |
| Установка, pg_dump, справочник параметров | 3.08/2 |
| Блокировки и конкурентный доступ | 110 |
| Резервное копирование (базовый уровень) | 106 |
| Веб-интерфейс phpPgAdmin | 5.07/phpPgAdmin |
phpPgAdmin и раздел SQL
phpPgAdmin — веб-клиент на PHP для PostgreSQL (аналог phpMyAdmin для MySQL). Удобен на локальном LAMP/OpenServer и для проверки SQL из браузера до перехода к psql, pgAdmin или production-инструментам.
| Задача в 8.11 | Сначала в SQL (3.07) | В phpPgAdmin | В практикуме 8.11 |
|---|---|---|---|
| Синтаксис SELECT, JOIN, транзакции | 101 → 888 → 891 demo | SQL, DDL и DML — вкладка SQL | — |
| JSONB, оконные функции | 66, 886, 885 | Выполнить запрос на вкладке SQL | шаг 4 |
| Блокировки, MVCC (теория) | 110, 77 | — | шаг 1 |
| EXPLAIN, индексы | 881, 884 | EXPLAIN ANALYZE во вкладке SQL | шаг 2 |
postgresql.conf, pg_hba | 101, 3.08/2 | Установка и подключение | шаг 3 |
| pg_dump, импорт SQL | 106 | Дампы и FAQ | шаг 10 |
| PL/pgSQL, триггеры | 885 (рецепты) | SQL-вкладка для CREATE FUNCTION | шаг 5 |
Рекомендуемая цепочка для PHP-разработчика: SQL intro → 888 → phpPgAdmin/2–3 → этот практикум с шага 1.
Маршруты по ролям
| Кто вы | Маршрут | Время (оценка) |
|---|---|---|
| PHP + локальный стек | phpPgAdmin/2–3 → 888 → 1 → 2 | 3–4 недели |
| Бэкенд-разработчик | 1 → 2 → 4 → 5 | 2–3 недели |
| DBA / сисадмин | 1 → 3 → 6 → 10 → 11 | 3–4 недели |
| DevOps | 7 → 8 → 9 → 12 | 2–4 недели |
| Полный цикл | 1 → … → 12 | 1–2 месяца |
Связанные материалы
- SQL — о разделе — полный маршрут от SELECT до бэкапов.
- PostgreSQL — практическая работа и API — драйверы, psql, типовой стек.
- phpPgAdmin — о разделе — веб-админка для учебных стендов на PHP.
- Первые шаги с SQL — установка Postgres, psql, pgAdmin.
- Справочник PostgreSQL — параметры и администрирование.
- Terraform и Ansible — общая теория IaC.
- Безопасность приложений — SQL-инъекции и hardening.
Архитектура PostgreSQL и внутреннее устройство
MVCC, XID, снимки данных, системные поля xmin/xmax, VACUUM и autovacuum, bloat, wraparound, процессы postmaster, Shared Buffers и WAL.
Бэкапы PostgreSQL и восстановление
pg_dump, pg_basebackup, PITR, pg_probackup, Wal-G, стратегия 3-2-1, восстановление в Kubernetes и после failover.
Профилирование и мониторинг PostgreSQL
pg_stat_statements, pg_stat_activity, auto_explain, pgBadger, Prometheus postgres_exporter, типовые метрики SLA и алерты.
Автоматизация PostgreSQL — Ansible и Terraform
Ansible role для установки Postgres, шаблоны postgresql.conf, Terraform для RDS и managed PostgreSQL, GitOps паттерны для инфраструктуры БД.
Продвинутая оптимизация PostgreSQL и индексы
EXPLAIN и EXPLAIN ANALYZE, B-tree, GiST, SP-GiST, GIN, BRIN, частичные и составные индексы, типовые ошибки планировщика.
Конфигурация PostgreSQL — postgresql.conf
Тонкая настройка памяти (shared_buffers, work_mem, maintenance_work_mem), I/O (effective_cache_size, random_page_cost), WAL, checkpoint и autovacuum.
JSONB, партиционирование и расширения SQL в PostgreSQL
Документная модель в Postgres, операторы и индексы JSONB, declarative partitioning по range/list/hash, связь с оконными функциями и CTE.
PL/pgSQL, триггеры и NOTIFY/LISTEN в PostgreSQL
Хранимые функции и процедуры PL/pgSQL, row-level и statement triggers, event triggers, асинхронные события через NOTIFY и LISTEN без polling.
Репликация PostgreSQL, Hot Standby и PgBouncer
Streaming replication, logical replication, read replicas и Hot Standby, failover, connection pooling через PgBouncer — transaction и session pooling.
PostgreSQL в Docker
Официальный образ postgres, volumes для PGDATA, переменные окружения, docker-compose с healthcheck, типовые ошибки контейнеризации СУБД.
PostgreSQL в облаке и Kubernetes
Managed PostgreSQL (RDS, Cloud SQL, Yandex Managed), StatefulSet, PersistentVolume, секреты, операторы Crunchy/Zalando, anti-patterns stateful в K8s.
HA-кластеры PostgreSQL и распределённые СУБД
Patroni и DCS, сравнение с Greenplum и CockroachDB, когда нужен sharding, Citus, выбор архитектуры под OLTP и аналитику.
Практикум PostgreSQL — итоги
Краткое резюме раздела 8.11 — архитектура, оптимизация, эксплуатация в контейнерах и Kubernetes, HA, бэкапы и автоматизация.
Практикум PostgreSQL — чек-лист самопроверки
Вопросы для закрепления раздела 8.11 — MVCC, индексы, конфигурация, репликация, Docker, Kubernetes, бэкапы и IaC.
PostgreSQL — о разделе
Продвинутый маршрут по PostgreSQL для инженеров и DevOps — внутреннее устройство, оптимизация, конфигурация, JSONB, репликация, контейнеры, Kubernetes, HA-кластеры, бэкапы и автоматизация.
В подборках
Базы данных — SQL — о разделе, Управление РСУБД, NoSQL.
Инфраструктура — Контейнеризация, DevOps.