Pular para o conteĆŗdo principal

Split In Batches Node

O Split In Batches Node Ć© essencial para processar grandes volumes de dados de forma eficiente, dividindo-os em lotes menores que podem ser processados sequencialmente ou em paralelo.

Conceito Principal​

Split In Batches = "Dividir Dados em Lotes"

O Split In Batches Node Ć© uma AƇƃO que:

  • Divide grandes conjuntos de dados em lotes menores
  • Permite processamento eficiente de grandes volumes
  • Evita timeouts e problemas de memória
  • Facilita operaƧƵes em paralelo

šŸ’” Dica: Use este node quando tiver muitos dados para processar ou quando APIs tĆŖm limites de rate limiting.

ConfiguraƧƵes Principais​

1. Batch Size​

NĆŗmero de itens por lote (ex: 100, 500, 1000)

2. Options​

Wait Between Batches - Aguardar entre lotes
Batch Size - Tamanho do lote
Reset - Reiniciar contador de lotes

3. Wait Between Batches​

Delay (ms) - Tempo de espera entre lotes

Exemplos PrĆ”ticos​

Exemplo 1: Processar Lista de Emails​

Entrada (1000 emails):

[
  {"email": "joao@email.com", "nome": "João"},
  {"email": "maria@email.com", "nome": "Maria"},
  // ... 998 emails mais
]

Configuração:

Batch Size: 100
Wait Between Batches: 1000ms (1 segundo)

Resultado:

  • Lote 1: Emails 1-100
  • Lote 2: Emails 101-200
  • Lote 3: Emails 201-300
  • ...
  • Lote 10: Emails 901-1000

Exemplo 2: Enviar NotificaƧƵes em Lotes​

Workflow:

Manual Trigger → Split In Batches → HTTP Request → Email

Configuração Split In Batches:

Batch Size: 50
Wait Between Batches: 2000ms

Configuração HTTP Request (por lote):

Method: POST
URL: https://api.notificacao.com/batch
Body: {{ JSON.stringify($json) }}

Exemplo 3: Processar Produtos de E-commerce​

Entrada (5000 produtos):

[
  {"id": 1, "nome": "Produto 1", "preco": 100},
  {"id": 2, "nome": "Produto 2", "preco": 200},
  // ... 4998 produtos mais
]

Configuração:

Batch Size: 200
Wait Between Batches: 500ms

Processamento por lote:

  • Atualizar preƧos
  • Sincronizar estoque
  • Enviar para API externa

Casos de Uso Comuns​

1. Rate Limiting de APIs​

Problema: API tem limite de 100 requisições por minuto Solução: Dividir em lotes de 100 com delay de 60 segundos

// Configuração
Batch Size: 100
Wait Between Batches: 60000ms (60 segundos)

2. Processamento de Arquivos Grandes​

Problema: Arquivo CSV com 10.000 linhas Solução: Processar em lotes de 500 linhas

// Configuração
Batch Size: 500
Wait Between Batches: 1000ms

3. Envio de Emails em Massa​

Problema: Enviar 5.000 emails sem sobrecarregar servidor Solução: Enviar em lotes de 100 com delay

// Configuração
Batch Size: 100
Wait Between Batches: 5000ms (5 segundos)

4. Sincronização de Dados​

Problema: Sincronizar 20.000 registros com sistema externo Solução: Processar em lotes de 1.000

// Configuração
Batch Size: 1000
Wait Between Batches: 2000ms

ConfiguraƧƵes AvanƧadas​

Wait Between Batches​

Delay Fixo:

Wait Between Batches: 1000ms

Delay Dinâmico (usando expressão):

Wait Between Batches: {{ $json.batch_number * 1000 }}ms

Delay Baseado em Rate Limiting:

Wait Between Batches: {{ Math.ceil(60000 / 100) }}ms  // 100 req/min

Batch Size DinĆ¢mico​

Baseado no tipo de dados:

Batch Size: {{ $json.tipo === 'email' ? 100 : 500 }}

Baseado na API:

Batch Size: {{ $json.api_limit || 100 }}

Baseado na performance:

Batch Size: {{ $json.performance === 'high' ? 1000 : 100 }}

Otimização de Performance​

Escolhendo o Tamanho do Lote​

