Llevo un par de semanas trasteando con este "peso pesado" del dato y quería dejar mis primeras impresiones. Ya os adelanto que mi pobre Pentium 4 con 1GB de RAM sufre lo indecible cada vez que abro los clientes pesados de Windows, pero a cambio, estoy durmiendo más horas.
Del código espagueti a las cajitas: Mappings y Workflows
Para los que vengáis del mundo del desarrollo puro como yo, la idea de programar arrastrando cajitas suena casi a herejía. En PowerCenter, el desarrollo no se hace picando código en un editor de texto, sino utilizando herramientas gráficas.
La arquitectura se divide principalmente en el servidor y los clientes de escritorio que instalamos en nuestras máquinas locales: el Designer, el Workflow Manager y el Workflow Monitor.
El concepto estrella es el Mapping. En el Designer, conectas orígenes de datos (por ejemplo, una tabla en Oracle 9i o un fichero de texto plano gigantesco) con destinos, pasando por una serie de transformaciones visuales. ¿Necesitas cruzar datos de dos tablas? Usas un Joiner. ¿Filtrar nulos o aplicar lógica condicional? Tiras de un Filter o un Expression.
A nivel técnico, lo interesante es cómo PowerCenter 8 ha mejorado la gestión del particionado de datos, permitiendo paralelizar las cargas si tienes servidores con varios procesadores físicos o un buen sistema de almacenamiento por debajo.
Ejecutando la bestia desde consola
Aunque todo es muy visual para el desarrollador, al final del día necesitamos integrar estas cargas en nuestros planificadores nocturnos corporativos. Y aquí es donde los administradores de sistemas y los picateclas nos sentimos más cómodos: volviendo a la línea de comandos.
PowerCenter incluye una utilidad muy potente llamada pmcmd. Para lanzar un Workflow (la unidad de ejecución que agrupa varias sesiones o mappings) directamente desde un script .bat o un cron en Unix, usamos algo como esto:
pmcmd startworkflow -sv Integration_Service_Prod -d Domain_Prod -u admin -p password_super_secreta -f Ventas_DWH wf_Carga_Diaria_Ventas
Nota: Por favor, no pongáis las contraseñas en texto plano en los scripts de producción. Usad variables de entorno, que ya nos conocemos todos.
Lo fascinante es que cuando lanzas el comando, puedes abrir el Workflow Monitor y ver en tiempo real cómo fluyen las filas, cuántos registros por segundo se están procesando y, lo más importante, dónde salta la chispa si algo va mal. Te da una visibilidad de la que carecen nuestros antiguos scripts artesanales.
Luces y sombras de la integración visual
Por supuesto, no todo es de color de rosa. La barrera de entrada es alta, y la interfaz gráfica de los clientes de Windows es, para ser honesto, bastante tosca y propensa a colgarse si tienes muchos mappings complejos abiertos a la vez (insisto, ¡1GB de RAM empieza a ser el mínimo vital para trabajar de forma decente!). Además, versionar el código no es tan trivial como hacer copias de seguridad de ficheros de texto; aquí dependemos al cien por cien del repositorio relacional de la propia herramienta.
Sin embargo, el ahorro de tiempo en el día a día es brutal. Tareas que antes me llevaban jornadas enteras programando lógica de control, manejo de errores y limpieza de nulos en SQL, ahora las resuelvo en un par de horas conectando transformadores visuales.
Creo firmemente que el futuro de los grandes procesos de integración de datos pasa por adoptar estas plataformas empresariales. Los desarrolladores somos un recurso demasiado valioso como para estar escribiendo "parsers" de fechas a mano o reinventando la rueda con cada nueva carga de datos. Nuestro tiempo debe enfocarse en entender la lógica de negocio real, no en pelear con formatos de cadenas.
Ya os contaré cómo se comporta en unas semanas cuando le empecemos a tirar millones de registros de producción reales. Y vosotros, ¿seguís dándole al scripting duro para las cargas ETL o habéis dado el salto a estas herramientas comerciales?