Oficina · Nota técnica #03 · projeto pessoal
IdempotentBase
O script de banco que pode rodar duas vezes
Uma ferramenta desktop que compara schemas DEV × PROD, classifica cada diferença por risco e gera um script SQL idempotente. O que é destrutivo fica bloqueado por padrão, e nada é dropado em silêncio.
O script que pode rodar duas vezes
“O script rodou duas vezes. Agora a tabela não existe mais.” Subir alteração de banco para produção é o momento mais arriscado do deploy. Script feito à mão dropa a coluna errada, quebra quando roda de novo ou trava a base no horário de pico.
O IdempotentBase é uma ferramenta desktop para DBAs e DevOps que compara os ambientes, classifica cada diferença por risco e gera um script que pode rodar quantas vezes for preciso, sempre com o mesmo resultado.
Reconcile: DEV × PROD
O módulo central compara o schema de DEV com o de PROD. DEV é a fonte da verdade. Cada diferença encontrada recebe uma de quatro classificações:
SAFE_AUTOseguro para aplicarREVIEW_REQUIREDprecisa de revisãoDESTRUCTIVE_BLOCKEDdestrutivo, bloqueadoINFO_ONLYsó informativo
A partir daí, a ferramenta gera um script SQL idempotente. Aplicar em produção exige confirmação obrigatória.
Modelo de segurança
O modelo de segurança é explícito. Ele cabe em três linhas:
- Sem drops silenciosos
- Sem shrink automático
- Destrutivo é bloqueado por padrão
Backup, Migrate e Load Test
Backup
Usa o BACKUP DATABASE nativo do SQL Server.
Migrate
Leva schema e dados entre MySQL, PostgreSQL e SQL Server, com DDL e INSERT em lotes.
Load Test
Carga em sandbox: bulk insert, usuários concorrentes no banco e API HTTP. Exporta para k6, JMeter e Gatling.
O export do Load Test é a parte de que eu mais gosto: o teste sai da ferramenta e entra no seu pipeline, em vez de ficar preso num formato próprio.
Bancos suportados
- SQL Server
- PostgreSQL
- MySQL
- MariaDB
- Oracle
O Oracle aparece em vários fluxos. SQLite e MongoDB têm suporte parcial.
Código aberto e binário pronto
O projeto existe em duas formas:
Código-fonte
No GitHub, sob licença MIT, com testes por snapshot em memória e README em inglês e português.
Distribuição binária
O pacote pronto para baixar e rodar, sem compilar: o executável, as DLLs de produto e arquivos de exemplo de conexão para cada provider.
As DLLs da distribuição são separadas por responsabilidade: Core, Migration, Reporting e uma por banco (SqlServer, PostgreSQL, MySql, Oracle, Sqlite e MongoDB). Para rodar, basta Windows 10 ou superior com o .NET Framework 4.8.
Ficha técnica
- .NET Framework 4.8
- WPF
- Dapper
- Npgsql
- MySqlConnector
- Oracle.ManagedDataAccess
- Microsoft.Data.Sqlite
- Serilog
- Versão
- v1.1.0: workflow de Load Test, MariaDB e export para k6, JMeter e Gatling
- Licença
- MIT
- Requisitos
- Windows 10+ e .NET Framework 4.8
- Público
- DBAs, DevOps e squads com deploy frequente de schema
Trabalha com deploy de banco e quer trocar ideia sobre scripts idempotentes? Me escreva.
Me escreva