Documente Academic
Documente Profesional
Documente Cultură
1
Agenda
Contexto
La problemática del cambio
¿Qué es LiquiBase?
Características principales de LiquiBase
¿Cómo es la gestión con LiquiBase?
Primeros Pasos
Rolling Back de Cambios
Buenas Prácticas
Acciones de Refactoring disponibles
Integración con Maven
ISC - 2012
Paulo Clavijo Esteban
clavijo_pau@ingenieriadesoftware.com 2
Contexto
ISC - 2012
Paulo Clavijo Esteban
clavijo_pau@ingenieriadesoftware.com 3
La problemática del cambio (1/3)
Necesitamos:
Soportar múltiples desarrolladores.
ISC - 2012
Paulo Clavijo Esteban
clavijo_pau@ingenieriadesoftware.com 4
La problemática del cambio (2/3)
Antes de LiquiBase
Ejecución manual de cambios en el modelo de BDD.
No podíamos garantizar que una BDD se encontrase en
una versión concreta.
Nos era demasiado costoso revertir la BDD a estados
anteriores.
No podíamos garantizar la sincronía entre el modelo de
datos y el modelo de entidades de la aplicación.
Generación manual de documentación sobre el modelo de
datos.
Las incorporaciones de un nuevo miembro al equipo eran
mas costosas.
ISC - 2012
Paulo Clavijo Esteban
clavijo_pau@ingenieriadesoftware.com 5
La problemática del cambio (3/3)
Soluciones?
6
¿Qué es LiquiBase? (1/3)
Database Refactoring
Database Change Management
ISC - 2012
Paulo Clavijo Esteban
clavijo_pau@ingenieriadesoftware.com 7
¿Qué es LiquiBase? (2/3)
ISC - 2012
Paulo Clavijo Esteban
clavijo_pau@ingenieriadesoftware.com 8
¿Qué es LiquiBase? (3/3)
ISC - 2012
Paulo Clavijo Esteban
clavijo_pau@ingenieriadesoftware.com 9
Entorno Desarrollo
ISC - 2012
Paulo Clavijo Esteban
clavijo_pau@ingenieriadesoftware.com 10
Características principales de LiquiBase
LiquiBase soporta:
Extensiones
Fusionar (merge) cambios de múltiples desarrolladores
Ramificaciones de código
Múltiples Bases de Datos
Gestionar datos en producción como también en varias etapas de
testeo y desarrollo
Cluster-safe database upgrades
Actualizaciones automáticas o generación de scripts SQL que pueden
ser aprobadas y aplicadas por un DBA
Deshacer actualizaciones
Revisar diferencias entre versiones ("diff"s)
Generar logs de cambios iniciales desde bases de datos existentes
Generación de documentación de cambios de bases de datos
ISC - 2012
Paulo Clavijo Esteban
clavijo_pau@ingenieriadesoftware.com 11
¿Cómo es la gestión con LiquiBase? (1/4)
ISC - 2012
Paulo Clavijo Esteban
clavijo_pau@ingenieriadesoftware.com 12
¿Cómo es la gestión con LiquiBase? (2/4)
ISC - 2012
Paulo Clavijo Esteban
clavijo_pau@ingenieriadesoftware.com 13
¿Cómo es la gestión con LiquiBase? (3/4)
databasechangelock
Utilizada para controlar la concurrencia.
databasechangelog
Para el registro de cambios aplicados.
ISC - 2012
Paulo Clavijo Esteban
clavijo_pau@ingenieriadesoftware.com 14
¿Cómo es la gestión con LiquiBase? (4/4)
ISC - 2012
Paulo Clavijo Esteban
clavijo_pau@ingenieriadesoftware.com 15
Primeros pasos con LiquiBase (1/4)
<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog2.0.xsd">
</databaseChangeLog>
ISC - 2012
Paulo Clavijo Esteban
clavijo_pau@ingenieriadesoftware.com 16
Primeros pasos con LiquiBase (2/4)
2º - Definir un Changeset.
db.changelog.xml
<?xml version="1.0" encoding="UTF8"?>
<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog2.0.xsd">
</databaseChangeLog>
ISC - 2012
Paulo Clavijo Esteban
clavijo_pau@ingenieriadesoftware.com 17
Primeros pasos con LiquiBase (3/4)
3º – Aplicar el Changeset
Podemos ejecutar el Changeset de varias formas: mediante
linea de comandos, Ant, Maven, Grails, etc.
Por ejemplo desde linea de comandos contra una BDD
MySql.
java jar liquibase.jar driver=com.mysql.jdbc.Driver \
classpath=lib/mysql.jar \
changeLogFile=db.changelog.xml \
url="jdbc:mysql://localhost/db_example" \
username=user \
password=password \
logLevel=info \
update
ISC - 2012
Paulo Clavijo Esteban
clavijo_pau@ingenieriadesoftware.com 18
Primeros pasos con LiquiBase (4/4)
4º – Revisar la BDD
Podemos revisar que el cambio se ha realizado en nuestra
BDD.
Y que este queda registrado en la tabla
databasechangelog.
ISC - 2012
Paulo Clavijo Esteban
clavijo_pau@ingenieriadesoftware.com 19
Buenas Prácticas (1/3)
ISC - 2012
Paulo Clavijo Esteban
clavijo_pau@ingenieriadesoftware.com 20
Buenas Prácticas (2/3)
</databaseChangeLog>
ISC - 2012
Paulo Clavijo Esteban
clavijo_pau@ingenieriadesoftware.com 21
Buenas Prácticas (3/3)
ISC - 2012
Paulo Clavijo Esteban
clavijo_pau@ingenieriadesoftware.com 22
Rolling Back de Cambios
ISC - 2012
Paulo Clavijo Esteban
clavijo_pau@ingenieriadesoftware.com 23
Acciones de Refactoring disponibles (1/2)
ISC - 2012
Paulo Clavijo Esteban
clavijo_pau@ingenieriadesoftware.com 24
Acciones de Refactoring disponibles (2/2)
3-create_usuarios.sql
ISC - 2012
Paulo Clavijo Esteban
clavijo_pau@ingenieriadesoftware.com 25
Integración con Maven (1/2)
pom.xml
<plugins>
<! Liquibase Plugin >
<plugin>
<groupId>org.liquibase</groupId>
<artifactId>liquibasemavenplugin</artifactId>
<version>2.0.3</version>
<configuration>
<propertyFile>src/main/resources/liquibase/liquibase.properties</propertyFile>
<promptOnNonLocalDatabase>false</promptOnNonLocalDatabase>
</configuration>
<executions>
<execution>
<phase>processresources</phase>
<goals>
<goal>update</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
http://www.liquibase.org/manual/maven
ISC - 2012
Paulo Clavijo Esteban
clavijo_pau@ingenieriadesoftware.com 26
Integración con Maven (2/2)
$ mvn liquibase:help
ISC - 2012
Paulo Clavijo Esteban
clavijo_pau@ingenieriadesoftware.com 27
Novedades en versión 2.0.4
<insert tableName="TEST_CLOB">
<column name="a_clob" valueClob="texto.txt" />
</insert>
ISC - 2012
Paulo Clavijo Esteban
clavijo_pau@ingenieriadesoftware.com 28
Referencias
http://www.liquibase.org
http://www.liquibase.org/quickstart
http://blog.liquibase.org
Liquibase - Gestión De Cambios En BDD
Getting the most out of LiquiBase
Liquibase – Maven plugin
Lintips
ISC - 2012
Paulo Clavijo Esteban
clavijo_pau@ingenieriadesoftware.com 29
Sobre el Autor:
Blog: www.lintips.com
Email: paucls@gmail.com
30