Pitch: Como gerenciar a estrutura de um banco de dados, utilizando migrations, sem um ORM?
Já pensou em criar um projeto que utilize um banco de dados, mas não gostaria de usar um ORM? Gosta de usar SQL puro em seus projetos, e ter total controle das queries? Busca uma forma de reduzir custos com pipelines?
Ao decidir quais tecnologias utilizar em nossos projetos, a interação com o banco de dados pode ser um fator decisivo. Alguns frameworks podem ser mais ou menos otimizados e podem ou não ter os recursos que precisamos. Independentemente do ORM que escolhemos, o SQL está por trás dos panos. Portanto, pode ser mais vantajoso utilizar SQL puro em vez de ficar vinculado a tecnologias específicas. Se você usar, por exemplo, o ORM do Rails, precisará aprender o do Django se mudar. Seria melhor se pudesse aproveitar 100% do seu conhecimento entre as tecnologias por meio do SQL.
ORMs em geral também não geram queries tão otimizadas quanto poderiam se fossem criadas manualmente. Além disso, há coisas que podem ser feitas com SQL puro que são complicadas com ORMs. Eles geralmente são escritos em linguagens mais lentas, como Python, Ruby, PHP, o que aumenta o tempo de execução nas migrations, pois precisam instalar muitas dependências, tornando a execução mais lenta. Isso aumenta significativamente os custos de execução de migrations dentro de pipelines.
No entanto, usar SQL puro é um desafio quando se trata de migrações para estruturar tabelas, pois essas migrations geralmente estão inseridas dentro desses frameworks. Agora temos uma solução para esses problemas: o Migrator, uma ferramenta para gerenciar migrações de banco de dados feita em Golang, tornando-a extremamente rápida. Sua curva de aprendizado é suave, reforçando seu controle e conhecimento em SQL.
O Migrator é rápido, leve, otimizado para containers e está em constante evolução. Permite que a estrutura do banco de dados seja gerenciada independentemente da linguagem ou framework utilizado.
Acesse o repositório do Migrator para saber como utilizá-lo.
Exemplo de implementação:
Você pode acompanhar o projeto e futuras implementações na seção de gerenciamento de projetos dele.