Bases de datos · Avanzado 3

Migraciones, pruebas y observabilidad

Cambios de esquema reversibles, pruebas de datos, métricas, registros y respuesta ante degradaciones.

3
lecciones
3
ejercicios resueltos
CONTENIDO ORIGINAL

Avanza en orden. Cada lección está redactada para Palta es Cool, utiliza ejemplos propios y termina con una actividad cuya respuesta puedes desplegar.

ANTES DE EMPEZAR

Ubícate antes de avanzar

01 / PUNTO DE PARTIDA

Conviene haber comprendido Concurrencia, aislamiento y MVCC.

02 / META OBSERVABLE

Al terminar deberías poder relacionar Migraciones con Pruebas y resolver un caso nuevo.

03 / TIEMPO SUGERIDO

Reserva entre 75 y 120 minutos o divide el laboratorio en dos sesiones.

04 / PREPARA EL LABORATORIO

Las primeras secciones se leen sin instalar nada. Para practicar SQL prepara PostgreSQL o un DBMS equivalente.

Abrir la guía de herramientas →
Diagnóstico rápido: ¿cómo se relacionan Migraciones y Pruebas?

No necesitas acertar todavía. Escribe una hipótesis de dos líneas y compárala con tu respuesta al finalizar; si puedes corregirla y justificar el cambio, hubo aprendizaje.

Ruta guiada · 3 lecciones

Aprende el tema paso a paso

Aprenderás a cambiar una base en producción sin depender de la suerte: migraciones compatibles, pruebas de reglas y señales que permiten detectar y explicar degradaciones.

Al terminar podrás
  • Expandir, migrar y contraer reduce el riesgo de una migración
  • Las restricciones protegen siempre y las pruebas comprueban escenarios
  • Métricas, registros y trazas convierten una lentitud en una hipótesis
01
Cambios seguros

Expandir, migrar y contraer reduce el riesgo de una migración

Primero se añade una estructura compatible, luego la aplicación escribe o lee ambos formatos, se completa el historial y se verifica. Solo cuando nada depende del formato anterior se elimina.

01

Cada paso puede desplegarse y observarse por separado.

02

Los backfills avanzan por lotes y pueden reanudarse.

03

La reversión se diseña antes de ejecutar el cambio.

Comprueba lo aprendido · 01

¿Por qué renombrar una columna directamente puede romper un despliegue gradual?

Mostrar respuesta

Porque durante un tiempo convivirán versiones de la aplicación que esperan nombres distintos. La expansión mantiene compatibilidad mientras se realiza la transición.

02
Pruebas de datos

Las restricciones protegen siempre y las pruebas comprueban escenarios

NOT NULL, claves, UNIQUE y CHECK impiden estados inválidos en todas las rutas. Las pruebas agregan casos de integración, datos de frontera, migraciones y propiedades que abarcan varias tablas.

01

Prueba la regla cerca de la base y desde la aplicación.

02

Usa datos pequeños cuyo resultado puedas calcular a mano.

03

Verifica tanto aceptación válida como rechazo inválido.

Comprueba lo aprendido · 02

¿Por qué una prueba exitosa no sustituye una restricción declarativa?

Mostrar respuesta

La prueba observa casos concretos; la restricción actúa sobre todas las escrituras, incluidas las que llegan por otra aplicación o herramienta.

03
Observar y responder

Métricas, registros y trazas convierten una lentitud en una hipótesis

Se observan latencia, tasa de consultas, errores, conexiones, bloqueos, réplicas y uso de recursos. Los registros explican eventos y las trazas conectan una petición con sus consultas. Las alertas deben señalar impacto, no ruido.

01

Compara con una línea base y percentiles, no solo promedios.

02

Relaciona cambios recientes con el inicio del síntoma.

03

Después del incidente documenta causa y prevención.

Comprueba lo aprendido · 03

¿Por qué alertar por CPU alta puede ser insuficiente?

Mostrar respuesta

CPU alta puede ser trabajo útil o una consecuencia. Una alerta valiosa combina saturación con latencia, errores o impacto en el servicio.

Resumen de la sección

Tu recorrido en tres ideas

  1. Expandir, migrar y contraer reduce el riesgo de una migración
  2. Las restricciones protegen siempre y las pruebas comprueban escenarios
  3. Métricas, registros y trazas convierten una lentitud en una hipótesis
PROFUNDIZACIÓN / LABORATORIO GUIADO

Cambia una columna sin detener versiones antiguas

Conecta compatibilidad de esquema, migraciones graduales, pruebas de datos y señales operativas.

CASO

La aplicación debe separar nombre_completo en nombre y apellido mientras todavía existen servidores con la versión anterior.

Procedimiento

  1. Expande el esquema con campos compatibles y escritura dual observable.
  2. Migra datos en lotes reanudables y compara conteos y valores.
  3. Cambia lecturas, vigila errores y solo después contrae el campo anterior.

Evidencia mínima

  • Porcentaje migrado y discrepancias.
  • Errores y latencia por versión de aplicación.
  • Plan de pausa y reversión antes de cada etapa.
Mostrar razonamiento modelo

La solución evita un cambio destructivo inmediato. Durante la transición, ambas versiones deben poder operar. La contracción ocurre cuando las lecturas antiguas desaparecieron y la consistencia fue comprobada.

Para ir más lejos

¿Qué ocurre con los respaldos tomados a mitad de la migración?

CIERRE DE LA SECCIÓN

Comprueba que puedes usarlo

Antes de continuar, revisa estos tropiezos frecuentes y resuelve un caso sin copiar los ejemplos.

ERROR 01

Modificar una columna de forma incompatible durante un despliegue gradual.

ERROR 02

Alertar por cada cambio de recurso sin conectarlo con impacto.

DESAFÍO INTEGRADOR

Ahora hazlo sin guía

Planifica una migración expandir-migrar-contraer y las señales para comprobarla en una tabla de clientes.

Mostrar pauta de corrección
Una respuesta sólida:
  • Cada etapa mantiene compatibilidad.
  • Incluye pruebas, backfill reanudable y reversión.
  • Define métricas, registros y condición de detener.