Paralelización de carga de datos

El programa de utilidad de carga de datos se ha mejorado en HCL Commerce Versión 9.1 para permitir la paralelización. La paralelización permite que determinados trabajos de carga de datos se completen mucho más rápidamente, aumentando el número de subprocesos que se utilizan para cargar datos en la base de datos.

Importante:
  • El ajuste de rendimiento del programa de utilidad Carga de datos y sus datos es necesario para utilizar esta característica de forma eficaz. Esta característica puede reducir el rendimiento global de Carga de datos. Debe considerar detenidamente la relación entre la paralelización, su configuración, el tipo de datos y su estructura concreta.
  • La paralelización de Carga de datos solo es compatible con datos con formato CSV.

En versiones anteriores de HCL Commerce, el programa de utilidad de carga de datos era una sola aplicación con subprocesos que estaba restringida por clases sencillas que no se habían diseñado para uso paralelo. Este diseño ha limitado el uso del programa de utilidad para algunos trabajos de datos grandes, paralizando el rendimiento de la herramienta. En algunos casos, los usuarios de la herramienta pueden encontrar su capacidad para realizar el trabajo con problemas de trabajos de larga ejecución. Con esta nueva actualización al programa de utilidad de carga de datos, varios usuarios de la herramienta pueden cargar datos simultáneamente. Además, los trabajos más cortos pueden permitir que los trabajos futuros se ejecuten antes.

Arquitectura

Las mejoras arquitectónicas realizadas en el programa de utilidad de carga de datos incluyen la adición de una cola en la que el lector del archivo CSV crea lotes de datos que se procesarán. La cola tiene un tamaño máximo, que cuando se ha alcanzado detiene temporalmente el lector de la producción de lotes. Los subprocesos del lector continuarán introduciendo lotes de datos en la cola a medida que se consuman los lotes. Una vez leídos todos los datos del archivo de entrada, el supbroceso del lector colocará un lote vacío en la cola y, a continuación, saldrá con un informe de Resumen de carga de datos.

Cada subproceso del grabador eliminará un lote de la cola y procesará el lote para cargar datos en la base de datos. Cuando un subproceso del grabador obtiene un lote vacío de la cola, devolverá el lote vacío a la cola y el subproceso del grabador saldrá con un informe de resumen de carga de datos.

Hasta que finalicen y salgan todos los subprocesos del grabador, el programa de utilidad Carga de datos comprobará si hay errores en cada subproceso del grabador. Si hay archivos CSV de error de reproceso creados por los subprocesos del grabador, el programa de utilidad Carga de datos fusionará todos los archivos CSV de reproceso de errores en un archivo CSV de reproceso de error único y, a continuación, volverá a cargar este archivo CSV utilizando un único subproceso del grabador. Una vez finalizadas todos los subprocesos del grabador, el programa de utilidad Carga de datos generará un informe de resumen de carga de datos combinados.

Consideraciones sobre rendimiento y manejo de errores.

Debido a la naturaleza compleja de la carga de datos jerárquicos con varios subprocesos, el manejo de errores debe considerarse cuidadosamente al habilitar y configurar la paralelización. Esto es especialmente cierto cuando se trata del ajuste de rendimiento para su entorno y conjunto de datos concretos.

Aviso: Si los datos contienen muchos elementos de línea que hacen referencia a los mismos datos, se pueden producir interbloqueos SQL. Asegúrese de que los datos que está cargando no contengan entradas duplicadas o contradictorias y estén estructurados de una forma que evite la posibilidad de que varios subprocesos del grabador escriban en las mismas entradas SQL.
Al implementar la paralelización, tenga en cuenta lo siguiente como método recomendado:
  • Utilice los parámetros de carga de datos existentes commitCount, batchSize y maxError por LoadItem, para asegurarse de que se marca el rendimiento del programa de utilidad de carga de datos.
  • Formatee los datos para aprovechar la paralelización apropiadamente. Por ejemplo, si los datos contienen datos jerárquicos, coloque los datos principales juntos hacia el principio del archivo. Esto reducirá las posibilidades de intentar cargar datos secundarios para los que los datos principales aún no están presentes.

Parámetros configurables y valores predeterminados

De forma predeterminada, el programa de utilidad de carga de datos está establecido para ejecutarse en modo de subproceso único. Esto garantiza el mismo comportamiento y rendimiento de trabajo que esperan los usuarios. Se han añadido los siguientes parámetros nuevos para controlar la paralelización del programa de utilidad de carga de datos.

Aquí encontrará una configuración de carga de datos de ejemplo que incluye el uso completo de estos parámetros.

Parámetro Tipo de valor Valor predeterminado Descripción:
numberOfThreads Entero 1 El número máximo de subprocesos individuales del grabador que toman lotes de datos de la cola, los procesan en orden y graban los datos procesados en la base. De forma predeterminada, el parámetro numberOfThreads se establece en 1, lo que significa que el programa de utilidad de carga de datos debe ejecutarse en modalidad de subproceso único (heredada).

El número máximo de subprocesos es 8.

Desde las pruebas de rendimiento internas, HCL recomienda que el número de subprocesos sea 4. Se ha demostrado que el uso de más de cuatro subprocesos reduce el rendimiento de carga global y puede producir los siguientes errores:
com.ibm.commerce.foundation.dataload.exception.DataLoadApplicationException: A problem occurred while initializing the property information during the business object builder initialization.

Si se proporciona un número mayor que 8, se utiliza el número máximo de subprocesos.

inputDataListSize Entero 20 El número máximo de entradas de línea CSV que se incluye en un lote de datos que se va a añadir a la cola. Cada subproceso del grabador maneja un único lote de datos de la cola. Una vez que se ha cargado, se libera el subproceso para procesar otro lote de la cola. De forma predeterminada, el parámetro inputDataListSize se establece en 20.
queueSize Entero numberOfThreads El número máximo de lotes que pueden existir en la cola. Una vez que la cola se llena con el número máximo de lotes, el lector espera a que los lotes de la cola se consuman antes de continuar generando y poner en cola más lotes. De forma predeterminada, se establece en el valor de propiedad numberOfThreads.
multipleThreadsEnabled Booleano false Define si la paralelización está habilitada para el elemento de carga específico. Al establecer este parámetro en false para un LoadItem específico, se alteran temporalmente los parámetros de establecimiento de la paralelización y se fuerza el programa de utilidad de carga de datos en una operación de subproceso único.

Se establece manualmente por LoadItem, si este parámetro no se especifica se presupone su valor predeterminado de false.