Banco de Dados Evolutivo – Parte 4

A partir desse post da série Banco de Dados Evolutivo vamos entender e aprender como automatizar a maior parte do trabalho de controle de versionamento de banco de dados.

Existem várias ferramentas que ajudam essa tarefa, entretanto, veremos a partir de agora como implementar esses conceitos de banco de dados evolutivo abordados nos posts Parte 1, Parte 2 e Parte 3 usando a ferramenta Liquibase.


O LiquiBase é uma ferramenta de versionamento open source em Java criada para gerenciar as mudanças de banco de dados. Ao invés de o desenvolvedor escrever o SQL diretamente no banco de dados para criar, atualizar ou descartar objetos, essas definições são escritas em arquivos XML. Esse arquivo XML é denominado changelog que, por sua vez contém vários changesets que nada mais são que cada uma das alterações de banco. Na Listagem 1 e 2 constam um exemplo da estrutura do changelog e changeset respectivamente.

 <databaseChangeLog
        xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
        xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
 http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-2.0.xsd
        http://www.liquibase.org/xml/ns/dbchangelog-ext
 http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd">

 </databaseChangeLog>

Listagem 1. Estrutura do arquivo de ChangeLog da ferramenta de versionamento de banco de dados LiquiBase.

 <changeSet author="arthur" id="apresentacao_liquibase">

    <createTable tableName="datas_light">
         <column name="id" type="int"/>
    	<column name="nome" type="varchar(255)"/>
    </createTable>

 </changeSet>

Listagem 2. Estrutura do arquivo de ChangeSet da ferramenta de versionamento de banco de dados LiquiBase.

O funcionamento da ferramenta é bem simples. O LiquiBase cria no banco de dados a ser versionado duas tabelas de controle: databasechangelog e databasechangeloglock. Essas tabelas serão geradas no primeiro comando que você executar através da ferramenta. Na tabela databasechangelog o Liquibase guarda as informações de changesets aplicadas na base de dados sendo que o XML de alteração é identificado por uma chave composta formada por id e autor. Já a tabela databasechangeloglock serve para não permitir que dois usuários apliquem alterações simultâneas na mesma base de dados.

As mudanças são feitas em arquivos XML (como já foi dito) e são executados através de comandos via DOS (Windows) ou Terminal (Linux). Os principais comandos são de:

  • Update – Usado para os comandos de criação, alteração ou descarte de objetos;
  • Rollback – Usado para desfazer uma alteração executada na base de dados;
  • Diff – Usado para verificar o que há de diferente entre duas bases de dados;
  • SQL Output – Usado para transformar os changelogfiles XML em arquivos SQL;

Com relação às refatorações o LiquiBase possui inúmeras possibilidades que vão de comandos simples como um create ou drop database até comandos complexos como lookup table e merge columns.

No próximo post iniciaremos a preparação de um ambiente de testes para que seja possível usufruímos do potencial da ferramenta de versionamento na base de dados Adventure Works. 


Para se ler o conteúdo completo desta série – Banco de Dados Evolutivo – Parte 1, Banco de Dados Evolutivo – Parte 2 e Banco de Dados Evolutivo – Parte 3.

7 comentários sobre “Banco de Dados Evolutivo – Parte 4

  1. Pingback: Banco de Dados Evolutivo – Parte 5 | Arthur Luz | Data's Light

  2. Pingback: Banco de Dados Evolutivo – Parte 6 | Arthur Luz | Data's Light

  3. Pingback: Banco de Dados Evolutivo – Parte 7 | Arthur Luz | Data's Light

  4. Pingback: Banco de Dados Evolutivo – Parte 8 | Arthur Luz | Data's Light

  5. Pingback: Banco de Dados Evolutivo – Parte 11 | Arthur Luz | Data's Light

  6. Pingback: Banco de Dados Evolutivo – Parte 12 | Arthur Luz | Data's Light

  7. Pingback: Banco de Dados Evolutivo – Parte 14 | Arthur Luz | Data's Light

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s