Liquibase: Operaciones, buenas practicas e integración con Maven

En el post anterior hemos hecho hincapié en hacer una breve introducción de que es Liquibase, las características y como instalarlo en nuestra PC. En este post la idea es centrarnos en hacer una breve explicación de las distintas operaciones que se pueden realizar como así también las buenas practicas que nos pueden ayudar a organizar mejor los cambios en una estructura.

Operaciones

Existen múltiples operaciones que se pueden realizar con Liquibase, en este apartado veremos tan solo las mas importantes pero los invitamos a que vean todas las que se encuentran disponibles en este link.

Add Column

Drop Column

Create Table

Drop Table

Insert

Update

Delete

Buenas practicas

En este apartado explicaremos algunas de las buenas practicas que son recomendables a la hora de usar esta libreria, cabe resaltar que no son todas sino tan solo las mas importantes.

Añadirle un comentario a cada changeSet

La idea es poder identificar cual fue el motivo o que es lo que implico cada uno de los changeSet, esta información se almacena dentro de una columna en la tabla databasechangelog.

Separar los cambios en distintos archivos

Este punto es recomendable cuando se trabaja en una aplicación por versiones o si se trabaja con metodologías ágiles separando los cambios por sprints ya que nos permite saber que cambios están relacionados con una versión mas fácilmente.

Para hacer esto deberemos tener un archivo XML (db.master.changelog.xml) que sera el maestro y el que contenga todas las referencias al resto de los archivos

Cada uno de los archivos que contengan los cambios desconocerán la existencia del changeLog maestro (como si fueran ellos el changeLog maestro), lo que nos permite que podamos ejecutar si queremos ese único archivo por separado. El siguiente es un ejemplo de como se ve el changeLog que realiza cambios en la base de datos (db.changelog-1.0.xml):

Organizar los archivos

Una buena practica con el uso de Liquibase es mantener organizado los cambios dentro de una estructura de carpetas, existen varias alternativas en particular para lo que son proyectos Java una alternativa podría ser la siguiente:

Tambien podria  incluirse el archivo db.changelog-master.xml dentro de la carpeta changelog.

Utilizar un archivo de configuración

Como hemos visto en el post anterior la forma de ejecutar Liquibase por linea de comandos es pasandole todos los parámetros (url de la base de datos, driver, usuario, contraseña), ahora bien esto hace que el comando sea engorroso y largo. Una buena practica es extraer toda esa configuración dentro de un archivo llamado liquibase.properties el cual por default debería estar en el mismo directorio que donde se encuentra nuestro changeLog master (el que posee las referencias al resto de los archivos).

El archivo tendría aproximadamente la siguiente información:

Hacer un tag para marcar el estado actual

Otra buena practica es realizar un tag (marcar el estado actual de la base de datos) para luego poder restaurarla a ese estado, este comando a su vez cuando es ejecutado almacena ese tag creando un registro en la tabla databasechangelog.

Una vez hecho esto tenemos un punto de restauración dentro de nuestra base de datos y que en caso de querer revertir todos los cambios hasta un tag puntual lo único que deberemos hacer es ejecutar lo siguiente:

Integración con Maven

La integración de esta librería con Maven (esto es solo para proyectos Java) es bastante sencilla, solo deberemos agregar a nuestro archivo pom.xml lo siguiente

Siguiendo las buenas practicas de Liquibase los datos de la conexión, usuario y contraseña se encuentran en un archivo (liquibase.properties).

La forma de invocar a la librería para que se encargue de ejecutar los cambios es la siguiente:

Conclusión

Liquibase nos brinda grandes beneficios ya que posee un gran numero de operaciones SQL que son soportadas en casi todas las base de datos y con el correcto uso nos facilitara mucho nuestros trabajo de actualizar la base de datos.

Por ultimo para los que quieran poder ver el código y probar este ejemplo les dejamos este link.

You may also like...

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *