PostgreSQL
PostgreSQL - это мощная объектно-реляционная система управления базами данных (СУБД) с открытым исходным кодом, разрабатываемая с 1986 года в Калифорнийском университете в Беркли. PostgreSQL использует и расширяет язык SQL в сочетании с множеством функций, обеспечивающих безопасное хранение и масштабирование самых сложных рабочих нагрузок с данными .
В интернет-маркетинге PostgreSQL применяется для хранения и анализа больших объёмов данных о клиентах, транзакциях, поведении пользователей и результатах рекламных кампаний. Благодаря высокой надёжности и расширяемости, PostgreSQL используют такие компании, как Instagram, Netflix, Apple (iTunes) и многие другие .
История и философия
[править]PostgreSQL ведёт свою историю с 1986 года, когда в рамках проекта POSTGRES в Калифорнийском университете в Беркли была заложена основа будущей системы. За почти 40 лет активного развития платформа завоевала репутацию благодаря проверенной архитектуре, надёжности, целостности данных и мощному набору функций .
Ключевая философия PostgreSQL заключается в соответствии стандартам и расширяемости. Система пытается соответствовать стандарту SQL везде, где это не противоречит традиционным функциям. Начиная с версии 18 (сентябрь 2025 года), PostgreSQL соответствует как минимум 170 из 177 обязательных функций для SQL:2023 Core conformance .
Ключевые особенности
[править]Типы данных
[править]PostgreSQL поддерживает широкий спектр типов данных:
- Примитивные: Integer, Numeric, String, Boolean
- Структурированные: Date/Time, Array, Range / Multirange, UUID
- Документные: JSON/JSONB, XML, Key-value (Hstore)
- Геометрические: Point, Line, Circle, Polygon
- Пользовательские: составные типы, перечисления (enum)
Особого внимания заслуживает тип JSONB - бинарное представление JSON, которое позволяет эффективно индексировать и запрашивать документы, сочетая гибкость NoSQL с надёжностью реляционной базы .
Целостность данных
[править]- Первичные и внешние ключи
- Ограничения UNIQUE, NOT NULL
- Ограничения-проверки (CHECK)
- Эксклюзивные ограничения (Exclusion Constraints)
- Явные и рекомендательные блокировки
Производительность и конкурентность
[править]- Полное соответствие ACID с 2001 года
- Многоверсионность (MVCC) для параллельного доступа
- Все уровни изоляции транзакций, включая Serializable
- Развитая система индексов: B-tree, GiST, SP-GiST, GIN, BRIN
- Параллельное выполнение запросов
- JIT-компиляция выражений
- Асинхронный ввод-вывод (AIO) с версии 18
Расширяемость
[править]PostgreSQL считается самой расширяемой СУБД благодаря архитектуре, позволяющей:
- Создавать собственные типы данных
- Определять новые операторы и функции
- Писать код на различных языках: PL/pgSQL, Perl, Python, Tcl, Java, JavaScript (V8), R, Lua, Rust
- Создавать индексы с собственными методами доступа
Надёжность и восстановление
[править]- Write-Ahead Logging (WAL) - журнал предзаписи
- Репликация: асинхронная, синхронная, логическая
- Point-in-time recovery (PITR)
- Активные standby-серверы
- Табличные пространства (tablespaces)
Расширения PostgreSQL
[править]Благодаря расширяемой архитектуре, вокруг PostgreSQL сформировалась богатая экосистема расширений:
- PostGIS - добавляет поддержку географических объектов, превращая PostgreSQL в полноценную геоинформационную систему (GIS)
- pgvector - позволяет хранить векторные эмбеддинги рядом с основными данными и выполнять поиск по семантической близости
- Foreign Data Wrappers - подключают внешние источники данных через стандартный SQL-интерфейс
Сравнение с MySQL
[править]PostgreSQL и MySQL - 2 самые популярные открытые СУБД, но у них разные сильные стороны:
- PostgreSQL лучше подходит для сложных аналитических запросов, обработки геоданных и сценариев, требующих строгой целостности данных
- PostgreSQL предлагает более богатую поддержку стандартов SQL и расширяемость
- PostgreSQL эффективнее работает с очень большими объёмами данных и сложными типами (JSONB, массивы, геометрия)
Технические ограничения
[править]| Параметр | Значение |
|---|---|
| Максимальный размер базы данных | Не ограничен |
| Максимальный размер таблицы | 32 TB |
| Максимальный размер строки | 1.6 TB |
| Максимальный размер поля | 1 GB |
| Максимальное кол-во столбцов в таблице | 250-1600 в зависимости от типа |
| Максимальное кол-во индексов в таблице | Не ограничено |
