Desarrollador Backend: pregunta de entrevista

¿Cómo despliegas migraciones de base de datos de forma segura?

Despliega migraciones en pasos compatibles: añade primero, publica código que maneje ambas formas, rellena datos de forma segura, cambia lecturas y elimina campos obsoletos después. Mantén locks y transacciones cortos.

Respuesta directa

Qué debe cubrir una buena respuesta

Cómo funciona

Una migración segura nunca exige que el esquema y el código cambien en el mismo instante. Cada paso debe funcionar con la versión anterior y la siguiente de la aplicación: expandir el esquema, desplegar código que escribe ambas formas, rellenar por lotes pequeños que no retengan locks largos, cambiar las lecturas y solo entonces contraer eliminando lo que no se usa. Cada paso tiene su propio despliegue y su propio rollback, y las operaciones que reescriben una tabla completa o toman un lock exclusivo se contrastan con el comportamiento del motor antes de ejecutarse en producción.

Ejemplo

Añade una columna nullable, despliega writers, rellena por lotes y hazla obligatoria solo cuando toda versión activa pueda leerla. Renombrar una columna se convierte en añadir la nueva, escribir en ambas, rellenar, cambiar lecturas, dejar de escribir la vieja y eliminarla, repartido en varias releases en vez de un ALTER que rompe los pods en ejecución.

Errores frecuentes

  • Ejecutar un NOT NULL o un cambio de tipo sobre una tabla grande en una sola sentencia y bloquearla minutos.
  • Acoplar la migración al despliegue, de modo que un rollback del código deja el esquema por delante.
  • Rellenar con un único UPDATE que infla la tabla e inunda la replicación.

Una estructura útil para responder

Responde desde tu propia experiencia.

No memorices un guion: usa solo ejemplos que puedas explicar con honestidad en preguntas posteriores.

Practica esta respuesta con MiraHint

Abre el espacio de trabajo de escritorio y ensaya una respuesta clara con tus propias palabras.

Descargar MiraHint
Preguntas de entrevista para Desarrollador Backend