Раздел 33 · PostgreSQL с нуля

Что такое PostgreSQL и чем он выделяется

junior~15 мин

без входаВойди, чтобы отмечать прогресс, вести заметки и решать задачи в редакторе. войти

В блоке теории база данных была абстракцией: отношения, ключи, транзакции на бумаге. В этом разделе мы берём одну настоящую СУБД и проходим её от установки до эксплуатации. Эта СУБД PostgreSQL, и первый урок отвечает на два вопроса: что это за программа и почему для начала выбрали именно её.

Библиотека с библиотекарем

Представь большую библиотеку с закрытым фондом. Читатели к полкам не ходят. Они пишут заявку, отдают её библиотекарю, тот идёт в хранилище и приносит книги. Библиотекарь следит, чтобы двое не унесли один экземпляр, чтобы книги возвращались на место и чтобы в журнале выдачи не было путаницы.

PostgreSQL устроен так же. Данные лежат в файлах на диске, но твоя программа никогда не открывает эти файлы сама. Она отправляет серверу PostgreSQL запрос на SQL, сервер читает и меняет файлы и отдаёт ответ. Такую схему называют клиент-серверной.

  приложение на Node.js ─┐
  psql в терминале  ─────┼──── запросы SQL ────▶  сервер PostgreSQL ──▶ файлы на диске
  GUI-клиент DBeaver ────┘◀──── результаты ─────

Из этой схемы следуют две важные вещи:

  • Клиентов много, сервер один. Сотни подключений одновременно читают и пишут одни и те же таблицы, и сервер отвечает за то, чтобы они не сломали данные друг другу. Это изоляция транзакций из теории, только теперь в живой программе.
  • Сервер работает всегда. Это отдельный процесс, который стартует вместе с компьютером или контейнером и ждёт подключений на порту 5432. Если сервер выключен, подключиться не к чему.

Для сравнения, SQLite устроена иначе: это библиотека внутри твоей программы, а вся база лежит в одном файле. Библиотекаря нет, читатель сам ходит к полке. Для мобильного приложения этого хватает, а для сайта, куда одновременно пишут тысячи пользователей, нужен сервер.

Откуда он взялся

История PostgreSQL длиннее, чем у большинства программ, которыми ты пользуешься.

  • 1970-е. В Калифорнийском университете в Беркли команда Майкла Стоунбрейкера делает СУБД Ingres, одну из первых реляционных.
  • 1986. Стоунбрейкер начинает новый проект, «после Ingres», по-английски post-Ingres. Отсюда имя Postgres.
  • 1994. Двое аспирантов, Эндрю Ю и Джолли Чен, заменяют в Postgres собственный язык запросов на SQL. Через год проект выходит под именем Postgres95.
  • 1996. Код уходит в открытое сообщество, проект получает имя PostgreSQL. Его поддерживают до сих пор.

Произносят «постгрес-кью-эль», а в жизни почти всегда говорят «постгрес». Слона на логотипе зовут Слоник, по-английски Slonik.

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

урок из курса

Урок из курса «PostgreSQL с нуля». Курс покупается один раз и остаётся навсегда: 500 ₽.

Оплата пока не подключена: премиум и курсы открываются промокодом.