Live Demo: https://dataprofiler-jgustavocn.onrender.com > Nota: Hospedado em plano gratuito (Render). Pode haver "Cold Start" de ~50s e limitações de CPU.
O DataProfiler é um motor de ingestão e análise de dados de alta performance, desenhado para processar arquivos massivos (Gigabytes) com alocação de memória constante (O(1) Space Complexity).
Diferente de analisadores comuns que carregam o arquivo inteiro na memória (como o Pandas), este projeto utiliza uma arquitetura de Streaming Pipeline em Go. Isso permite que ele rode em ambientes hostis (containers com 512MB de RAM) processando arquivos de 10GB ou mais sem risco de Out Of Memory (OOM).
O sistema foi desenvolvido com foco em Logística e Big Data, capaz de identificar padrões brasileiros (CNPJ, Placas, CEP) e inferir tipos de dados em tempo real.
O coração do sistema é um pipeline assíncrono baseado no padrão Producer-Consumer:
graph LR
A[Upload Stream] -->|"Sniffer (BOM/UTF-8)"| B(Smart Reader)
B -->|Buffer 1MB| C["CSV/JSONL Parser"]
C -->|"Channel (Backpressure)"| D{Worker Pool}
D -->|"Inferência & Stats"| E[Acumuladores]
E -->|JSON Final| F[Frontend React]
- Zero-Allocation Parsing: Uso intensivo de
sync.Poolpara reutilizar buffers de memória e reduzir a pressão no Garbage Collector (GC). - Smart Sniffing: Detecta automaticamente o formato (CSV vs JSONL), o separador (
,,;,|) e o encoding (UTF-8, UTF-16LE com BOM, Windows-1252) lendo apenas os primeiros bytes. - Concorrência Real: Desacoplamento total entre a leitura de disco (I/O Bound) e a análise estatística (CPU Bound) usando Goroutines e Channels.
- Single Binary Deployment: O Frontend (React/Vite) é compilado e embutido dentro do binário Go usando
//go:embed, facilitando a distribuição.
-
Inferência de Tipos Contextual: Distingue
Integer,Float,String,BooleaneDate. -
Detecção de Domínio (Logística/Fiscal): Identifica automaticamente padrões complexos via Regex compilada:
-
🚛 Logística: Placa de Veículo (Mercosul/Antiga), Container ID.
-
🏢 Fiscal: CNPJ, CPF, Chave de Acesso (NFe/CTe).
-
📍 Geral: CEP, Email, Telefone.
-
Estatísticas On-the-Fly: Calcula Min, Max, Média e Contagem de Nulos sem armazenar os valores.
- Feedback em Tempo Real: Barra de progresso via Server-Sent Events (SSE).
- Resiliência a "Dados Sujos": Relatório de "Dirty Lines" (linhas mal formatadas) sem interromper o processamento das linhas válidas.
- Suporte Multi-Formato: Aceita CSV e JSON Lines (.jsonl) nativamente.
- Stdlib First: Uso majoritário da biblioteca padrão (
encoding/csv,net/http,sync/atomic). - Structured Logging: Observabilidade com
log/slog. - Testing: Fuzz Testing para validação de inputs caóticos.
- Vite + SWC: Build tool de alta performance.
- Material UI (MUI): Interface corporativa focada em densidade de dados.
- Recharts: Visualização gráfica de histogramas e distribuições.
Testes realizados em ambiente controlado (Docker com limite de memória rígido):
| Cenário | Tamanho do Arquivo | Linhas | Limite de RAM | Status |
|---|---|---|---|---|
| Básico | 1.0 GB | ~12 Milhões | 512 MB | ✅ Sucesso (Pico 12MB Heap) |
| Stress Test | 10.0 GB | ~120 Milhões | 512 MB | ✅ Sucesso (Streaming constante) |
| Network | 765 MB (HTTP) | ~9.5 Milhões | 512 MB | ✅ Sucesso |
> O uso de memória permanece estável (~9MB a ~50MB) independente do tamanho do arquivo, provando a eficiência do algoritmo de streaming.
A maneira mais limpa de rodar o projeto, isolando todas as dependências.
# 1. Subir a aplicação (Backend + Frontend)
docker compose up app
# Acessar: http://localhost:8080
Requer Go 1.25+ e Node.js 20+.
# 1. Instalar dependências e ferramentas (incluindo rsrc para ícone Windows)
make setup
# 2. Rodar em modo de desenvolvimento (Hot Reload)
make run
# 3. Gerar Binário de Produção (Single Binary .exe)
make release
- Milestone 1: Core Profiling, Streaming Architecture e Docker Deploy.
- Milestone 2: Persistência de relatórios (SQLite/Postgres) e Histórico.
- Milestone 3: Comparação de Schemas (Data Drift).
- Milestone 4: Integração com APIs externas (ex: ReceitaWS para enriquecer CNPJ).
Desenvolvido por JGustavoCN.
Projeto criado como estudo de caso avançado em Engenharia de Software, Otimização de Performance e Arquitetura Cloud-Native.