System Design Space
Граф знанийНастройки

Обновлено: 24 июня 2026 г. в 16:23

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

средний

PostgreSQL как транзакционное ядро: многоверсионное управление конкурентным доступом (MVCC), журнал предзаписи (WAL), уровни изоляции, индексы, репликация, расширяемость и практическое сравнение с MySQL.

PostgreSQL так часто оказывается в центре системы, что его легко начать воспринимать как скучный дефолт. Эта глава полезна тем, что возвращает уважение к причинам, по которым он там оказывается.

В реальной работе она помогает говорить о PostgreSQL через многоверсионность, журнал предзаписи, расширяемость, индексы и планы выполнения, то есть через свойства, которые действительно определяют надёжность транзакционного контура, а не только через знакомый SQL-синтаксис.

В интервью и архитектурных обсуждениях глава сильна тогда, когда нужно объяснить выбор Postgres не привычкой, а сочетанием транзакционных гарантий, выразительного SQL и понятной операционной модели.

Практическая польза главы

Транзакционное ядро

Используйте PostgreSQL как надёжный центр транзакций, когда важны строгие гарантии, сложные запросы и предсказуемая консистентность.

Индексы и планировщик

Проектируйте схему вместе с индексной стратегией и оценкой планов, а не только по ER-диаграмме.

Эксплуатационная стабильность

Закладывайте автоматическую очистку, контроль разрастания таблиц, архивацию журнала предзаписи и репликацию как часть базовой архитектуры.

Аргументация на интервью

Обосновывайте выбор Postgres через целостность данных, выразительность SQL и известные операционные компромиссы.

Рамка выбора и редакторский фокус

Фокус главы

PostgreSQL как транзакционном ядре: многоверсионности, журнале предзаписи, индексах и операционных компромиссах

Профиль нагрузки

Смотрите на критичный пользовательский путь: транзакции, чтения по ключу, индексы, задержку 95-го и 99-го перцентилей и восстановление после отказа.

Когда выбирать

Глава должна отвечать, почему этот движок хорош именно для операционного контура, транзакционной обработки OLTP, кэша или модели с преобладанием записи.

Граница и риск

Нельзя обещать универсальность: каждая СУБД имеет цену в консистентности, миграциях, памяти, индексах или операционной дисциплине.

Связать дальше

Сравнивайте с фреймворком выбора СУБД, репликацией/шардингом и соседними операционными движками.

Источник

PostgreSQL

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

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

PostgreSQL — и , которую чаще всего ставят в самый ответственный слой — транзакционное ядро приложения, где цена ошибки максимальна. Именно поэтому здесь в первую очередь смотрят на , и предсказуемые .

Когда узел падает, данные защищает не отдельная функция, а связка механизмов: , , , и .

На собеседовании и в проектировании PostgreSQL разбирают не по списку фич, а по тому, как она ведёт себя под нагрузкой: , поведение , стратегия индексов, и операционная цена , которую легко недооценить до первого инцидента.

Если коротко: свободная объектно-реляционная СУБД, которая выбрала расширяемость и надёжность транзакций как главные приоритеты, а не максимальную скорость одиночной операции.

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

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 и восстановление

Ветка 8.0 добавила нативную поддержку Windows и восстановление к заданному моменту.

2010

9.0: потоковая репликация

Потоковая репликация впервые сделала горячий резерв и масштабирование чтений штатным сценарием, а не самописной обвязкой.

2017

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

Новая схема версионирования и встроенная логическая репликация расширяют сценарии миграции и интеграции.

2023

16: зрелая современная ветка

Серия 14-16 усиливает производительность, параллелизм и работу репликации на больших нагрузках.

2024

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

PostgreSQL 17 ускоряет планирование, снижает потребление памяти при VACUUM и упрощает сценарии высокой доступности с логической репликацией.

Ключевые архитектурные свойства PostgreSQL

Объектно-реляционная СУБД

Расширяемое ядро — это то, что позволяет добавлять типы, операторы и индексы под свою доменную модель, не форкая базу.

Многоверсионность и уровни изоляции

Читатели не блокируют писателей: каждая транзакция видит согласованный снимок данных, а при необходимости полная сериализуемость достигается через SSI.

Расширяемые типы и индексы

Под разные формы данных — свои индексы: JSON/JSONB, массивы, диапазоны и пользовательские типы, а к ним GiST, GIN, SP-GiST и BRIN.

Репликация через журнал предзаписи

Встроенная репликация передаёт изменения из журнала предзаписи; выбор между асинхронным и синхронным режимом — это прямой компромисс между задержкой записи и риском потери данных при сбое.

Архитектура PostgreSQL по слоям

Чтобы понять, где запрос теряет время и где его можно ускорить, полезно видеть путь данных по слоям — от драйверов и планировщика запросов до транзакционной модели, журнала предзаписи и репликации.

Клиенты и протокол
libpqБинарный протоколДрайверыАутентификация/TLS
Переход между слоями
SQL-слой
Разбор запросаПланировщикИсполнительСистемный каталог
Переход между слоями
MVCC и транзакции
СнимкиУровни изоляцииСериализуемость (SSI)
Переход между слоями
Хранилище и индексы
Табличные файлыB-treeGIN/GiST/BRINWAL
Переход между слоями
Репликация
Передача WALАсинхронноСинхронноРезервный узел
Переход между слоями
ОС и инфраструктура
Файловая системаДискCPU/RAMСеть

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

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

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

Пользовательские типыПроцедурные языкиОбёртки внешних данных

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

JSONBМассивыДиапазоныТипы PostGIS

Экосистема

TimescaleDBGreenplumПроизводные решения

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

DDL меняет структуру и метаданные, DML работает с самими данными — и проходят они через разные этапы обработки. Визуализация ниже разбирает оба маршрута по шагам.

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

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

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

Активный шаг

1. Разбор и план

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

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

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

Источник

MySQL

Лицензия, LAMP-стек и история развития MySQL.

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

PostgreSQL и MySQL: практическое сравнение

Модель данных

PostgreSQL: Объектно-реляционная модель, расширяемые типы и функции.

MySQL: Реляционная СУБД, часто используется в LAMP-стеке.

Лицензия и управление

PostgreSQL: Либеральная PostgreSQL License и развитие через PGDG.

MySQL: GPL + коммерческие лицензии; владение через Sun и Oracle.

Конкурентность и целостность

PostgreSQL: Многоверсионность и уровни изоляции из коробки, плюс строгие гарантии целостности.

MySQL: InnoDB — движок по умолчанию с транзакциями и внешними ключами.

Экосистема

PostgreSQL: Расширения, внешние обёртки данных и производные решения.

MySQL: Сильная веб-экосистема и богатая история использования в LAMP.

Когда PostgreSQL часто выбирают вместо MySQL

Это не универсальный вердикт «Postgres лучше», а перечень ситуаций, где её свойства снимают конкретную боль:

  • Когда доменная модель сложнее плоских таблиц, расширяемая архитектура и богатый набор типов данных избавляют от подгонки данных под ограничения базы.
  • Под высокой конкурентной нагрузкой многоверсионность и развитые уровни изоляции уменьшают взаимные блокировки транзакций.
  • Репликация через журнал предзаписи даёт понятный путь к масштабированию чтений и резервному переключению — без сторонней обвязки.
  • Либеральная лицензия и сильная экосистема расширений снижают риск вендорной привязки при росте системы.

Связанные главы

Чтобы отмечать прохождение, включи трекинг в Настройки