Mudanças no esquema do banco de dados
É comum que os softwares modernos tenham uma camada de banco de dados. Normalmente, é usado um banco de dados relacional, que armazena os dados e a estrutura dos dados. Muitas vezes, é necessário modificar o banco de dados no processo de entrega contínua. O tratamento de alterações em um banco de dados relacional requer consideração especial e oferece outros desafios além dos presentes ao implantar binários de aplicações. Normalmente, ao atualizar um binário de aplicação, você interrompe a aplicação, atualiza-a e, depois, a reinicia. Você realmente não se preocupa com o estado da aplicação, que é tratado fora dela.
Ao atualizar os bancos de dados, é necessário considerar o estado, já que eles contém muito estado, mas comparativamente pouca lógica e estrutura.
O esquema do banco de dados antes e depois da aplicação de uma alteração deve ser considerado para versões diferentes do banco de dados. Você pode usar ferramentas como Liquibase e Flyway para gerenciar as versões.
Em geral, essas ferramentas empregam alguma variante dos seguintes métodos:
-
Adicione uma tabela ao banco de dados em que uma versão dele está armazenada.
-
Monitore os comandos de alteração do banco de dados e agrupe-os em conjuntos de alterações com controle de versão. No caso do Liquibase, essas alterações são armazenadas em arquivos XML. O Flyway emprega um método ligeiramente diferente, onde os conjuntos de alterações são tratados como arquivos SQL separados ou ocasionalmente como classes Java separadas para transições mais complexas.
-
Quando o Liquibase é solicitado a atualizar um banco de dados, ele examina a tabela de metadados e determina quais conjuntos de alterações serão executados para atualizar o banco de dados com a versão mais recente.