Что такое PostgreSQL?

PostgreSQL
Фото: Pexels

PostgreSQL — реляционная СУБД с открытым исходным кодом. Она хранит данные в таблицах со строгой схемой, поддерживает SQL, транзакции ACID, индексы, представления, JSONB и расширения (PostGIS, pgvector). PostgreSQL часто выбирают как основную OLTP-базу для веб-сервисов и аналитики среднего объёма.

flowchart LR
  App["Приложение"] -->|SQL| PG["PostgreSQL"]
  PG --> WAL["WAL / журнал"]
  PG --> Data["Файлы данных"]
  WAL --> Replica["Реплика read-only"]

Запись идёт через WAL; реплика может отставать на миллисекунды.

Транзакции и изоляция

Транзакция группирует несколько операций: либо все изменения фиксируются (COMMIT), либо откатываются (ROLLBACK). Уровни изоляции (READ COMMITTED по умолчанию, REPEATABLE READ, SERIALIZABLE) определяют, какие аномалии чтения допустимы. Для финансовых операций и инвентаря важно явно проектировать границы транзакций в коде приложения.

Индексы и производительность

B-tree индекс ускоряет поиск по равенству и диапазонам; GIN подходит для JSONB и полнотекстового поиска. Без индекса на часто фильтруемых колонках запросы деградируют до seq scan. EXPLAIN ANALYZE показывает план выполнения — первый инструмент при медленных запросах.

CREATE TABLE orders (
  id BIGSERIAL PRIMARY KEY,
  user_id BIGINT NOT NULL,
  total NUMERIC(12,2) NOT NULL,
  created_at TIMESTAMPTZ DEFAULT now()
);
CREATE INDEX idx_orders_user_created ON orders (user_id, created_at DESC);

Репликация и бэкапы

Streaming replication передаёт WAL на standby-узел для чтения или failover. Логические бэкапы (pg_dump) и физические (base backup + WAL archiving) решают разные задачи восстановления. Для продакшена планируют RPO/RTO заранее, а не после инцидента.

Документация: postgresql.org/docs.

PostgreSQL — иллюстрация 2
Фото: Pexels
PostgreSQL — иллюстрация 3
Фото: Pexels

Частые вопросы

  • Чем PostgreSQL отличается от MySQL?

    Оба — реляционные СУБД, но PostgreSQL сильнее в сложных типах (JSONB, массивы), расширяемости и строгом соответствии SQL; выбор часто зависит от команды и экосистемы.

  • Что такое WAL в PostgreSQL?

    Write-Ahead Log — журнал изменений до записи на диск данных. WAL обеспечивает durability и основу для репликации и point-in-time recovery.

  • Когда использовать JSONB в PostgreSQL?

    Когда часть атрибутов гибкая или редко запрашивается, но нужны индексы GIN и SQL поверх документов — без отдельной document-БД.

Не хватает деталей?

Напишите, что уточнить по теме «PostgreSQL» — это помогает улучшать материал и подсказывает, какие термины добавить дальше. Email необязателен: укажите, если хотите ответ только для вас (мы не шлём рассылки).

Поделиться