Saltar al contenido

Fragmentación

Introducción

La función de "fragmentación de datos" multiuso de Jitterbit divide los datos de origen en múltiples fragmentos según el tamaño del fragmento configurado. La configuración de tamaño de fragmento utilizada es la cantidad de registros de origen (nodos) por fragmento. Luego, la transformación se realiza en cada fragmento por separado, y cada fragmento de origen produce un fragmento de destino. Los fragmentos de objetivo resultantes se combinan para producir el objetivo final.

Tenga en cuenta que las fuentes LDAP no se pueden fragmentar y no se puede utilizar la fragmentación de datos a menos que los registros sean independientes.

Advertencia

El uso de fragmentación de datos afecta el comportamiento de las variables globales y del proyecto. Consulte la sección de Consideraciones a continuación para obtener más detalles.

Ventajas de la Fragmentación

Limitaciones de la API

Muchas APIs de servicios web (SOAP/REST) tienen limitaciones de tamaño. Por ejemplo, un Salesforce.com Upsert sólo acepta 200 registros por llamada. En tal caso, configuraría una operación para usar un tamaño de fragmento de 200. La fuente se dividirá en fragmentos de 200 registros y cada transformación llama al servicio web una vez con los 200 registros. Esto se repite hasta que se hayan procesado todos los registros. (Tenga en cuenta que Salesforce tiene una inserción masiva, que Jitterbit admite con su asistente de proceso masivo, para evitar el uso de fragmentación de datos.)

En el caso de una operación de escritura en un archivo de destino mediante fragmentación de datos, los archivos de destino resultantes se combinan en un solo archivo.

Procesamiento en Paralelo

Si tiene una fuente grande y una computadora con varias CPU, se puede utilizar la fragmentación de datos para dividir la fuente para el procesamiento en paralelo. Dado que cada fragmento se procesa de forma aislada, puede utilizar esta opción para procesar varios fragmentos en paralelo. Esto solo se aplica si los registros de origen no dependen entre sí en el nivel del nodo del fragmento. Los servicios web se pueden llamar en paralelo mediante fragmentación de datos, lo que mejora el rendimiento. Sin embargo, existen consideraciones, como se describe a continuación en Consideraciones al fragmentar.

Limitar el Uso de la Memoria

En los casos en que no se pueda utilizar la transformación por streaming/ lote, puede utilizar la fragmentación de datos para que la transformación utilice menos memoria. Para obtener más información sobre la transmisión y la transformación lote, consulte Transformaciones de transmisión y por lotes. Se prefiere la transformación por streaming/ lote cuando el único problema es el uso de la memoria. En ese caso, utilice un tamaño de fragmento lo más grande posible, asegurándose de que los datos de cada fragmento encajen bien dentro de la RAM disponible.

Consideraciones al Fragmentar

Como la fragmentación de datos puede invocar subprocesos múltiples (si se configura para usar más de un subproceso), su uso puede afectar el comportamiento de las variables que no se comparten entre los subprocesos.

Las variables globales y del proyecto están segregadas entre las instancias de fragmentación de datos y, aunque los datos se combinan, los cambios en estas variables no. Sólo los cambios realizados en el hilo inicial se conservan al final de la transformación.

Por ejemplo: si una operación(con fragmentación de datos y múltiples subprocesos) tiene una transformación que cambia una variable global, el valor de la variable global después de que finalice la operación será el del primer subproceso. Cualquier cambio en la variable en otros subprocesos es independiente y se descarta cuando se completa la operación.

Estas variables globales se pasan a los otros subprocesos por valor en lugar de por referencia, asegurando que cualquier cambio en las variables no se refleje en otros subprocesos u operaciones. Esto es similar al RunOperation() funciona cuando está en modo asíncrono.

Habilitar Fragmentación

Como la fragmentación de datos se configura para una operación completa, puede usar la misma transformación en modo fragmentado o no fragmentado, dependiendo de la operación en la que se use.

Para habilitar la fragmentación de datos:

  • Crear una operación y asignarle una transformación.

  • Haga clic derecho en la operación y seleccione Opciones…

  • Marque la casilla Habilitar fragmentación e ingrese el tamaño del fragmento.

  • El tamaño de su fragmento depende de su caso de uso, como se describe anteriormente en Ventajas de la fragmentación.

  • Ingrese el Número de registros por archivo. 0 significa que todos los registros estarán en un solo archivo.

  • Ingrese un valor mayor que 1 en el campo Número máximo de subprocesos para habilitar el procesamiento paralelo. (Consulte las Consideraciones al fragmentar anteriores para conocer las consecuencias del uso de must-threading.)

  • Origen y Destino fragmento nodo:

    • Para fuentes planas (y destinos), no es necesario especificar un nodo de fragmento; se mostrará como "-flat-".

    • Para fuentes jerárquicas, debe especificar un nodo de fragmento de fuente.

    • Para objetivos jerárquicos, debe especificar un nodo de fragmento de destino.

    • Haga clic en el botón Seleccionar… para buscar un nodo de fragmento adecuado. El nodo del fragmento es el registro repetido (o nodo de bucle) en el que desea basar el tamaño del fragmento.

    • Si no especifica nada, el valor predeterminado es utilizar el nodo repetido más alto.

Opciones Avanzadas

  • Si el destino es una base de datos, los datos de destino se escribirán primero en varios archivos (uno por fragmento). Estos archivos luego se combinarán en un archivo de destino que se enviará a la base de datos para su inserción/actualización.

  • Si configura el elemento de datos global jitterbit.target.db.commit_chunks a 1 (o true), cada fragmento se enviará a la base de datos a medida que esté disponible. Esto puede mejorar significativamente el rendimiento si el procesamiento paralelo está habilitado, ya que la inserción/actualización de la base de datos se realizará en paralelo.