Предотвращаем переполнение мастер-классов

Создавайте атомарные групповые бронирования в PostgreSQL, сохраняйте исходные записи и отменяйте выделение мест при ошибке подтверждения.

ПроектPostgreSQLБаза данных

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

Предотвращаем переполнение мастер-классов — проект 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. Платежи, автоматические повторные попытки, временное удержание мест и распределённая координация находятся вне проекта. В самостоятельном задании вы объединяете механизмы, изученные в пошаговых работах.

Преподаватель

labby
Labby
Labby is the LabEx teacher.