🏗️

12. Mini-Proyecto: Sistema de Reservas

Curso 5 Modulo 12/12 PostgreSQL 19
Progreso del curso 0/12
Programa SQL Medio 0/72 - 0%

Sistema de reservas concurrente

Construye un sistema de reservas que evite sobreventa:

BEGIN; SELECT id FROM asientos WHERE disponible = true ORDER BY id LIMIT 1 FOR UPDATE SKIP LOCKED; UPDATE asientos SET disponible = false WHERE id = ?; COMMIT;

�ˆï¸ Aerolinea con 200 agentes

Construye un sistema de reservas que maneje cientos de agentes vendiendo boletos simultaneamente sin sobreventa.

🎯 ¿Qué aprenderás?

Alternativas y comparativa

12. Mini-Proyecto: Sistema de Reservas es ideal cuando necesitas: (1) transformar datos sin perder filas, (2) calcular valores que dependen del contexto de otras filas, (3) simplificar consultas que de otra forma requerirían subconsultas complejas.

Alternativas a considerar: A veces una subconsulta simple, un JOIN o una CTE pueden lograr el mismo resultado. La clave es elegir la herramienta adecuada: 12. Mini-Proyecto: Sistema de Reservas para casos específicos, CTEs para legibilidad, subconsultas para filtros simples.

La experiencia te enseñará cuándo usar cada enfoque. No hay una única respuesta correcta, pero hay soluciones más elegantes y eficientes que otras. El contexto y los datos determinan la mejor estrategia.

Regla general: Si una consulta se vuelve demasiado compleja, divídela en partes. Usa CTEs para claridad, vistas para reutilización, y funciones para lógica encapsulada.

Buenas prácticas en producción

Siempre prueba tus consultas con datos pequeños primero. Usa LIMIT para evitar procesar millones de filas mientras depuras. Una vez que la lógica funciona, quita el límite y verifica el rendimiento con EXPLAIN ANALYZE.

Documenta tus consultas con comentarios. Lo que hoy parece obvio, en 3 meses será un misterio. Un simple -- Objetivo: calcular X usando 12. Mini-Proyecto: Sistema de Reservas puede ahorrar horas de debugging a tu yo del futuro.

Usa EXPLAIN ANALYZE para entender cómo PostgreSQL ejecuta tus consultas. Identificar cuellos de botella es la mejor habilidad que puedes desarrollar como desarrollador SQL. Presta atención a los costos y los tipos de scan.

No tengas miedo de refactorizar. Si una consulta se vuelve demasiado compleja, divídela en CTEs o usa una vista. El SQL legible es SQL mantenible. La claridad siempre gana a la "optimización prematura".

🎲 Proyecto de Reservas

Selecciona todas las practicas necesarias:

¿Qué aprenderás?

  • Disenar un sistema de reservas concurrente usando transacciones.
  • Implementar bloqueos con FOR UPDATE para evitar sobreventa.
  • Manejar errores de serializacion y deadlocks en la aplicacion.
  • Probar la concurrencia con sesiones simultaneas.
🏗️

🏗 Agente de Reservas

Sistema de reservas concurrente completo

c5m12

📌 Resumen del módulo