System Design Space

    Глава 107

    Обновлено: 15 февраля 2026 г. в 08:15

    PostgreSQL: архитектура и отличия

    Прогресс части0/12

    История PostgreSQL, ключевые особенности (MVCC, WAL, расширяемость), архитектура и сравнение с MySQL.

    Источник

    PostgreSQL

    История, MVCC, репликация, расширяемость и экосистема PostgreSQL.

    Перейти на сайт

    PostgreSQL - свободная open-source объектно-реляционная СУБД с фокусом на расширяемость, богатые типы данных и надежную работу с транзакциями.

    История: ключевые вехи

    1982-1994

    Ingres -> POSTGRES

    PostgreSQL эволюционировала из проекта Ingres в UC Berkeley и системы POSTGRES.

    1994-1996

    Postgres95

    Postgres95 добавила SQL-интерпретатор и дала базе современное направление.

    1996-1997

    PostgreSQL

    Проект был переименован в PostgreSQL, а релиз 6.0 вышел в январе 1997.

    2005

    8.0: Windows и PITR

    Ветка 8.0 принесла нативную поддержку Windows и point-in-time recovery.

    2010

    9.0: streaming replication

    Появляется потоковая репликация, что делает HA-сценарии значительно практичнее.

    2017

    10: логическая репликация

    Новая схема версионирования и встроенная logical replication расширяют сценарии миграции и интеграций.

    2023

    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 и репликации.

    Клиенты и протокол
    libpqBinary protocolDriversAuth/TLS
    Переход между слоями
    SQL слой
    ParserPlannerExecutorCatalog metadata
    Переход между слоями
    MVCC и транзакции
    SnapshotsIsolation levelsSerializable (SSI)
    Переход между слоями
    Хранилище и индексы
    HeapB-treeGIN/GiST/BRINWAL
    Переход между слоями
    Репликация
    WAL shippingAsyncSyncStandby
    Переход между слоями
    OS + железо
    FilesystemDiskCPU/RAMNetwork

    Ключевые особенности

    PostgreSQL известна сильной расширяемостью, богатой системой типов и широкой экосистемой расширений.

    Расширяемость

    User-defined typesProcedural languagesForeign data wrappers

    Богатые типы данных

    JSONBArraysRange typesPostGIS types

    Экосистема

    TimescaleDBGreenplumDerivatives

    DDL vs DML: как проходит запрос

    DDL меняет структуру и метаданные, DML работает с данными. Ниже - визуализация ключевых этапов для обоих типов запросов.

    Как запрос проходит через PostgreSQL

    Сравнение цепочки для DDL (структура) и DML (данные)

    Интерактивный прогонШаг 1/5

    Активный шаг

    1. Parse + plan

    Планировщик выбирает оптимальный план и индексы.

    Работа с данными

    • DML работает с данными и индексами, не меняя схему.
    • MVCC обеспечивает конкурентный доступ без блокировки чтения.
    • Репликация зависит от режима WAL и настроек.
    Row-level operationsWALMVCC

    Источник

    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.