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

Обновлено: 2 мая 2026 г. в 21:32

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

средний

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

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

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

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

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

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

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

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

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

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

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

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

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

Источник

PostgreSQL

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

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

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

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

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

Практическая интерпретация на основе свойств PostgreSQL:

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

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

  • Фреймворк выбора СУБД - Как выбирать PostgreSQL среди других СУБД с учётом профиля нагрузки, требований к консистентности и операционной сложности.
  • MySQL: история, движки хранения и масштабирование - Сравнение двух основных платформ для транзакционной обработки и их архитектурных и операционных компромиссов.
  • PostgreSQL изнутри (short summary) - Глубже про многоверсионность, журнал предзаписи, блокировки, индексы и внутренние механики, влияющие на производительность.
  • Репликация и шардинг - Практика масштабирования и отказоустойчивости: реплики для чтения, резервное переключение, стратегия шардирования и перебалансировка.
  • Designing Data-Intensive Applications, 2nd Edition (short summary) - Теоретическая база по транзакциям, репликации и консистентности для осознанного проектирования слоя данных.
  • Введение в хранение данных - Как решения для хранения данных связаны с API-контрактами и эволюцией архитектуры по мере роста системы.

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