Variável Global versus Armazenamento Temporário no Jitterbit Design Studio
Introdução
Dois dos tipos de armazenamento temporário mais comuns prontos para uso no Harmony são Variáveis Globais e Armazenamento Temporário. Existem várias considerações a serem levadas em conta ao escolher um em vez do outro.
Variáveis Globais
As fontes e alvos de variáveis globais, que não devem ser confundidas com variáveis globais de script, são fáceis de codificar e reduzem a complexidade, conforme descrito mais adiante nesta página. No entanto, elas têm certas limitações.
Para um cenário em que uma integração está lidando com pequenos conjuntos de dados — típicos de solicitações e respostas de serviços web, ou pequenos arquivos com algumas centenas de registros — sugerimos o uso de variáveis globais.
Quando o conjunto de dados está na faixa de megabytes, o ponto de extremidade da variável global se torna mais lento do que o ponto de extremidade equivalente de armazenamento temporário. Isso começa a acontecer quando os dados da variável global ultrapassam 4 MB de tamanho.
Quando o conjunto de dados está na faixa maior de vários megabytes, há um risco de truncamento de dados. Recomendamos um limite de 50 MB para ser conservador e prevenir qualquer risco de truncamento.
Usar pontos de extremidade de variáveis globais em operações assíncronas é um caso de uso que requer consideração especial. Há um limite de 7 KB no tamanho de um conjunto de dados usado em um ponto de extremidade de variável global que é utilizado em uma operação assíncrona. Nesse cenário, exceder esse limite pode resultar em truncamento. Consulte a função RunOperation() para uma descrição de como chamar uma operação assíncrona.
Armazenamento Temporário
Conjuntos de dados maiores, como aqueles usados em cenários de ETL com contagens de registros na casa dos milhares, devem ser tratados usando armazenamento temporário.
Ao contrário das variáveis globais, não há degradação no desempenho ou truncamento ao usar armazenamento temporário, mesmo com conjuntos de dados muito grandes. No entanto, o uso de armazenamento temporário pode exigir scripts adicionais. Ao usar armazenamento temporário, você não consegue aproveitar a reutilização e a simplicidade das variáveis globais, conforme descrito mais adiante nesta página.
Observe que agentes em nuvem que estão na versão 10.10 ou superior têm um limite de tamanho de arquivo de armazenamento temporário de 50 GB por arquivo. Aqueles que precisam criar arquivos temporários maiores que 50 GB precisarão de um agente privado.
Usar uma variável global pode aumentar a reutilização e reduzir a complexidade
Usar uma variável global para conjuntos de dados pequenos pode aumentar a reutilização e reduzir a complexidade. Por exemplo, ao construir operações encadeadas, cada operação pode ter fontes e alvos. Em vez de construir combinações individuais de fonte ou alvo para cada operação, é fácil usar um alvo e uma fonte globais comuns (destacados no exemplo abaixo em vermelho):

Para aumentar a reutilização e a padronização, você pode construir um script reutilizável que registra o conteúdo da variável global (o script log.memory no exemplo acima, destacado em verde). Essa abordagem também pode ser realizada usando armazenamento temporário, mas scripts adicionais são necessários para inicializar o caminho e o nome do arquivo.
Ao usar uma variável global, seu escopo é a cadeia — o thread — de operações. Assim, os valores das variáveis globais são exclusivos para um determinado thread e são destruídos quando o thread é finalizado. Este não é o caso com o armazenamento temporário; como resultado, requer mais manuseio para garantir a exclusividade. A melhor prática é inicializar um GUID no início de uma cadeia de operações e, em seguida, passar esse GUID para cada um dos nomes de arquivos de armazenamento temporário na cadeia, conforme descrito em Persistindo dados para processamento posterior usando Armazenamento Temporário.
Ao realizar testes de unidade de operação, é útil carregar dados de teste. Usar uma variável global de origem ou destino torna isso simples: você adiciona um script de pré-operação para escrever os dados de teste em um destino:
$memory = "a,b,c";
Em contraste, escrever dados em um arquivo de armazenamento temporário se parece com isto:
WriteFile("<TAG>Targets/Data</TAG>", "a,b,c");
FlushFile("<TAG>Targets/Data</TAG>");
Da mesma forma, ler dados é mais simples com variáveis globais:
myLocalVar= $memory;
Em contraste, é assim que você lê dados do armazenamento temporário:
myLocalVar = ReadFile("<TAG>Sources/Data</TAG>");
Em resumo, usar variáveis globais para ler, escrever e registrar a entrada e saída da operação é direto, mas é necessário ter grande cautela para garantir que os dados estejam adequadamente dimensionados.