Что такое PostgreSQL и чем он отличается от других СУБД?
PostgreSQL — это объектно-реляционная система управления базами данных (ОРСУБД) с открытым исходным кодом, одна из наиболее зрелых и функциональных СУБД, активно развивающаяся с 1986 года (проект POSTGRES в Калифорнийском университете Беркли).
Аналогия из жизни: если MySQL — это надёжный семейный автомобиль, то PostgreSQL — это полноприводный внедорожник с прицепом. Он справляется и с простыми поездками, и с бездорожьем (сложные запросы, JSON, геоданные), но требует чуть больше внимания при настройке.
Ключевые особенности
- Полная поддержка ACID
- Поддержка MVCC (Multi-Version Concurrency Control)
- Расширяемая система типов данных (JSON/JSONB, массивы, hstore, геоданные и др.)
- Мощный оптимизатор запросов
- Поддержка CTE, оконных функций, полнотекстового поиска
- Механизм расширений (extensions): PostGIS, pg_trgm, pgcrypto и др.
- Строгое соответствие стандарту SQL
Сравнение с MySQL
| Критерий | PostgreSQL | MySQL |
|---|---|---|
| Тип | Объектно-реляционная | Реляционная |
| MVCC | Нативный, на уровне ядра | Зависит от движка (InnoDB) |
| JSON | Полноценный JSONB с индексами | Поддержка JSON (менее мощная) |
| Полнотекстовый поиск | Встроенный | Базовый (FULLTEXT) |
| Репликация | Потоковая и логическая | Встроенная (master-slave) |
| Расширяемость | Высокая (extensions, custom types) | Ограниченная |
| Производительность чтения | Отлично, особенно сложные запросы | Быстрые простые SELECT |
Сравнение с Oracle
| Критерий | PostgreSQL | Oracle |
|---|---|---|
| Лицензия | Открытая (PostgreSQL License) | Коммерческая (дорогая) |
| Функциональность | Сопоставима для большинства задач | Немного шире (RAC, Data Guard) |
| PL/pgSQL vs PL/SQL | Похожий синтаксис | Более зрелый |
| Партиционирование | Декларативное (с v10) | Развитое |
| Стоимость | Бесплатная | Высокая стоимость лицензий |
В банковской сфере PostgreSQL часто выбирают за надёжность, строгое соответствие ACID и отсутствие лицензионных платежей.
На собеседовании: интервьюер ожидает не перечисление фич, а понимание позиционирования: PostgreSQL строже следует стандарту SQL, лучше работает со сложными запросами и имеет нативный MVCC, тогда как MySQL быстрее на простых SELECT. Упомяните расширяемость (extensions) как уникальную черту PostgreSQL.