Предотвращаем переполнение мастер-классов — проект PostgreSQL для тех, кто уже умеет читать и изменять простые таблицы. Создавайте реальные бронирования, воспроизведите два подтверждения на одно место и подготовьте повторно используемый SQL: либо бронируется вся группа, либо ничего не меняется.
Две пошаговые лабораторные работы объясняют обычное бронирование, реальное ожидание блокировок, восстановление транзакций и сохранённый атомарный запрос. Одно самостоятельное задание меняет занятия, размеры групп и порядок работы стоек. Каждый модуль начинает работу со своими подготовленными данными; результат — ваш SQL и реальный реестр бронирований.
Чему вы научитесь
- Связывать каждую подтверждённую группу с точным числом мест и оставшейся вместимостью.
- Воспроизводить решение по устаревшим данным о местах через два реальных подключения.
- Условно выделять места и создавать подтверждение по строкам RETURNING.
- Наблюдать ожидающий запрос, пока другой мастер-класс продолжает принимать бронирования.
- Отличать нехватку мест от ошибки SQL и проверять, что неудачное подтверждение откатывает выделение мест.
- Восстанавливать прерванную транзакцию и сохранять исходные бронирования, сведения о занятиях и подготовленные инструменты.
Для кого этот курс
Для изучающих SQL и начинающих разработчиков приложений, которые хотят разобраться в конкретной проблеме конкурентного доступа через работу с настоящей базой данных.
Предварительные знания: Базовая навигация в терминале, подключения PostgreSQL, SELECT, WHERE, INSERT и UPDATE. Транзакции, блокировки строк, переменные psql, приведение к целым числам и изменяющие данные общие табличные выражения объясняются до использования.
Учебная среда: PostgreSQL и синтетические данные о мастер-классах подготовлены в браузере. Workshop Desk предоставляет оболочку; Desk A и Desk B — отдельные нативные подключения psql к одной базе данных на одной машине. Вы пишете SQL без разработки программы Python или сайта.
Часто задаваемые вопросы
Нужно ли заранее разбираться в блокировках базы данных?
Нет. Сначала вы выполните обычное бронирование, затем увидите контролируемое переполнение и настоящее ожидание блокировки, а после примените безопасный способ. Нужны перечисленные выше основы SQL.
Что я подготовлю?
Повторно используемый файл reserve.sql и реальные подтверждения для целых групп. Для каждого мастер-класса сумма забронированных и оставшихся мест должна равняться его вместимости. Практические проверки также сохраняют исходные записи и выполняют ваш неизменённый SQL на других изолированных данных.
Рассматривается ли полноценная промышленная платформа бронирования?
Нет. Вы практикуете транзакции READ COMMITTED в одной базе PostgreSQL. Платежи, автоматические повторные попытки, временное удержание мест и распределённая координация находятся вне проекта. В самостоятельном задании вы объединяете механизмы, изученные в пошаговых работах.




