Documentação Técnica
O BP-Insight é uma ferramenta de engenharia de software desenvolvida para analisar, visualizar e auditar esquemas de banco de dados SQL. Diferente de ferramentas low-code, todo o motor de processamento foi construído com JavaScript Vanilla e PHP 8, focando em performance e privacidade (Client-side processing).
1. Arquitetura do Sistema
O projeto segue um padrão MVC Simplificado sem frameworks pesados. A estrutura de diretórios foi desenhada para separar claramente a lógica de negócios da interface.
/public_html
├── /app # Views e Controllers (Lógica de Autenticação e Dashboard)
├── /assets # Core Engine (Parser JS, Canvas Logic)
├── /config # Conexão segura com Banco de Dados (Singleton)
└── /libs # Bibliotecas auxiliares
2. O Motor de Parsing (Regex Engine)
O coração do sistema é o parser.js. Em vez de enviar o código SQL para o servidor (o que seria lento e inseguro), o processamento ocorre no navegador do usuário usando Expressões Regulares avançadas.
Como identificamos tabelas:
Utilizamos um padrão de captura não-guloso para isolar blocos CREATE TABLE e extrair definições de colunas.
// assets/js/parser.js
const tableRegex = /CREATE\s+TABLE\s+(?:IF\s+NOT\s+EXISTS\s+)?[`"]?(\w+)[`"]?\s*\(([\s\S]*?)\);/gim;
while ((match = tableRegex.exec(cleanSQL)) !== null) {
const tableName = match[1]; // Captura o nome (ex: "users")
const content = match[2]; // Captura o corpo (colunas)
// Processa as colunas recursivamente...
}
3. Algoritmo de Auditoria (Security-First)
O módulo auditor.js aplica regras de conformidade (LGPD/GDPR) e boas práticas de segurança em tempo real. Ele varre os metadados das colunas em busca de padrões de risco.
Exemplo de Regra (Detecção de Senhas Fracas):
// assets/js/auditor.js
// Dicionário de padrões sensíveis
const rules = {
auth: /^(password|senha|secret|token|hash)$/i,
pii: /^(cpf|rg|passport|email)$/i
};
// Verifica tamanho do campo de senha
if (rules.auth.test(colName)) {
// Se for VARCHAR(50) ou menos, alerta risco de hash fraco (MD5)
if (colSize < 60) {
report.alerts.push({
level: 'critical',
msg: 'Coluna de senha muito curta. Use VARCHAR(255) para suportar Argon2/Bcrypt.'
});
}
}
4. Calculadora de Volumetria
Para estimar custos de infraestrutura (AWS RDS/Azure SQL), o sistema calcula o Row Size (tamanho da linha) somando os bytes primitivos de cada tipo de dado.
- INT: 4 bytes
- DATETIME: 8 bytes
- VARCHAR(N): N * média de uso (60%) + overhead