1

Pitch: pg_laswell - um MCP para executar migrations no seu banco de dados

🚨 AVISO: NÃO UTILIZE EM PRODUÇÃO! ESTA É ESTRITAMENTE UMA PROVA DE CONCEITO EXPERIMENTAL PARA DISCUSSÃO TÉCNICA. 🚨

Todos nós já passamos por isso: um script de migração de banco de dados que funcionou perfeitamente em ambiente de homologação (staging) de repente causa um enorme acúmulo de bloqueios ou uma interrupção temporária em produção.

A dura verdade? A segurança de uma alteração é uma propriedade da tabela, não da instrução SQL em si.

Executar um CREATE INDEX é instantâneo em uma tabela vazia, mas um desastre completo em uma tabela com um bilhão de linhas. As migrações tradicionais simplesmente não conseguem se adaptar ao estado real, ao tamanho ou à contenção do banco de dados em produção com o qual lidam.

É por isso que estou compartilhando o pg_laswell, uma ferramenta de migração inteligente criada especificamente para o PostgreSQL (validada no PostgreSQL 18; alguns aspectos ainda precisam de ajustes para versões mais antigas). Ele foi projetado para ser operado com segurança tanto por engenheiros humanos quanto por agentes de IA.

O que torna o pg_laswell "inteligente"?

Ao contrário das ferramentas tradicionais, o pg_laswell mede antes de agir e se adapta em tempo real:

→ Medições em Tempo Real no Banco de Dados: Ele lê o catálogo ativo, tamanhos de tabela, orçamento de conexões e o estado de bloqueios para derivar dinamicamente um plano seguro e determinístico.
→ Ritmo Baseado em Bloqueios: O ritmo de execução não se baseia em uma contagem arbitrária de linhas. Ele realiza o commit quando surge uma espera por bloqueio (lock waiter), mantendo um limite de linhas apenas como salvaguarda contra larguras de linha extremas (patológicas).
→ Especificações Assinadas Criptograficamente: As especificações de migração são assinadas com Ed25519, tendo a raiz de confiança no próprio banco de dados. Isso responde à pergunta: "esta alteração específica veio de alguém em quem confiamos?" (A permissão real para execução permanece sob responsabilidade dos comandos GRANT padrão do banco de dados).
→ Recuperação Inteligente e Convergência Precisa: Uma tarefa interrompida é retomada com segurança a partir do cursor confirmado (committed cursor), e um cursor desatualizado é revalidado em vez de ser aceito cegamente. Embora rejeite explicitamente a comparação de diferenças (diffing) de esquemas inteiros, ele converge de forma inteligente em pontos específicos — como reconhecer e renomear um índice existente criado manualmente ou sinalizar especificações alteradas após a aplicação.
→ Nativo para Agentes de IA (MCP): Ele opera como um servidor do protocolo MCP (Model Context Protocol). Agentes de IA podem iniciar migrações, verificar o progresso e monitorar a contenção em tempo real.

O pg_laswell deriva e executa cada instrução. O agente fornece a intenção, nunca o SQL — com exceção de predicados e expressões, que fazem parte da especificação assinada e são revisados como tal.

Prova de conceito local (Sério, não use em produção!)

Estou testando um conceito, não estou mudando o mundo. Ainda.

Embora seja estritamente um experimento, foi desenvolvido com rigor: 355 testes passando em dois compiladores com ASan/UBSan, TSan e Valgrind, abrangendo todos os 84 tipos de intenção planejados e aplicados a uma instância real do PostgreSQL. Sob intensa contenção da aplicação em uma tabela de 300.000 linhas, o pg_laswell executou 48 de 63 commits em processos que aguardavam bloqueios ativos, concluindo a operação no mesmo tempo decorrido de uma execução sem contenção e limitando totalmente os impactos negativos ao banco de dados.

Procurei abranger todos os objetos do banco de dados; ainda preciso construir um banco de dados completo utilizando essa ferramenta.

Eu fiz esse mesmo post no meu linkedin, mas lá é difícil conseguir uma discussão técnica, então estou buscando aqui no tabnews uma chance pra apanhar, afinal, estou querendo colocar um agente bem próximo do banco de dados.

O fato é que o mundo das migrations anda meio triste, sem muitas novidades. Quem sabe eu boto fogo no parquinho.

Carregando publicação patrocinada...