En una migración de datos, mover es lo de menos. El problema es el siguiente: demostrar que lo que llegó es lo mismo que salió. Y demostrarlo antes de que alguien apague el sistema viejo, no después.
Esta es la parte que casi ninguna propuesta comercial detalla, y es donde se van las horas de verdad.
Por qué «se copió todo» no es una respuesta
Cuando alguien dice que la migración terminó, normalmente quiere decir que el proceso de copia terminó sin errores. Eso no es lo mismo que decir que los datos coinciden. Un proceso puede terminar en verde y aun así:
- Haber truncado campos de texto que en destino son más cortos.
- Haber convertido fechas a otra zona horaria, corriendo todo un día.
- Haber redondeado decimales en importes.
- Haber perdido filas que fallaron una a una y se registraron como «omitidas».
- Haber duplicado un lote que se reintentó tras una caída de red.
Ninguno de esos casos produce un error visible al final. Todos producen un sistema que parece correcto hasta que alguien busca una factura de hace tres años y no aparece.
Las tres comprobaciones, de menos a más cara
1. Conteo por tabla
Lo mínimo. Cuántas filas hay en origen y cuántas en destino, tabla por tabla. Es barato y detecta lo más grosero: un lote que no se cargó, una tabla que nadie incluyó en el alcance.
No detecta nada sobre el contenido. Dos tablas con el mismo número de filas pueden tener valores distintos en todas ellas.
2. Sumas de control por columna
Sumar las columnas numéricas y comparar los totales. Si el origen suma 4.812.339.006 en importes y el destino suma lo mismo, no hubo redondeos ni filas perdidas con valor.
Es rápido, se puede correr sobre tablas enormes y atrapa la clase de error más cara: la que cambia dinero. Para columnas de texto se usa un hash agregado, que hace lo mismo con contenido no numérico.
3. Comparación fila a fila
La única que prueba de verdad. Y la que hace inviable el enfoque ingenuo: comparar miles de millones de filas trayéndolas a un mismo sitio no cabe en ninguna ventana de mantenimiento razonable.
Lo que sí funciona es comparar huellas: se calcula un hash por fila en origen y otro en destino, se agrupan por bloques —por rango de clave o por fecha— y se comparan los bloques. Si un bloque cuadra, sus millones de filas cuadran. Si no cuadra, se baja el nivel de detalle solo dentro de ese bloque.
Así se pasa de comparar todo a comparar lo que falla, que suele ser una fracción diminuta.
El caso que lo puso a prueba
En la migración de un histórico de 11 TB de Oracle a BigQuery para Servinformación, la cifra que importa no es el volumen: son los 11.360 millones de filas con 100% de coincidencia verificada.
Verificado significa exactamente lo de arriba: no que el proceso terminara sin errores, sino que se comprobó bloque por bloque que el destino contenía lo mismo que el origen. La ventana estimada era de una semana; la sincronización se resolvió en 20 horas.
El detalle completo está en el caso, con las cifras.
Lo que hay que decidir antes de empezar
La verificación no se improvisa al final. Antes de mover un solo byte conviene tener respuesta a esto:
- ¿Qué se considera «igual»? Si el sistema viejo guarda importes con cuatro decimales y el nuevo con dos, no van a coincidir nunca. Eso no es un error: es una decisión que alguien tiene que tomar y escribir.
- ¿Se puede leer del origen sin frenarlo? Calcular hashes sobre una base en producción compite con los usuarios. O se hace sobre una réplica, o se hace de noche, o se acepta el impacto.
- ¿Qué pasa con lo que cambia mientras se migra? Un histórico de diez años no cambia, pero los últimos meses sí. La verificación tiene que distinguir «no coincide porque se perdió» de «no coincide porque cambió después de copiarlo».
- ¿Quién firma que está bien? Una migración termina cuando alguien acepta el resultado. Si no está claro quién, no termina nunca.
La pregunta que conviene hacerle a cualquier proveedor
Si alguien le propone una migración, hay una pregunta que separa a quien lo ha hecho de quien lo ha leído:
¿Cómo van a demostrarme que no se perdió nada, y cuánto tiempo del cronograma es esa parte?
Si la respuesta es «comparamos los conteos», está viendo el 5% del trabajo. Si la respuesta incluye cómo van a comparar contenido sin bloquear el origen, está hablando con alguien que ya se ha estrellado con esto.
Nosotros hacemos esa parte como subcontratistas, detrás de la marca de quien nos contrata. Si le interesa cómo lo abordamos, escríbanos.