Un dia de migraciones con Genexus 9.0 U2.

Tenemos un sistema en producción que funciona en Genexus 8.0 y esta generado con Visual FoxPro y la base de datos el SQL Server.

Por pedido de un cliente nuevo, le interesaba investigar la posibilidad de utilizar productos Opensource y nos pidio hacer la migración del sistema.

Dedique un dia entero, a ver como nos iba con la migración. La idea era EVALUAR, cuan costoso iba a ser la migración definitiva, por lo que decidí hacer una migración multi-pasos, pero desechable, de forma de poder solucionar problemas y luego volver a hacer la migracion definitiva.

Partiamos de un sistema en Visual FoxPro/SQL Server 2000 que tiene 43 tablas y 265 objetos con interfaz win (chiquito y controlable), que tienen unos cuantos años en produccion y una decena de clientes y algunas decenas de usuarios.

La idea final era llegar a java/mysql, pero decidi hacerlo en varios pasos.

1) Limpieza de KB Original

  •  Distribuir los objetos main y todos los llamados por estos + Transacciones
  •  Identificar objetos con sentencias DBASE

2) Migrar a 9.0 .NET / SQLServer 2005.

  • Crear una KB en 9.0 y consolidar lo anterior. Arreglo de pequeños errores al consolidar
  • Generar un modelo en .NET / SQLServer . Especificar y compilar
  • Revisar todas las propiedades de Null en atributos que pueden ser nulos
  • Arreglar problemas de subtipos (no habia)
  • Copiar datos de SQLServer 2000 a SQLServer 2005

3) Migrar datos de SQLserver a MySQL

  •     Crear la base de datos en MySQL (con Genexus)
  •     Copiar los datos SQLServer -> MySQL (con DTS)

4) Probar la aplicacion en .NET / SQLServer 2005

5) Probar la aplicacion en .NET / MySQL

6) Generar un modelo con java / MySQL

  • Reprogramar sentencias DBASE a java

7) Optimizaciones y mejoras

  • Habilitar Cache
  • Cambiar reportes a PDF
  • Probar con Artimetica Decimal (aca encontre un problema que cancelan sentencias con Java U2 con MySQL)

Lo que mas me llamó la atención fueron los pocos errores que aparecieron en la migración. Todos estos pasos fueron realizados en menos de 10 horas, incluyendo ahi, lo que dediqué a estudiar alguna herramienta de migración de datos y la copia de los datos.

Es realmente increible que en tan poco tiempo podamos tener operativo un sistema en plataformas tan diferentes. Ahora nos quedo el sistema generado en tecnologia Full Microsoft (.NET 2.0/SQLServer 2005) y Full OpenSource (java/MySQL), lo cual nos va a permitir hacer comparaciones y optar por la mas conveniente.

Lo que iba a ser una migración de Evaluacion, termino siendo la migración definitiva.

Ahora nos queda la migración de Win a Web, pero eso será motivo de otro post..

   









technorati tags:, , , , ,

Comentarios

  1. Migrar a de Visual Fox a Java depende no solo del numero de objetos y tablas. Por ejemplo al migra un sistema en Fox con DBFs tarda mas si el sistema solo usa cursores y no vistas, la progrmacion no esta mularizada y se usan ciclos de busqueda while end do con base a indices estructurales CDX. Todo esto en funcion de la complejidad de las rutinas (e.g un sistema de planillas integrado a contabilidad ), la complejidad no se mide aqui por el numero de componentes o tablas sino por la estructura de la logica. Un sistema migrado en 10 dias debe ser muy pequeño

    ResponderEliminar
  2. Esta no fue una migracion de Visual Fox a Java, sino que fue una migracion de una aplicacion GeneXus, generada con Visual Fox, a otra aplicacion GeneXus, generada con Java.

    La migracion no llevo 10 dias, sino que llevo 10 HORAS !! .

    Es una de las grandes ventajas de Genexus, que permite reutilizar el conocimiento sin tener que repensar la logica.

    ResponderEliminar
  3. Gracias por todo el conocimiento aportado en el blog, estoy empezando todo este proceso de GENEXUS, actualmente tengo una KB funcionando con VFP y SQL Server 2000 generado con GX 9 win y quisiera saber como se realiza la configuracion del modelo para pasar la kb a java con mysql o tal vez desde donde puedo obtener informacion, consideraciones y como le hago para instalarlo bajo linux

    ResponderEliminar
  4. Torrilux:

    En el siguiente enlace puedes encontrar la charla que dio Enrique en el Encuentro GeneXus hace algunos años sobre el tema en cuestión.

    http://www2.gxtechnical.com/portal/hgxpp001.aspx?15,8,8,O,E,0,,1767s

    Miralá porque te va a ahorrar un monton de tiempo y dolores de cabeza.

    Con respecto a la instalación en Linux te aconsejo 2 cosas.

    * Uses GxSearch para buscar post viejos de los foros porque el tema ya se ha tratado
    * Hagas las consultas pertinentes en el foro ya que alli es un lugar mucho mas indicado desde el cual ayudarte.

    Saludos.

    ResponderEliminar
  5. bueno me parece excelente sin embargo nadie dio detalles tecnico sobre la migracion
    que codigo usar donde usar comosacar datos de sql y migrarlos a mysql , codigo codigo codigo codigo

    ResponderEliminar
  6. Anonimo:
    Para la migracion de datos, podes usar http://kofler.info/english/mssql2mysql/

    ResponderEliminar
  7. buenas enrique, una molestia estoy en el paso 2 inciso uno donde dice crear una nueva kb y consolidar, pero no se si es normal pero la primer prueba que realize fue hacer un xpz con todos los objetos, y llevaba como dos dias y nunca que terminaba entonces procedi a cancelarlo y ahora lo hice un xpz por cada tipo, para ver si asi lograba la consolidacion, pero veo que ya lleva igual dos dias y no hay modo que termine, no tendras algun link donde diga la manera mas optima para poder hacer eso, ya que sino talvez otra forma seria ir consolidando por folders y tipos para que sean mas xpz con menos objetos.

    De antemano gracias.

    ResponderEliminar
  8. Unknown, que tamaño tiene la KB?
    Se puede consolidar primero solo las transacciones con los atributos..

    ResponderEliminar
  9. la kb tiene un tamaño de 2.6GB pues hizo un xpz solo de transacciones y allí lleva ya dos días, una idea que tengo es tal vez consolidar las transacciones por folders para que lleve menos objetos pero si no mal me falla la memoria eran como 6k objetos.

    ResponderEliminar
  10. Lo importante es la cantidad de objetos..
    Deberias ver en que transaccion se esta trancando, pues seguramente es algun lio que no puede resolver correctamente o algun subtipo mal definido ...

    ResponderEliminar
  11. si creo que me tocara hacerlo en pedacitos mas pequeños para poder identificar cual es la que esta dando problemas, porque el fin de esto era porque para especificar un objeto se tardaba de dos a tres horas, casi imposible trabajar asi y poder avanzar, y peor si agregaba un campo a una transaccion se disparaba el tiempo en una tabla llego hasta las 5 horas en impactar solo un campo que agregue.

    ResponderEliminar

Publicar un comentario

1) Lee el post
2) Poné tu opinión sobre el mismo.
Todos los comentarios serán leidos y la mayoría son publicados.

Entradas más populares de este blog

El Sordo

StackOverflow Documentation

Codigo simple