CenƔrioTamanho RecomendadoJustificativa
APIs com Rate Limiting50-100Evitar exceder limites
Processamento Local500-1000MÔximo de eficiência
Envio de Emails100-200Evitar spam filters
Sincronização1000-2000MÔxima velocidade
Arquivos Grandes500-1000Balance entre memória e velocidade

Configuração de Delays​

Tipo de OperaçãoDelay RecomendadoRazão
APIs Externas1000-5000msRate limiting
Envio de Emails2000-10000msEvitar spam
Processamento Local100-500msOtimização
Sincronização500-2000msBalance

Monitoramento de Performance​

// Adicionar mƩtricas ao lote
{
  "batch_number": 1,
  "batch_size": 100,
  "total_items": 1000,
  "processed_items": 100,
  "start_time": "2024-01-15T10:00:00Z",
  "estimated_completion": "2024-01-15T10:10:00Z"
}

Tratamento de Erros​

Erro em um Lote​

Configuração de Retry:

Max Tries: 3
Wait Between Tries: 5000ms

Tratamento de Erro:

// No node seguinte, verificar se houve erro
if ($json.error) {
  // Log do erro
  console.log('Erro no lote:', $json.batch_number, $json.error);
  
  // Continuar processamento
  return { json: { ...$json, status: 'error_handled' } };
}

Recuperação de Falhas​

Workflow com Error Handling:

Split In Batches → HTTP Request → Error Trigger → Log Error → Continue

Configuração Error Trigger:

Continue on Fail: true

Exemplos de Workflows​

Workflow 1: Envio de Newsletter​

Manual Trigger → Split In Batches (100) → Email Node → Wait (2s) → Continue

ConfiguraƧƵes:

  • Split In Batches: 100 emails por lote
  • Wait: 2 segundos entre lotes
  • Email Node: Template personalizado

Workflow 2: Sincronização de Produtos​

Schedule Trigger → HTTP Request (buscar produtos) → Split In Batches (500) → HTTP Request (atualizar) → Wait (1s) → Continue

ConfiguraƧƵes:

  • Split In Batches: 500 produtos por lote
  • Wait: 1 segundo entre lotes
  • HTTP Request: API de atualização

Workflow 3: Processamento de Arquivos​

Webhook (upload arquivo) → CSV Parser → Split In Batches (1000) → Process Data → Wait (500ms) → Continue

ConfiguraƧƵes:

  • Split In Batches: 1000 linhas por lote
  • Wait: 500ms entre lotes
  • Process Data: Transformação de dados

LimitaƧƵes e ConsideraƧƵes​

LimitaƧƵes TĆ©cnicas​

  • Memória: Cada lote Ć© mantido em memória
  • Timeout: Workflows tĆŖm timeout total
  • Rate Limiting: APIs externas podem ter limites
  • ConcorrĆŖncia: Processamento sequencial por padrĆ£o

ConsideraƧƵes de Design​

  • Tamanho do lote: Balance entre performance e memória
  • Delays: Evitar sobrecarregar sistemas externos
  • Error handling: Tratar falhas em lotes individuais
  • Monitoramento: Acompanhar progresso dos lotes

Boas PrĆ”ticas​

// āœ… Bom: Tamanho de lote apropriado
Batch Size: 100  // Para APIs com rate limiting

// āœ… Bom: Delay adequado
Wait Between Batches: 2000ms  // 2 segundos

// āŒ Evitar: Lotes muito grandes
Batch Size: 10000  // Pode causar timeout

// āŒ Evitar: Sem delay
Wait Between Batches: 0ms  // Pode sobrecarregar API

Próximos Passos​

Agora que vocĆŖ entende o Split In Batches Node:

  1. Set Node - Para manipulação bÔsica de dados
  2. Aggregate Node - Para agregaƧƵes e resumos
  3. Code Node - Para lógica customizada
  4. IF Node - Para controle de fluxo

Dica Pro

Use lotes menores (50-100) para APIs com rate limiting e lotes maiores (500-1000) para processamento local.

Performance

O tamanho ideal do lote depende do seu caso de uso. Teste diferentes tamanhos para encontrar o ótimo.

Rate Limiting

Sempre configure delays adequados para evitar exceder limites de APIs externas.


Links Ćŗteis: