Transformações de Fluxo e Lote¶
Jitterbit suporta estes métodos para processar uma transformação:
Streaming e transformações em lote são os métodos preferidos para usar quando a quantidade de memória que uma transformação Jitterbit usa precisa ser limitada. Nos casos em que você não consegue usar uma transformação de streaming ou em lote, a fragmentação de dados pode ser aplicável conforme descrito abaixo.
Nota
Do ponto de vista de uma transformação, uma resposta/solicitação de serviço da Web SOAP corresponde a uma origem/destino XML ao considerar essas limitações de processamento.
Transmissão de Transformação¶
Uma transformação streaming carrega um registro por vez na memória, executa a transformação do registro e grava o destino no disco. Isso minimiza a quantidade de memória usada durante a transformação para o que é necessário para transformar um registro.
O streaming é aplicado automaticamente a transformações em que a origem e o destino são estruturas planas (por exemplo, uma única tabela de banco de dados ou um único arquivo CSV) e estes requisitos são atendidos:
-
A transmissão não foi explicitamente desativada pela configuração
AutoStreaming=0
nojitterbit.conf
arquivo. -
A transmissão não foi explicitamente desativada ao definir a variável Jitterbit
$jitterbit.transformation.auto_streaming
para0
oufalse
. -
Nenhuma função de resolução de instância é usada, como
FindByPos
,FindValue
, ouSum
. -
Estas funções de dicionário e array não estão presentes:
GetSourceInstanceMap
,GetSourceAttrNames
,GetSourceElementNames
,GetSourceInstanceElementMap
,GetSourceInstanceArray
,GetSourceInstanceElementArray
. -
A função XML
GetXmlString
não está presente. -
Não há vários mapeamentos no alvo.
-
A transformação não tem uma condição definido no alvo.
Nenhuma outra ação é necessária; o streaming será usado automaticamente pela transformação quando for processado.
Exemplo
As Transformações que usam streaming automaticamente incluem estas estruturas de dados:
- CSV para CSV
- Mesa individual para mesa individual
- Tabela única para CSV
- CSV para tabela única
Transformação em Lote¶
Com transformações que não atendem aos critérios de streaming, toda a fonte é lida na memória e a transformação é executada na memória. Esse método geralmente é o mais eficiente em termos de tempo, mas pode levar a erros de falta de memória se a fonte for muito grande. Nesses casos, uma transformação em lote ou fragmentação de dados deve ser usado.
Uma transformação em lote é semelhante a uma transformação de streaming, mas processa vários registros de origem por vez (os batches) e tem menos limitações que o streaming. Ele pode ser usado nos casos em que o streaming não é usado automaticamente e é aplicável para fontes hierárquicas (por exemplo, para várias tabelas de banco de dados com um ou mais relacionamentos pai-filho ou para formatos de arquivo hierárquicos.
Para ativar uma transformação em lote, clique com o botão direito do mouse no nó de origem que se tornará o nó de origem em lote e, no menu exibido, selecione Definir transformação em lote .
Na caixa de diálogo exibida, insira o tamanho máximo do lote. Este é o número de registros que devem ser lidos na memória em cada lote. Escolher um tamanho de lote muito pequeno retardará a transformação. No entanto, todos os dados de origem e destino de um lote devem caber na memória disponível.
Exemplo
As transformações em lote podem ser usadas nesses casos em que a fonte é muito grande:
- Banco de dados hierárquico para CSV ou uma única tabela
- Banco de dados hierárquico para texto/banco de dados hierárquico
- Texto hierárquico para CSV ou uma única tabela
- Texto hierárquico para texto/banco de dados hierárquico
Fragmentação¶
Em uma situação em que uma transformação de streaming ou lote não é aplicável ou possível, você pode usar chunking para fazer com que a transformação exija menos memória. Para origens e destinos XML muito grandes, a fragmentação de dados pode ser a única opção. (Se o uso de memória não for um problema, uma transformação em streaming ou em lote é sempre a escolha preferida.) Para obter mais informações, consulte Chunking.