Estimación de una migración de base de datos
Cómo calcular el tiempo necesario para la migración de una base de datos: rellenado, duración del bloqueo, implementación y reversión. «Añadir una columna» es una línea de SQL; el tiempo estimado es aproximadamente el de un segundo.
«Añadir una columna» es una migración de una sola línea. La estimación no se refiere a la columna.
Las migraciones de esquemas funcionan con dos tiempos. Uno es el de SQL —por lo general rápido, por lo general mecánico—. El otro es el reloj operativo: cuánto tiempo bloquea la tabla, cómo se comporta ante escrituras simultáneas, cómo se revierte el proceso si algo sale mal y cuál es el plan de contingencia si se prolonga más allá de la ventana de implementación. El equipo se centra en el SQL porque es lo que figura en la solicitud. El trabajo real se lleva a cabo en el segundo reloj.
En una mesa pequeña, los dos relojes son iguales y la historia es realmente insignificante. En cualquier mesa que tenga importancia, no lo son. La estimación debe tener en cuenta el relleno, la estrategia de implementación y la reversión, que alguien debe haber ensayado antes de que la implementación se acerque siquiera a la producción.
Lo que se dice en la sala
Backend: «Solo es un ALTER; la migración se ejecuta en un segundo».
SRE: «¿En la mesa de pedidos? ¿Con los cierres bloqueados? ¿A las 15:00 horas?»
DBA: «¿Cómo estamos rellenando las filas existentes?»
SRE: «¿Cuál es el proceso de reversión si la implementación falla a mitad de camino?»
Pregunta principal: «¿Admite la ruta de lectura que la columna esté nula durante una hora?»
Preguntas que conviene plantearse antes de votar
- ¿Qué tamaño tiene la tabla: miles, millones o cientos de millones de filas?
- ¿Herramienta de migración en línea o comando ALTER in situ?
- Estrategia de relleno: ¿sincrónica, por lotes, de doble escritura?
- ¿Qué función desempeña la ruta de lectura durante el periodo de implantación?
- Revertido: ¿solo hacia adelante, o podemos revertir el esquema?
- ¿Ha seguido alguien el manual de procedimientos de guardia para esta migración?
Si la mitad de los presentes vota por «el SQL» y la otra mitad por «la implementación», no se trata de un problema de cifras; se trata de dos historias que pretenden ser una sola. Sepárelas: el cambio de esquema es una tarea, y el plan de actualización retrospectiva y de implementación es otra.
Calcule el tiempo de implementación y el de reversión, no el de la instrucción ALTER. El segundo es el que entraña el riesgo.
Consulte cómo realizar una estimación de la migración de datos para la variante entre sistemas, así como los demás ejemplos prácticos de estimación. Inicie una sesión gratuita de «planning poker» una vez que se haya esbozado el plan de implementación.