В блоке теории база данных была абстракцией: отношения, ключи, транзакции на бумаге. В этом разделе мы берём одну настоящую СУБД и проходим её от установки до эксплуатации. Эта СУБД 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 ₽.
Оплата пока не подключена: премиум и курсы открываются промокодом.