Optimizaciones PowerCenter: Particionamiento de datos

En entradas anteriores, hemos hablado sobre la importancia que tiene el uso de técnicas de optimización de procesos ETL (véase la entrada Workflows Concurrentes).

En esta ocasión hablaremos de la configuración de Particionamiento de Datos a nivel session, lo cual es configurado dentro del Workflow Manager. Una vez se hayan tomado en cuenta y aplicado el uso de las mejores prácticas para el diseño de procesos ETL, habrá que dar el siguiente paso: utilizar el poderío del hardware para mejorar el desempeño de los procesos.

¿Qué es el Particionamiento de datos?

Es la técnica que permite dividir una gran cantidad de datos en varios “bloques” más pequeños (subsets). Estos subconjuntos de datos podrán ejecutarse de manera paralela por un mismo proceso y así disminuir el tiempo de ejecución. Se trata de una configuración aplicada a una session task, que permite habilitar el procesamiento paralelo mediante el uso y explotación del hardware. Por defecto, al ejecutar una sesión, se crea una única partición por cada pipeline del mapping; por lo que se crea un DTM buffer caché que contiene un hilo de lectura, de transformación y de escritura. Al configurar el particionamiento, por cada bloque/partición, será creado un DTM con sus hilos correspondientes.
El DTM Buffer es un espacio de almacenamiento temporal, en el cual se encuentra información utilizada por algunas transformaciones. Este espacio se divide en bloques (blocks). Si bien existen valores por defecto para el manejo del DTM buffer, es posible configurar de manera manual para dar un mejor desempeño al proceso.

Componentes del Particionamiento de datos

Partición Subconjunto de datos que será procesado en un hilo dentro del DTM
Número de particiones Se trata del número de subconjunto de datos con el que se desea paralelizar el proceso. Al aumentar el número de particiones, se incrementa el número de hilos de procesamiento
Punto de partición Normalmente asociada a una transformación, es la manera en la que se le indica al Integration Service: “a partir de aquí, distribuirás los datos de la siguiente manera”. El flujo entre un punto de partición y otro se le conoce como Stage
Tipo de partición Método asignado para aplicar la distribución de los datos entre las particiones establecidas

Tipos de Particionamiento

La manera en la que serán distribuidos los datos a través de las particiones se define según los datos que viajen a través del flujo (pipeline). Para lo anterior, es primordial conocer la información con la que se está trabajando.

Pass-through Se pasan todos los registros de un Partition Point a otro, sin distribuir los datos entre las particiones, solo se ejecutará en un solo pipeline. A nivel Source Quilifier es útil cuando se extrae de DB, indicando con la propiedad source filter, los datos a extraer para cada partición
Round-Robin Con este método, se distribuyen los registros entre particiones de manera igualitaria. Se recomienda este tipo cuando se desea que las distintas particiones trabajen con un número similar de registros y no existe relación o necesidad de agrupación entre ellos
Database Se extrae o consulta información de fuentes de datos relacionales, previamente, dichas fuentes cuentan con un método de particionamiento configurado
Key Range Se le indica al Integration Service la llave de partición (un puerto o conjunto de puertos), con esto se distribuyen los registros basándose en los rangos definidos para cada puerto
Hash Auto-Keys El Integration Service utiliza el puerto o grupo de puertos configurados en transformaciones como: Rank, Sorter y Aggregator para distribuir los datos entre particiones y asegurar que los datos sean agrupados adecuadamente al usar estas transformaciones
Hash User-Keys Similar a la Hash Auto-Key, solo que esta ocasión, el usuario indica el puerto o grupo de puertos que definirán la llave de particionamiento

¿Cuándo usamos el Particionamiento de datos?

Se recomienda el uso de particionamiento de datos cuando se pretende dar un empuje u optimización a procesos que, ya sea por su complejidad o volumetría, tomen mucho tiempo para lograr finalizar adecuadamente. Es importante analizar previamente si un proceso realmente requiere configuración para el uso de particionamiento y no hacerlo arbitrariamente.

¿Qué ventajas ofrece el uso de Particionamiento de datos?

Dentro de las bondades que nos ofrece el uso de particionamiento, podemos destacar la disminución en tiempos de procesamiento y el máximo aprovechamiento de los recursos (hardware y software) del servidor. Como resultado de lo anterior, se puede incrementar el número de ejecuciones en una ventana de tiempo asignada; por lo que el tiempo para la entrega de resultados disminuye.

¿Cómo se configura?

La siguiente secuencia de imágenes explica de manera rápida los principales pasos a seguir para configurar el particionamiento.

  • Dentro de las propiedades de la session task, podemos encontrar el apartado que nos permite configurar el particionamiento:

  • Identificar los puntos de partición que se desean aplicar. Se recomienda un análisis del proceso previo para identificar aquellas transformaciones donde el proceso consume mayor tiempo y/o recursos.

  • Configurar los puntos de partición, estableciendo el tipo de partición a aplicar:

  • Una vez configurado, podemos verificar la distribución en hilos de datos en el Workflow Monitor:

Consideraciones para el de Particionamiento de datos:

  • No es posible crear o configurar un Partition Point en transformaciones Source o Sequence Generator
  • Es posible definir un máximo de 64 particiones en un Partition Point determinado
  • Para fuentes de datos relacionales, el Integration Service crea múltiples conexiones a DB a un misma fuente. Con ello logra extraer rangos de datos distintos para cada conexión
  • Cuidado con los filtros usados para extraer datos. Estos deberán ser excluyentes entre sí, para que la información no se repita entre particiones
  • Configuraciones como particionamiento y pushdown optimization, están disponibles en la versión Advance de Informatica Powercenter

En los siguientes enlaces, es posible encontrar mayor información sobre particionamiento dentro de la herramienta.

Referencias

   Performance Tuning: Database Partitioning   ≡   Workflow: Pipeline Partition   ≡