Прежде чем писать первый запрос, стоит понять, с чем вообще имеешь дело. PostgreSQL это не просто очередная база данных, а проект с сорокалетней историей и очень упрямой инженерной философией. В этом уроке разберём, откуда вырос postgresql, чем объектно-реляционная модель отличается от просто реляционной, кто и зачем его развивает, и почему в 2026 году его выбирают под критичные системы под нагрузкой. Технической практики тут немного, но без этого фундамента дальше будет непонятно, почему многие вещи в PG устроены именно так.

Как это работает
История начинается не с PostgreSQL, а с проекта POSTGRES в Калифорнийском университете Беркли. В середине 1980-х команда под руководством Майкла Стоунбрейкера строила преемника более ранней системы Ingres. Само имя читается как post-Ingres, то есть то, что идёт после Ingres. Идея была амбициозной: реляционная модель хороша для чисел и строк, но реальные данные сложнее, и СУБД должна уметь хранить и обрабатывать пользовательские типы, наследование таблиц, правила и сложные объекты, а не только то, что заложили авторы.
Дальше произошёл важный поворот. В 1994-1995 годах поверх POSTGRES прикрутили интерпретатор языка SQL вместо старого экспериментального QUEL, и проект переименовали в Postgres95, а вскоре в PostgreSQL. С этого момента он стал развиваться как открытый проект силами сообщества, и так живёт до сих пор. Поэтому название иногда сбивает с толку: SQL в нём появился позже самого ядра, отсюда и устоявшееся произношение пост-грес-кью-эль.
Ключевое слово в архитектуре это объектно-реляционная модель. На практике это значит, что таблицы остаются таблицами, но вокруг них есть мощная система расширяемости: можно создавать собственные типы данных, операторы, функции на разных языках, индексные методы. Многое из того, что в других СУБД зашито внутри, в PostgreSQL описано теми же механизмами, что доступны и тебе. Например, типы jsonb, поддержка геоданных через PostGIS или полнотекстовый поиск это не магия ядра, а расширения поверх единых правил.
Философия проекта держится на нескольких принципах: строгое соответствие стандарту SQL, надёжность данных любой ценой и расширяемость вместо хардкода. PostgreSQL соблюдает ACID, то есть гарантирует атомарность, согласованность, изоляцию и долговечность транзакций. За изоляцию отвечает MVCC, многоверсионное управление конкурентным доступом: читатели не блокируют писателей, а писатели не блокируют читателей, потому что система хранит несколько версий строки одновременно. Из этого, кстати, растут и vacuum, и многое другое, что разберём в следующих уроках.
Важный момент это лицензия. PostgreSQL распространяется под либеральной лицензией PostgreSQL License в духе BSD/MIT. Её можно использовать в коммерческих продуктах без отчислений и без обязанности открывать свой код. Именно это сделало PG основой для десятков продуктов и форков. Развивает проект не одна компания, а распределённая структура: ядро ведёт Core Team и широкий круг мейнтейнеров, релизы выходят примерно раз в год. Большой вклад исторически вносят и компании вокруг, в том числе российская Postgres Professional, которая участвует в разработке ядра и развивает свою сборку.
SQL и примеры
Хотя урок обзорный, полезно сразу увидеть, что PostgreSQL знает о самом себе. Подключаемся клиентом psql и спрашиваем версию.
Код: Выделить всё
SELECT version();
-- покажет строку вида PostgreSQL 15.x ... вместе с платформой и компилятором
Код: Выделить всё
SHOW server_version;
SHOW server_version_num;
-- первая даёт 15.5, вторая целое число 150005, удобно сравнивать в скриптах
Код: Выделить всё
SELECT typname
FROM pg_type
WHERE typname IN ('int4', 'jsonb', 'timestamptz', 'uuid')
ORDER BY typname;
-- типы это строки в каталоге, а не зашитый внутрь список
Код: Выделить всё
SELECT count(*) AS airports_total
FROM bookings.airports;
-- ожидаем около сотни аэропортов в демобазе
Код: Выделить всё
SELECT extname, extversion
FROM pg_extension
ORDER BY extname;
-- как минимум увидим plpgsql, на нём пишут триггеры и функции
- Путают PostgreSQL и устаревший Postgres из 80-х. Современный PG это проект сообщества с SQL, а не университетский прототип с языком QUEL.
- Считают, что раз лицензия свободная, то проект ничей и без поддержки. На деле есть Core Team, регулярные релизы и коммерческие вендоры, включая Postgres Professional, с поддержкой корпоративного уровня.
- Сравнивают MVCC с блокировками наугад и ждут, что версии строк исчезают сами. Старые версии накапливаются и убираются процессом vacuum, об этом отдельный урок.
- Думают, что объектно-реляционная значит то же, что NoSQL. Нет, это всё та же реляционная база с ACID, просто сильно расширяемая, в том числе типом jsonb для гибких документов.
- Тащат привычки из MySQL без проверки. В PostgreSQL другое поведение по умолчанию, своя реализация стандарта SQL и иные нюансы, например чувствительность к регистру имён в кавычках.
- Для интеграции с 1С берут случайную сборку. Связка postgresql для 1с требует совместимой сборки и правильных настроек локали, иначе всплывают проблемы с сортировкой и производительностью.
- Установи PostgreSQL 15 любым удобным способом или запусти в Docker, точную установку разберём в отдельном уроке, пока достаточно рабочего сервера.
- Подключись клиентом psql к серверу под своим пользователем и выполни команду SELECT version(), запиши major-версию.
- Выполни SHOW server_version_num и убедись, что число соответствует твоей версии, например 150005 для 15.5.
- Запроси из pg_extension список установленных расширений и найди в нём plpgsql.
- Сделай запрос к pg_type и найди там типы jsonb и timestamptz, чтобы убедиться, что типы лежат в каталоге как данные.
- Если уже подключена демобаза bookings, посчитай число аэропортов и число самолётов в bookings.aircrafts.
- Запиши вывод команды psql со флагом -V в блокнот, он пригодится при сравнении окружений.
- Откуда пошло название POSTGRES и почему в PostgreSQL приставка SQL появилась позже самого ядра?
- Что означает термин объектно-реляционная СУБД и чем расширяемость PostgreSQL отличается от подхода, где всё зашито в ядро?
- Какие четыре свойства транзакций описывает аббревиатура ACID и какую роль в их обеспечении играет MVCC?
- Почему свободная лицензия PostgreSQL важна для бизнеса и как при этом устроена разработка проекта?
- Какие сильные стороны делают PostgreSQL подходящим для критичных систем под нагрузкой в 2026 году?
- Где в системе можно увидеть, что типы данных и расширения это обычные строки в каталоге, а не скрытые сущности?