Evitar reservas por encima del aforo

Crea reservas atómicas de grupos con PostgreSQL, conserva las reservas originales y revierte la asignación de plazas si falla la confirmación.

ProyectoPostgreSQLBase de datos

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

Evitar reservas por encima del aforo es un proyecto de PostgreSQL para quienes ya saben consultar y modificar tablas sencillas. Realiza reservas de talleres, reproduce dos confirmaciones para una sola plaza y entrega SQL reutilizable que reserve al grupo completo o no cambie nada.

Dos laboratorios guiados explican el flujo normal, las esperas reales por bloqueos, la recuperación de transacciones y una sentencia atómica guardada. Un desafío independiente cambia las actividades, los tamaños de los grupos y el orden de los puestos. Cada unidad empieza con sus propios datos preparados; entregarás tu SQL y el registro real de reservas.

Lo que aprenderás

  • Relacionar cada grupo confirmado con su número exacto de plazas y la capacidad restante.
  • Reproducir una decisión basada en disponibilidad desactualizada mediante dos conexiones reales.
  • Asignar plazas de forma condicional y usar las filas de RETURNING para crear la confirmación.
  • Observar una solicitud en espera mientras otro taller sigue admitiendo reservas.
  • Distinguir entre plazas insuficientes y un error SQL, y comprobar que una confirmación fallida revierte la asignación.
  • Recuperar una transacción abortada y conservar las reservas originales, los datos de los talleres y las herramientas preparadas.

A quién va dirigido este curso

Para estudiantes de SQL y desarrolladores principiantes que quieran comprender un problema concreto de concurrencia trabajando con una base de datos real.

Requisitos previos: Navegación básica por la terminal, conexiones PostgreSQL y SELECT, WHERE, INSERT y UPDATE. Las transacciones, los bloqueos de fila, las variables de psql, las conversiones a entero y las expresiones de tabla comunes que modifican datos se explican antes de usarse.

Entorno de aprendizaje: PostgreSQL y los datos sintéticos están preparados en el navegador. Workshop Desk ofrece la shell; Desk A y Desk B ofrecen conexiones nativas de psql independientes a la misma base de datos en una sola máquina. Escribirás SQL sin crear un programa Python ni un sitio web.

Preguntas frecuentes

¿Necesito conocer los bloqueos de bases de datos?

No. Primero harás una reserva normal; después observarás un exceso controlado de reservas y una espera real antes de aplicar el método seguro. Se requieren los conocimientos básicos de SQL indicados arriba.

¿Qué entregaré?

Un archivo reserve.sql reutilizable y confirmaciones reales de grupos completos. En cada taller, las plazas reservadas más las libres deben sumar su aforo. Las comprobaciones también conservan los registros originales y ejecutan tu SQL sin modificar sobre otros datos aislados.

¿Incluye una plataforma completa de reservas en producción?

No. Practicarás transacciones READ COMMITTED en una sola base de datos PostgreSQL. Los pagos, los reintentos automáticos, las retenciones temporales de plazas y la coordinación distribuida quedan fuera del proyecto. El desafío combina de forma independiente los mecanismos de los laboratorios guiados.

Profesor

labby
Labby
Labby is the LabEx teacher.