Skip to content

ESousa97/go-file-processor

Go File Processor

Processamento paralelo e resiliente de arquivos massivos com Worker Pool em Go.

Go File Processor Banner

CI Go Report Card CodeFactor Go Reference License: MIT Go Version Last Commit


O Go File Processor é uma ferramenta de linha de comando e biblioteca de alto desempenho projetada para converter arquivos CSV massivos (milhões de registros) em JSON estruturado de forma eficiente. Utilizando o padrão Worker Pool e processamento via canais (channels), garante o uso otimizado de CPU e memória constante, independentemente do tamanho do arquivo de entrada.

Demonstração

Como Biblioteca

Adicione transformadores e configure o pool de execução de forma fluida:

proc := processor.NewCSVToJSONProcessor()
config := processor.Config{WorkerCount: 8}

// Adicione transformadores (Chain of Responsibility)
config.AddTransformer(processor.EmailFilter(`@company.com$`))
config.AddTransformer(processor.FieldMasker("email"))

metrics, err := proc.Process("input.csv", "output.json", config)

Como CLI

Execute processamentos massivos com métricas em tempo real:

./fileproc -input data.csv -output data.json -workers 4

Output:

[INFO] Iniciando processamento...
[INFO] Progresso: 100000 linhas processadas
[RESUMO] EXECUÇÃO CONCLUÍDA EM 1.2s
- Total de linhas lidas: 100000
- Processadas com sucesso: 98500
- Erros/Ignoradas: 1500

Stack Tecnológico

Tecnologia Papel
Go 1.22+ Linguagem principal com concorrência nativa de alta performance
Worker Pool Gerenciamento de paralelismo e controle de carga
slog Structured logging para observabilidade e rastreabilidade
Atomic Counters Coleta de métricas de alta performance sem contenção (lock-free)
Channels Comunicação segura e desacoplada entre Producer, Workers e Consumer

Pré-requisitos

  • Go >= 1.22
  • Make (para automação de build e benchmarks)

Instalação e Uso

A partir do source

git clone https://github.com/ESousa97/go-file-processor.git
cd go-file-processor
make build

Geração de Dados e Benchmark

Para validar a performance com arquivos de 100k+ linhas:

make generate-data
make bench

Makefile Targets

Target Descrição
make build Compila o binário fileproc na raiz do projeto
make test Executa a suíte de testes unitários
make bench Roda comparativos de performance (Sequencial vs Paralelo)
make generate-data Gera arquivo de teste massivo (100.000 registros)
make clean Remove binários e arquivos temporários

Arquitetura

O projeto utiliza um modelo de streaming baseado em canais para processar dados sem carregar o arquivo inteiro na memória.

graph LR
    Input[CSV Input] --> Producer[Producer]
    Producer --> Jobs{Job Channel}
    Jobs --> W1[Worker 1]
    Jobs --> W2[Worker 2]
    Jobs --> WN[Worker N]
    W1 & W2 & WN --> Transformers[Transformation Layer]
    Transformers --> Results{Result Channel}
    Results --> Consumer[Consumer]
    Consumer --> Output[JSON Output]

    subgraph "Worker Pool"
    W1
    W2
    WN
    end
Loading

API Reference

Documentação técnica detalhada disponível em pkg.go.dev/github.com/ESousa97/go-file-processor.

Configuração (CLI Flags)

Flag Descrição Tipo Padrão
-input Caminho do arquivo CSV de entrada string input.csv
-output Caminho do arquivo JSON de saída string output.json
-workers Número de workers simultâneos int 4

Roadmap

Acompanhe as etapas de evolução do projeto:

  • Fase 1: Fundação — Implementação do Worker Pool e streaming core.
  • Fase 2: Transformação — Camada de Middleware (Chain of Responsibility).
  • Fase 3: Observabilidade — Métricas atômicas e logs estruturados (slog).
  • Fase 4: Governança — CI/CD, Documentação profissional e Badges.

Contribuindo

Interessado em colaborar? Veja nosso CONTRIBUTING.md para padrões de código e processo de PR.

Licença

Este projeto está licenciado sob a MIT License — veja o arquivo LICENSE para detalhes.

Autor

Enoque Sousa

LinkedIn GitHub Portfolio

⬆ Voltar ao topo

Feito com ❤️ por Enoque Sousa

Status do Projeto: Ativo — Em constante atualização

About

55 - High-performance, concurrent CSV to JSON processor in Go optimized for massive datasets using Worker Pools.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors