Источник
PostgreSQL
История, MVCC, репликация, расширяемость и экосистема PostgreSQL.
PostgreSQL - свободная open-source объектно-реляционная СУБД с фокусом на расширяемость, богатые типы данных и надежную работу с транзакциями.
История: ключевые вехи
Ingres -> POSTGRES
PostgreSQL эволюционировала из проекта Ingres в UC Berkeley и системы POSTGRES.
Postgres95
Postgres95 добавила SQL-интерпретатор и дала базе современное направление.
PostgreSQL
Проект был переименован в PostgreSQL, а релиз 6.0 вышел в январе 1997.
8.0: Windows и PITR
Ветка 8.0 принесла нативную поддержку Windows и point-in-time recovery.
9.0: streaming replication
Появляется потоковая репликация, что делает HA-сценарии значительно практичнее.
10: логическая репликация
Новая схема версионирования и встроенная logical replication расширяют сценарии миграции и интеграций.
16: зрелая современная ветка
Серия 14-16 усиливает производительность, параллелизм и работу репликации на больших нагрузках.
Специфика PostgreSQL
Object-relational DBMS
PostgreSQL - свободная open-source объектно-реляционная СУБД.
MVCC и уровни изоляции
MVCC дает снимки данных транзакциям и поддерживает serializable snapshot isolation.
Богатые типы и индексы
JSON/JSONB, массивы, диапазоны, расширяемые типы и индексы (GiST, GIN, SP-GiST, BRIN).
Репликация на базе WAL
Встроенная репликация использует WAL и поддерживает async и synchronous режимы.
Архитектура PostgreSQL по слоям
Архитектура показывает слои: от драйверов и планировщика запросов до MVCC, WAL и репликации.
Ключевые особенности
PostgreSQL известна сильной расширяемостью, богатой системой типов и широкой экосистемой расширений.
Расширяемость
Богатые типы данных
Экосистема
DDL vs DML: как проходит запрос
DDL меняет структуру и метаданные, DML работает с данными. Ниже - визуализация ключевых этапов для обоих типов запросов.
Как запрос проходит через PostgreSQL
Сравнение цепочки для DDL (структура) и DML (данные)
Активный шаг
1. Parse + plan
Планировщик выбирает оптимальный план и индексы.
Работа с данными
- DML работает с данными и индексами, не меняя схему.
- MVCC обеспечивает конкурентный доступ без блокировки чтения.
- Репликация зависит от режима WAL и настроек.
Источник
MySQL
Лицензия, LAMP-стек и изменения вокруг MySQL.
PostgreSQL vs MySQL
Модель данных
PostgreSQL: Object-relational, расширяемые типы и функции.
MySQL: Реляционная СУБД, часто используется в LAMP-стеке.
Лицензия и управление
PostgreSQL: Permissive PostgreSQL License и развитие через PGDG.
MySQL: GPL + коммерческие лицензии; владение через Sun и Oracle.
Конкурентность и целостность
PostgreSQL: MVCC и serializable snapshot isolation.
MySQL: InnoDB - дефолтный движок с транзакциями и внешними ключами.
Экосистема
PostgreSQL: Экосистема расширений и производных решений.
MySQL: Сильная web-экосистема и богатая история использования в LAMP.
Почему PostgreSQL часто выбирают вместо MySQL
Практическая интерпретация на основе свойств PostgreSQL:
- Расширяемая архитектура и богатый набор типов данных делают PostgreSQL удобной для сложных доменных моделей.
- MVCC и развитые уровни изоляции упрощают конкурентные сценарии при высоких нагрузках.
- Встроенная репликация на базе WAL дает понятный путь к масштабированию чтений.
- Permissive license и сильная экосистема производных решений стимулируют выбор PostgreSQL.
