Si los datos que planea migrar actualmente son incorrectos, deben corregirse si realiza una migración o no. Datos incorrectos = datos inútiles.
Las migraciones son arriesgadas, eso es cierto. Pero también lo es cada proyecto importante de TI. Hay formas de mitigar el riesgo y, sin duda, deben planificarse por adelantado en una migración.
Primero, siempre debe tener una forma de volver al sistema como está ahora. Las segundas migraciones deben realizarse en servidores de prueba configurados solo para la migración. Es una tontería hacer una migración sin la capacidad de probarlo primero. Tercero, todo el código para la migración debe estar en control de origen.
Cuarto, necesita requisitos y planes de prueba antes de comenzar la migración. Debe saber que si tenía 1.293.687 registros en el sistema anterior, que tiene los mismos en el nuevo o sabe a dónde fueron (quizás a una tabla de excepción). Si está normalizando un esquema desnormalizado, debe calcular cuántos registros debe terminar antes de comenzar y luego verificarlo. Necesita documentación que especifique cuáles son las asignaciones de un sistema a otro. Esto ayudará a su personal de control de calidad a verificar si los datos se enviaron al lugar correcto.
Debe determinar cómo manejar los datos incorrectos actuales. Lo que se puede limpiar, lo que podría necesitar un valor en un campo obligatorio que diga 'Desconocido', lo que se debe arrojar a una tabla de excepción, lo que necesita la intervención manual de un grupo de usuarios (decidir si estas dos personas son realmente un duplicado o ¿hay dos médicos en esa práctica con el mismo nombre, por ejemplo, y si es un duplicado qué datos elegir cuando difieren los dos registros, etc.).
La clave para una migración exitosa es la planificación. He descubierto que la planificación (que incluye escribir los casos de prueba y las pruebas unitarias) generalmente lleva más tiempo que el desarrollo real.
La siguiente clave para una migración de datos exitosa es el control de calidad. Este no es un proyecto para lanzar al equipo de control de calidad el día antes del lanzamiento. Este no es un proyecto para lanzar cuando QA dice que hay un problema.
Otra clave para una migración exitosa es implementar la mayoría de los datos y probarlos mientras el sistema original todavía se está ejecutando. Si está moviendo muchos registros, esto podría llevar mucho tiempo y se producirán nuevos cambios. Por lo tanto, su proceso también debe poder extraer los cambios de datos después de que comience la migración. SQL Server, por ejemplo, tiene algo llamado Change Data Capture que puede ayudar con esto. Puede realizar una copia de seguridad del sistema original y activar la captura de datos modificados al mismo tiempo. Luego puede restablecer la copia de seguridad en su servidor de migración, probar la migración, cargar la mayoría de los datos y luego solo tiene que cargar los registros que han cambiado. Cuando migre los registros finales, apague el sistema de origen hasta que finalice la migración. Esta es una razón para migrar la mayoría de los registros con anticipación, así que la aplicación está inactiva la menor cantidad de tiempo. Elija bien el tiempo de migración, no cierre el sistema de nómina el día en que deberían procesar la nómina o enviar W2. Y hazlo durante las horas de bajo uso. Si tiene varios clientes, podría considerar migrar uno primero y asegurarse de que todo esté bien antes de hacer los demás. Es mucho más fácil revertir los datos de un cliente que 10000 si hay un problema. Pero planifique esto cuidadosamente si lo hace. s datos de 10000 si hay un problema. Pero planifique esto cuidadosamente si lo hace. s datos de 10000 si hay un problema. Pero planifique esto cuidadosamente si lo hace.
Si la migración involucra una nueva interfaz de usuario, haga que los usuarios reales la usen como parte de las pruebas de migración. Luego, capacite a los otros usuarios antes de que se active (pero menos de una semana antes de que se active o se olvidarán). Haga que los usuarios que participan en las pruebas ayuden a diseñar la capacitación, saben qué preguntas tenían y qué necesitan saber las personas en qué orden. Obtenga su entrada, haciendo un campo obligatorio porque cree que no debería ser útil si los usuarios generalmente no tienen esos datos cuando ingresan los registros. Simplemente pondrán basura en el campo recién requerido porque de lo contrario no pueden obtener los datos.
Mire lo que está mal con los datos actuales, ¿puede agregar claves externas, restricciones, desencadenantes, reglas comerciales en la aplicación, valores predeterminados, etc. para evitar que esto sea malo en el futuro? Cuando limpia datos incorrectos, también necesita crear una forma de evitar que esos datos igualmente malos ingresen en el futuro. Analice por qué se asignaron los datos incorrectos y corrija los agujeros en el diseño.