Executando verificação de segurança...
5

Vamos falar sobre migrations

Fala pessoal, estou trabalhando num projeto pessoal avaliando algumas formas de migration que tenham um suporte pra longo prazo e sejam um pouco mais automatizada (Não sei realmente por que isso faz tanta diferença pra mim, mas me interessei pelo assunto). Queria saber como voces constumam fazer na linguagem preferida (ou a do trabalho mesmo) de voces.

Carregando publicação patrocinada...
3

Eu uso a migration do Laravel e, basicamente, é ótimo. Atende a necessidade, não tenho do que reclamar. Com os comandos do Artisan no terminal, automatizo a criação, migração, rollback, refresh e tudo mais.

As migrations são nomeadas com data e hora da criação + nome genérico criado automaticamente ou customizado por mim.

Ex.: 2024_07_15_000006_create_users_table.php ou até 2024_11_01_124042_create_optional_vehicle_pivot_table.php

Comandos:
migrate:fresh Drop all tables and re-run all migrations
migrate:install Create the migration repository
migrate:refresh Reset and re-run all migrations
migrate:reset Rollback all database migrations
migrate:rollback Rollback the last database migration
migrate:status Show the status of each migration

2

Infelizmente não consigo te ajudar muito com isso, no meu trabalho usamos a migration do EF Core no .NET C#, e assim ele é bom, mas não sei se é problema com o nosso projeto, mas é ridículo quando faço o update da migration ela no pico consume 19gb de RAM macho claro que tem mais 1000 migrations, e além disso os arquivos gerados pela migration são gigantescos!!!

Pra ser sinsero não entendo muito como funciona a arquitetura de uma ferramenta de migration, mas estou construindo um PDV para um cliente, e como é um sistema local simples eu construí um código besta em C# que faz a migration em tempo de execução, infelizmente é de código fechado e não posso te passar o repositório, mas posso mostrar um exemplo.

Imgur
Fica assim no banco de dados.

Em tempo de execução verifico se um dos métodos existe na tabela (se não executo), obviamente ele não é tão seguro quanto uma ferramenta de migration real, mas resolve o meu problema simples e sem precisar de uma camada pesada em um app de aproximadamente 30mb.


Caso queira acompanhar um projeto legal, pode acompanhar o Dicionário do bebê.

2
1

Dá uma chance pra esse recurso, pensa no seguinte, não é trabalho adicional pq vc substitui o trabalho de criar o banco de dados pelo trabalho de criar as migrations.

Tem algumas vantagens que podem te ajudar no futuro.

  • Com as migrations vc pode ter um histórico de todas as mudanças que foram feitas na estrutura do banco.
  • Os códigos das migrations vão fazer parte do repositório, então quando mais alguém for trabalhar no seu projeto, não é necessário passar o arquivo de importação do banco de dados ou passar qualquer informação adicional, já vai tá tudo lá no repositório.
  • Ajuda a garantir que todas as pessoas que estão trabalhando no projeto tenham a mesma estrutura de banco de dados, ou seja, quando vc fizer uma mudança em um tipo de uma coluna em uma tabela, vc não precisa avisar o pessoal, não precisa informar qual mudança fez, não precisa ficar mandando arquivo de banco de dados atualizado, é só fazer o commit e o pessoal vai ter a atualização

Essas são as principais vantagens que percebo no dia a dia, talvez tenham outros pontos que vc pode até achar mais interessantes com o tempo.

Espero ajudar com o meu comentário

1

Entendo, mas fico pensando no seguinte, temos varios sistemas aqui, e um deles, o mais importante da empresa, já ultrapassou as mil tabelas, porém, através do simples diagrama do banco, conseguimos entender perfeitamente seu modelo e executar as manutenção diarias. Se eu tivesse usado migrations, seria mais simples ou mais trabalhoso em bancos grandes como esse?

1

Dependendo de qual sistema de gerenciamento de banco de dados vc usa, esses diagramas são gerados automaticamente né, então usar migrations não te impediria de ter os diagramas também. Realmente os diagramas ajudam melhor na hora de entender o banco como um todo, os relacionamentos e tudo mais, principalmente em bancos maiores.

Já as migrations vão ter outra utilidade, que seria ajudar na padronização e tudo mais, como disse anteriormente. Uma coisa não exclui a outra, acho até que se complementam em alguns casos.

Eu já trabalhei em um projeto em que o banco de dados foi projetado no workbench e depois de tudo pronto a gente usou um plugin pra gerar as migrations pro laravel, e aí a gente só colocou os arquivos no projeto pra gerar o banco e daí em diante a gente só fazia alterações pelas migrations mesmo, e quando precisava do diagrama em reuniões, era só conectar o workbench ao banco de dados que ele dava o diagrama atualizado.

Mas só pra me prevenir (sabe como a internet é né haha), eu não tenho nenhuma pretenção de te convencer de nada, só tô querendo conversar sobre um tema que me interessa muito

2