hostprofi.ru
Подобрать хостинг
Термин·буква P

PostgreSQL

краткое определение

PostgreSQL — объектно-реляционная СУБД с открытым исходным кодом. Полная поддержка SQL, ACID-транзакции, расширяемость (пользовательские типы, функции, операторы), поддержка JSON/JSONB, full-text search, PostGIS (геоданные). Считается самой функциональной open-source РСУБД.

PostgreSQL («Постгрес») — объектно-реляционная система управления базами данных с открытым исходным кодом, разрабатываемая командой PostgreSQL Global Development Group с 1996 года (наследует проект POSTGRES из Беркли, 1986). Реализует большинство стандартов SQL:2016, поддерживает сложные запросы, внешние ключи, триггеры, представления, транзакции с MVCC. Полностью соответствует ACID-требованиям (Multi-Version Concurrency Control).

Ключевые возможности

  • MVCC — читатели не блокируют писателей. Каждая транзакция видит согласованный снимок данных.
  • JSONB — нативное хранение JSON с индексами GIN. Гибридный подход: реляционные данные + полуструктурированные.
  • Расширения — PostGIS (геоданные), pg_trgm (нечёткий поиск), uuid-ossp, hstore, pgcrypto, TimescaleDB.
  • Сложные типы данных — массивы, диапазоны, составные типы, перечисления (ENUM), сетевые адреса.
  • Параллельные запросы — многопоточное выполнение SELECT с версии 9.6 (2016).
  • Логическая репликация — публикации/подписки для репликации конкретных таблиц (с версии 10, 2017).
  • Партиционирование таблиц — декларативное (с версии 10) для управления большими таблицами.

История

Проект POSTGRES начат Майклом Стоунбрейкером в Калифорнийском университете (Беркли) в 1986 году. Первый публичный релиз — 1989 год. В 1993 году добавлен SQL (до этого — собственный язык POSTQUEL). В 1996 году проект переименован в PostgreSQL и выпущен под лицензией PostgreSQL (схожа с BSD). PostgreSQL 14 (2021) — крупное улучшение производительности. Часто сравнивают с MySQL: PostgreSQL предпочтителен для сложных запросов и аналитики, MySQL — для простых операций на web-хостинге. PostgreSQL 16 (2023) — дальнейшее ускорение параллельных запросов, логическая репликация из резервных серверов.

PostgreSQL в хостинге

PostgreSQL доступен на большинстве VPS и выделенных серверов. Настройка репликации Master-Slave повышает отказоустойчивость. Managed PostgreSQL предлагают все крупные облака: AWS RDS, GCP Cloud SQL, Яндекс Managed PostgreSQL, Selectel. Размер базы на диске не ограничен по умолчанию — управляется политиками хостинга. Для резервного копирования: pg_dump (логический дамп) и pg_basebackup (физическая копия). Мониторинг через pgAdmin или Grafana + postgres_exporter.

PostgreSQL: продвинутые возможности

JSONB в PostgreSQL — нативное хранение JSON с индексами (GIN): SELECT data->>'name' FROM users WHERE data @> '{"active": true}'. Полностью заменяет MongoDB для многих use cases. Extensions: pg_stat_statements (анализ медленных запросов), PostGIS (геопространственные данные), pgcrypto (шифрование), uuid-ossp (UUID генерация).

Параллелизм запросов: max_parallel_workers_per_gather = 4 — распараллеливание SELECT на 4 воркера. Partition pruning: партиционирование таблиц по диапазону дат снижает размер сканируемых данных. pg_bouncer как connection pooler: при сотнях соединений PostgreSQL потребляет ~10 МБ на соединение — PgBouncer сжимает N клиентских соединений в M серверных (transaction pooling).

На что обращать внимание

PostgreSQL по умолчанию использует «всё возможное ОЗУ» — настройка shared_buffers (обычно 25% ОЗУ) и work_mem критична. Без VACUUM таблицы разбухают из-за мёртвых строк MVCC — убедитесь, что autovacuum включён и настроен. Индексы по умолчанию — B-tree; для full-text search — GIN, для геоданных — GiST/BRIN. Для кэширования запросов используют Redis в связке с PostgreSQL. При переходе от MySQL учитывайте отличия: PostgreSQL case-sensitive в именах без кавычек, иначе строчные.

Другие термины