Pular para o conteúdo principal

Split In Batches

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.

O que é o Split In Batches Node?

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

Nota importante: Use este node quando tiver muitos dados para processar ou quando APIs têm limites de rate limiting.

Exemplos Práticos

Exemplo 1: Enviar Emails em Lotes

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

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)

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

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)

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ção Dinâmica

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

Boas Práticas

Escolha do Tamanho do Lote

  • Comece pequeno e aumente gradualmente
  • Monitore performance e ajuste conforme necessário
  • Considere limites de APIs externas
  • Teste com dados reais antes de produção

Configuração de Delays

  • Use delays apropriados para cada tipo de operação
  • Evite sobrecarregar sistemas externos
  • Monitore logs para identificar problemas
  • Ajuste dinamicamente baseado na resposta

Monitoramento

  • Adicione logs para cada lote processado
  • Monitore métricas de performance
  • Configure alertas para falhas
  • Mantenha histórico de processamento

Tratamento de Erros

  • Implemente retry logic para falhas temporárias
  • Log detalhado de erros para debug
  • Continue processamento mesmo com falhas
  • Notifique administradores de problemas críticos

Troubleshooting

Problemas Comuns

Lotes muito grandes causam timeout

  • Reduza o tamanho do lote
  • Aumente o delay entre lotes
  • Monitore uso de memória

APIs retornam erro 429 (Too Many Requests)

  • Diminua o tamanho do lote
  • Aumente significativamente o delay
  • Implemente backoff exponencial

Processamento muito lento

  • Aumente o tamanho do lote
  • Reduza o delay entre lotes
  • Otimize o processamento individual

Falhas em lotes específicos

  • Implemente retry logic
  • Log detalhado de erros
  • Continue processamento de outros lotes

Próximos Passos