Pular para o conteúdo principal
usedby

Gerenciamento idempotente de esquemas com o sqldef v4.0

O sqldef sincroniza o estado do esquema do seu banco de dados usando DDL em SQL puro, em vez de uma DSL proprietária. Ele atrai engenheiros que querem declarar um estado desejado e deixar um motor de diff cuidar da reconciliação.

O pitch

O sqldef sincroniza o estado do esquema do seu banco de dados usando DDL em SQL puro, em vez de uma DSL proprietária. Ele atrai engenheiros que querem declarar um estado desejado e deixar um motor de diff cuidar da reconciliação em MySQL, PostgreSQL, SQLite ou SQL Server (documentação oficial).

Por dentro

Takashi Kokubun, committer do Ruby Core, mantém o projeto, que chegou recentemente à versão 4.0, no fim de 2025 (GitHub). Essa versão trouxe uma mudança crucial: tornou --dry-run o modo padrão, para evitar perda acidental de dados durante a aplicação do esquema (GitHub Release #1094).

A ferramenta se integra a workflows modernos com LLMs e inclui, em particular, comandos para revisões automatizadas com o “Claude Code” (GitHub Issue #1048). Com esses recursos de revisão integrados, as equipes de desenvolvimento podem automatizar a validação dos diffs gerados dentro dos seus pipelines de CI/CD.

No entanto, o motor de diff é puramente estrutural e não lida com migrações complexas de movimentação de dados. Se você precisar preencher uma nova coluna não anulável com dados existentes antes de aplicar uma restrição, o sqldef não vai orquestrar essas etapas intermediárias (HN 2026).

Há ainda dívida técnica para usuários de PostgreSQL após a remoção, na v4, do parser alternativo libpg_query. Certas sintaxes específicas e pouco comuns do PG agora podem gerar erros de parsing se não forem suportadas pelo parser interno principal (GitHub v4-migration.md).

Ainda não sabemos se o projeto algum dia vai oferecer suporte corporativo, já que ele continua sendo mantido exclusivamente pela comunidade.

Nossa opinião

O sqldef é a escolha certa para equipes que se recusam a aprender mais uma abstração, como a DSL do Prisma ou o HCL do Atlas. Ele é confiável para a sincronização padrão de esquemas, desde que você trate manualmente o preenchimento de dados nas transições complexas. Use-o em produção para serviços padrão, mas não confie cegamente no motor de diff com instruções DROP em ambientes críticos.