Saltar al contenido

Variable global versus Almacenamiento temporal en Jitterbit Design Studio

Introducción

Dos de los tipos de almacenamiento temporal más comunes y listos para usar en Harmony son Variables globales y Almacenamiento temporal. Hay varias consideraciones a tener en cuenta al elegir uno sobre el otro.

Variables globales

Las fuentes y destinos de variables globales, que no deben confundirse con las variables globales de scripting, son fáciles de codificar y reducen la complejidad, como se describe más adelante en esta página. Sin embargo, tienen ciertas limitaciones.

Para un escenario donde una integración trabaja con conjuntos de datos pequeños —típicos de solicitudes y respuestas de servicios web, o archivos pequeños de unos pocos cientos de registros— sugerimos usar variables globales.

Cuando el conjunto de datos está en el rango de megabytes, el punto final de la variable global se vuelve más lento que el punto final de almacenamiento temporal equivalente. Esto comienza a suceder cuando los datos de la variable global superan los 4 MB de tamaño.

Cuando el conjunto de datos está en el rango más grande de varios megabytes, existe un riesgo de truncamiento de datos. Recomendamos un límite de 50 MB para ser conservadores y prevenir cualquier riesgo de truncamiento.

Usar puntos finales de variables globales en operaciones asincrónicas es un caso de uso que requiere consideración especial. Hay un límite de 7 KB en el tamaño de un conjunto de datos utilizado en un punto final de variable global que se usa en una operación asincrónica. En este escenario, exceder ese límite puede resultar en truncamiento. Consulte la función RunOperation() para una descripción de cómo llamar a una operación asincrónica.

Almacenamiento Temporal

Conjuntos de datos más grandes, como los utilizados en escenarios de ETL con recuentos de registros en miles, deben manejarse utilizando almacenamiento temporal.

A diferencia de las variables globales, no hay degradación en el rendimiento ni truncamiento al usar almacenamiento temporal, incluso con conjuntos de datos muy grandes. Sin embargo, el uso de almacenamiento temporal puede requerir scripting adicional. Al utilizar almacenamiento temporal, no se puede aprovechar la reutilización y simplicidad de las variables globales, como se describe más adelante en esta página.

Tenga en cuenta que los agentes en la nube que son versión 10.10 o superior tienen un límite de tamaño de archivo de almacenamiento temporal de 50 GB por archivo. Aquellos que necesiten crear archivos temporales más grandes de 50 GB requerirán un agente privado.

Usar una variable global puede aumentar la reutilización y reducir la complejidad

Usar una variable global para conjuntos de datos pequeños puede aumentar la reutilización y reducir la complejidad. Por ejemplo, al construir operaciones encadenadas, cada operación puede tener fuentes y destinos. En lugar de construir combinaciones individuales de fuente o destino para cada operación, es fácil usar un destino y fuente global común (esbozado en el ejemplo a continuación en rojo):

attachment

Para aumentar la reutilización y estandarización, puede construir un script reutilizable que registre el contenido de la variable global (el script log.memory en el ejemplo anterior, esbozado en verde). Este enfoque también se puede lograr utilizando almacenamiento temporal, pero se necesita scripting adicional para inicializar la ruta y el nombre del archivo.

Al usar una variable global, su alcance es la cadena — el hilo — de operaciones. Por lo tanto, los valores de las variables globales son únicos para un hilo particular y se destruyen cuando el hilo ha terminado. Este no es el caso con el almacenamiento temporal; como resultado, requiere más manejo para asegurar la unicidad. La mejor práctica es inicializar un GUID al inicio de una cadena de operaciones y luego pasar ese GUID a cada uno de los nombres de archivos de almacenamiento temporal en la cadena, como se describe en Persistir datos para procesamiento posterior utilizando Almacenamiento Temporal.

Al realizar pruebas unitarias de operaciones, es útil cargar datos de prueba. Usar una variable global de origen o destino hace que esto sea simple: se agrega un script de pre-operación para escribir los datos de prueba en un destino:

  $memory = "a,b,c";

En contraste, escribir datos en un archivo de almacenamiento temporal se ve así:

  WriteFile("<TAG>Targets/Data</TAG>", "a,b,c");

  FlushFile("<TAG>Targets/Data</TAG>");

Del mismo modo, leer datos es más sencillo con variables globales:

  myLocalVar= $memory;

En contraste, así es como se leen datos del almacenamiento temporal:

  myLocalVar = ReadFile("<TAG>Sources/Data</TAG>");

En resumen, usar variables globales para leer, escribir y registrar la entrada y salida de operaciones es sencillo, pero se debe tener mucho cuidado para asegurarse de que los datos tengan el tamaño adecuado.