Ir para o conteúdo

Variável Global Versus Armazenamento Temporário

Introdução

Dois dos tipos de armazenamento temporário prontos para uso mais comuns no Harmony são Variáveis Globais e Armazenamento temporário. Existem várias considerações a serem levadas em consideração ao escolher um em vez de outro.

Variáveis globais

Variável global fontes e alvos, não deve ser confundido com scripts variáveis globais) são fáceis de codificar e reduzem a complexidade, conforme descrito posteriormente nesta página. No entanto, eles têm certas limitações.

Para um cenário em que uma integração funciona com pequenos conjuntos de dados — típicos de solicitações e respostas de serviços web ou pequenos arquivos de algumas centenas de registros — sugerimos o uso de variáveis globais.

Quando o conjunto de dados está na faixa de megabytes, o endpoint da variável global se torna mais lento que o endpoint de armazenamento temporário equivalente. Isso começa a acontecer quando os dados da variável global ultrapassam o tamanho de 4 MB.

Quando o conjunto de dados está na faixa maior de vários megabytes, existe o risco de truncamento de dados. Recomendamos um limite de 50 MB para ser conservador e evitar qualquer risco de ocorrência de truncamento.

O uso de endpoints variáveis globais em operações assíncronas é um caso de uso que requer consideração especial. Há um limite de 7 KB para o tamanho de um conjunto de dados usado em um endpoint de variável global usado em uma operação assíncrona. Neste cenário, exceder esse limite pode resultar em truncamento. Veja o RunOperation() função para obter uma descrição da chamada de 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 do armazenamento temporário pode exigir scripts adicionais. Ao usar o armazenamento temporário, você não consegue aproveitar a reutilização e a simplicidade das variáveis globais, conforme descrito posteriormente nesta página.

Observe que Agentes em Nuvem da 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 pequenos conjuntos de dados 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 origem ou destino para cada operação, é fácil usar uma variável global comum, destino e origem (descritas em vermelho no exemplo abaixo):

anexo

Para aumentar a capacidade de reutilização e a padronização, você pode criar um script reutilizável que registre 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 são necessários scripts adicionais 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 thread específico e são destruídos quando o thread é finalizado. Este não é o caso do armazenamento temporário; como resultado, requer mais manuseio para garantir a exclusividade. A prática recomendada é inicializar um GUID no início de uma cadeia de operação e, em seguida, passar esse GUID para cada um dos nomes de arquivo de armazenamento temporário na cadeia, conforme descrito em Persistência de dados para processamento posterior usando armazenamento temporário.

Ao realizar testes de unidade operação, é útil carregar dados de teste. Usar uma origem ou destino de variável global simplifica isso: você adiciona um script de pré-operação para gravar os dados de teste em um destino:

  $memory = "a,b,c";

Por outro lado, gravar dados em um arquivo de armazenamento temporário é assim:

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

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

Da mesma forma, a leitura de dados é mais simples com variáveis globais:

  myLocalVar= $memory;

Por outro lado, é assim que você lê os dados do armazenamento temporário:

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

Em resumo, usar variáveis globais para leitura, gravação e registro de entrada e saída de operação é simples, mas é preciso ter muito cuidado para garantir que os dados sejam dimensionados adequadamente.