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Ɣ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
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:
- Set Node - Para manipulação bÔsica de dados
- Aggregate Node - Para agregaƧƵes e resumos
- Code Node - Para lógica customizada
- IF Node - Para controle de fluxo
Use lotes menores (50-100) para APIs com rate limiting e lotes maiores (500-1000) para processamento local.
O tamanho ideal do lote depende do seu caso de uso. Teste diferentes tamanhos para encontrar o ótimo.
Sempre configure delays adequados para evitar exceder limites de APIs externas.
Links Ćŗteis:
- Documentação oficial do Split In Batches
- Set Node - Para manipulação de dados
- Aggregate Node - Para agregaƧƵes
- Code Node - Para lógica customizada