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ário | Tamanho Recomendado | Justificativa |
---|---|---|
APIs com Rate Limiting | 50-100 | Evitar exceder limites |
Processamento Local | 500-1000 | Máximo de eficiência |
Envio de Emails | 100-200 | Evitar spam filters |
Sincronização | 1000-2000 | Máxima velocidade |
Arquivos Grandes | 500-1000 | Balance entre memória e velocidade |
Configuração de Delays
Tipo de Operação | Delay Recomendado | Razão |
---|---|---|
APIs Externas | 1000-5000ms | Rate limiting |
Envio de Emails | 2000-10000ms | Evitar spam |
Processamento Local | 100-500ms | Otimização |
Sincronização | 500-2000ms | Balance |
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
- Set Node - Manipulação de dados
- Aggregate Node - Agregação de dados
- HTTP Request - Requisições HTTP
- Error Handling - Tratamento de erros
- Performance Guide - Otimização de workflows