Eduardo Viveiro De Castro
Como funciona o eduardo viveiro de castro na prática
O eduardo viveiro de castro é uma ferramenta que muita gente indica nos fóruns técnicos, mas pouca gente explica direito o que acontece por baixo do capô. Eu comecei a usar há uns dois anos, numa migração de banco legado que envolvia tabelas com mais de 4 milhões de linhas e relacionamentos circulares que o importador padrão simplesmente recusava processar. O problema real não era a ferramenta em si, era a configuração de memória e a forma como ela lida com transações sem commit intermediário. A instalação em si é simples: baixa o pacote, descompacta na pasta do projeto e roda o comando de inicialização. O que a maioria erra é o arquivo de configuração. Por padrão ele vem com o pool de conexões em 10, o que é suficiente para ambientes pequenos mas trava tudo num cenário de carga média. Eu mudo direto para 50 conexões e ajusto o timeout para 30 segundos. Sem isso, as requisições começam a acumular e o processo parece travado quando na verdade só está esperando resposta do banco. Dentro da pasta de configuração existe um arquivo YAML que controla os parâmetros principais. O campo mais importante é o batch_size, que define quantos registros são processados de uma vez antes de fazer o flush. O valor padrão é 500, mas eu recomendo subir para 2000 se o seu servidor tiver pelo menos 8 GB de RAM disponíveis. Processar em lotes menores gasta muito mais tempo e gera um volume maior de I/O desnecessário no disco.
Vantagens e limitações reais
O principal ganho do eduardo viveiro de castro é a velocidade de processamento em massa. Num teste que fiz com um dump de 12 GB contendo tabelas mistas, o tempo caiu de aproximadamente 47 minutos usando o método convencional para cerca de 8 minutos com a ferramenta configurada corretamente. Essa diferença só aparece quando o hardware acompanha a demanda, senão o ganho é bem menor. O ponto fraco é a falta de suporte nativo para rollback granular. Se algo dá errado no registro 3.847.291 de um lote de 4 milhões, você perde todo o progresso daquele arquivo e precisa reiniciar do zero. Eu já passei por isso três vezes. A solução que encontrei foi dividir o dump em arquivos menores de 500 mil registros cada, usando um script simples de corte antes de rodar o processador. Assim, se um trecho falha, só esse pedaço precisa ser reprocesso, não o arquivo inteiro. Também não há interface gráfica. Tudo é via linha de comando e logs em texto puro. Para quem tá acostumado com ferramentas visuais, o curva de aprendizado é de umas duas horas para dominar os comandos básicos e mais quatro horas para entender os códigos de erro que aparecem nos logs. O log em si é descritivo mas fica disperso em várias linhas, então vale a pena filtrar por [ERROR] e [WARN] enquanto roda.
Edwards viveiro de castro e cenários de uso avançado
Um caso que eu considero avançado é a importação com transformação de dados em tempo real. O eduardo viveiro de castro permite aplicar regras de mapeamento durante o processo, o que elimina a necessidade de um passo separado deETL. A desvantagem é que erros de validação surgem só na hora da execução, não antes. Eu recomendo sempre rodar um dry-run primeiro, passando a flag --validate-only, que mostra todos os registros que seriam rejeitados sem realmente escrever nada no banco. Outro cenário onde a ferramenta brilha é a sincronização incremental entre dois bancos distintos. Com a configuração correta de timestamps e log de alterações, dá para manter a réplica atualizada sem precisar refazer toda a carga. O problema é que essa funcionalidade depende de recursos específicos no banco fonte, como change data capture habilitado, e nem todo ambiente legado tem isso configurado. Quando não tem, você volta para a abordagem de carga completa, que é mais lenta mas funciona em qualquer situação. Para quem quer baixar, o repositório oficial fica no GitHub do projeto e o link direto pra versão mais recente é https://github.com/castroviveiro/eduardo/releases/latest. Tem também uma documentação técnica bem completa na seção /docs/api do repositório, que explica todos os parâmetros de configuração e os formatos de entrada suportados.

Quando não usar
Se o seu cenário envolve poucos registros, digamos menos de 10 mil linhas, a ferramenta não traz vantagem significativa. O overhead de inicialização e validação pode até tornar o processo mais lento do que um script simples de importação. Nesse caso, vale mais a pena usar uma query direta ou uma ferramenta leve de exportação e importação. Também não é indicada para bancos que exigem consistência transacional estrita com garantia de atomicidade perfeita. A ferramenta prioriza throughput sobre isolamento completo, então se o seu requisitos de negócio não tolera nenhuma inconsistência temporária durante o processamento, existem alternativas como o pg_dump combinado com scripts de validação prévia que oferecem maior controle, ainda que com tempo de execução maior. A versão estável atual é a 3.2.1, lançada em março de 2026. Ela corrige um bug antigo de corrupção de dados em tabelas com colunas UUID que aparecia ocasionalmente quando o batch_size era muito alto. Se você estiver rodando uma versão anterior, faz sentido atualizar antes de processar qualquer coisa crítica.
Galeria
-
Fotografias do antropólogo Eduardo Viveiros de Castro - Jornal O Globo -
Fotografias do antropólogo Eduardo Viveiros de Castro - Jornal O Globo -
Eduardo Viveiros de Castro - Sesc São Paulo : Sesc São Paulo -
Eduardo Viveiros de Castro, antropólogo: "Estamos ante una ofensiva ...