Optimizaciones PowerCenter: Workflows concurrentes

En mundo de los ETLs, existe un punto que tiene un gran peso durante la etapa de desarrollo de procesos, nos referimos a la optimización.

Si bien es cierto que los procesos ETL trabajan en conjunto y de manera integral con otras tecnologías como gestores de bases de datos, sistemas operativos, shell scripting, disparadores de procesos, etcétera, cada una de las plataformas para el desarrollo de ETL, cuenta con bondades que permiten aplicar mejoras de desempeño al momento de ejecución y es algo que debe ser aprovechado. Por lo anterior, para esta primera entrada de Optimizaciones PowerCenter, hablaremos de Workflows Concurrentes.

¿Qué son los workflows concurrentes?

La definición más sencilla es: «Workflows que se pueden ejecutar más de una vez al mismo tiempo (paralelismo), mediante una representación o copia del mismo (instancia)«.

¿Cuándo usamos los workflows concurrentes?

El uso dependerá principalmente del tipo y necesidades del proyecto en el que se está trabajando. Podemos establecer una serie de factores a tomar en cuenta para el uso de la concurrencia:

  • Alto número de ficheros fuente con la misma estructura, independientes entre ellos, de tal manera que sea posible la reutilización de procesos ETL para ejecución en paralelo, y con ello evitar la ejecución en serie.
  • Desarrollo de proyectos, con un elevado número de procesos similares.
  • Cuando el uso de listas indirectas para procesar archivos con las mismas estructuras no es viable.

Tipos de workflows concurrentes

Existen dos tipos de configuración al momento de trabajar con workflows concurrentes:

Mismo nombre de instancia Se habilita la ejecución de mediante una única instancia, cada instancia hará uso de los mismos sources, targets y parámetros del mapping. El Integration Service identifica a las distintas ejecuciones mediante el Workflow Run ID
Nombre de instancia único Se determina y configura el número de instancias a ejecutar. Es posible configurar el uso de archivo de parámetros, sources y targets por cada instancia agregada. Se usa este tipo de configuración cuando se conoce el número de instancias

¿Qué ventajas me ofrece el uso de workflows concurrentes?

El uso de ejecuciones concurrentes nos aporta una serie de beneficios, entre los cuales podemos destacar:

Reutilización de código Una de las tantas mejores prácticas que existen en la metodología de desarrollo de proceso ETL nos dice: “Desarrollo una vez, reutiliza muchas veces”.
Minimizar tiempos de mantenimiento a desarrollos Los cambios y mantenimientos son inevitables, principalmente en etapas tempranas de los proyectos, por lo que iniciar con este punto en mente, ayudará indudablemente a minimizar el impacto de ajustes. Gracias a los workflows concurrentes, el número de objetos a modificar, será menor.
Reduce tiempos de ejecución Definitivamente, ejecutar procesos en paralelo aporta un mejor desempeño, reduce tiempos globales de una solución ETL, elimina o minimizar dependencias y principalmente: ¡velocidad en la entrega de resultados!

Consideraciones para el uso de workflows concurrentes

Para lograr un correcto funcionamiento al momento de usar los procesos concurrentes, es necesario tomar en cuenta ciertos factores que podrían afectar, limitar o en el peor escenario, ocasionar fallos al momento de usar workflows concurrentes.

  • Usar mismas estructuras fuente y destino para los tipos de concurrencia con mismo nombre de instancia.
  • Cuidado con objetos Sequence. La concurrencia puede generar discontinuidad de valores a través de este objeto. Se recomienda utilizar otro mecanismo para enumerar registros, como el uso de valor nuevo/valor viejo mediante una transformación Sorter y un Expression.
  • Cuando la ejecución de procesos se hace mediante línea de comando (pmcmd startworkflow), se recomienda enviar como parámetro el nombre de la instancia y no generarlas de manera manual desde la configuración dentro del Workflow Manager. Con esto tenemos mayor apertura para agregar instancias en caso de recibir nuevos insumos.
  • Es muy importante no confundir el uso de workflows concurrentes con el concepto de particionamiento de datos (hilos de información), para este último, ¡tendremos otra entrada en el blog!

Ejemplo de uso

La siguiente secuencia de imágenes, muestran cómo lograr la configuración de workflows concurrentes:

  • Habilitar la opción que permite la concurrencia dentro del Workflow Manager. Seleccionar el tipo de concurrencia deseada:

  • Para ejecución vía línea de comando, se debe de pasar como parámetro adicional el nombre de la instancia que se desea ejecutar:

  • Una vez configurado, probamos efectuando dos ejecuciones en paralelo con distinta instancia:

Finalizamos esta entrada destacando que el uso de este tipo de técnicas, que mejoran el rendimiento y mantenimiento de los procesos, son altamente recomendables. Por ello, es importante conocer en detalle los diferentes métodos de ejecución concurrente y aplicar el más idóneo según los requerimientos del proyecto.