Gestión de Cambios de BDD con LiquiBase. ISC Abril 2012 Paulo Clavijo Esteban clavijo_pau@ingenieriadesoftware.com



Documentos relacionados
La tortuga y los documentos: Tortoise + Subversion

INSTALACIÓN DE MySQL SERVER EN WINDOWS

GIT Dinahosting 3. Hola!

Manual de NetBeans y XAMPP

openfwpa Internacional Módulo SMS (MSMS)

Portafirmas. Manual de Actualización. Versión: INS005 Fecha: 11/07/2011. Versión 2.3.0

COPIAS DE SEGURIDAD AUTOMÁTICAS DE DIRECCIONES CALLEÇPAÑA

REQUISITOS DEL SISTEMA. Software Servidor. Cliente. Hardware Servidor. Cliente

UNIVERSIDAD NACIONAL EXPERIMENTAL POLITÉCNICA DE LA FUERZA ARMADA NACIONAL EXTENSIÓN BARQUISIMETO BARQUISIMETO ESTADO. LARA

Cierre de ejercicio. 2014

U.E JUAN DE VELASCO CREAR DATOS EN SQL

Trabajos de Ampliación. Bases de datos NoSQL.

Consultoría, Análisis, Desarrollo y Mantenimiento de Software. Guía de Usuario V2.1. Junio 2.004

Requisitos técnicos para la instalación. Arquitectura Hardware Arquitectura Software. Instrucciones de instalación GONG-R

GESTOR DE LICENCIAS Ayuda

Cierre de ejercicio. 2015

Tablas y Campos Nuevos

Administración de GNU/Linux

Backup & Recovery Oracle 9i. Las copias físicas offline, conocidas como Backups en frío, se realizan cuando la Base de Datos está parada.

ADMINISTRACIÓN DE BASE DE DATOS

SISTEMA DE ENCUESTAS CON PHP Y MYSQL

MANUAL DE AYUDA TAREA PROGRAMADA COPIAS DE SEGURIDAD

PHPMYADMIN Y MYSQL. Para gestionar la base de datos MySQL, lo haremos desde la aplicación PhpMyAdmin.

DESCRIPCION GENERAL DEL PROGRAMA GESTECNET

Sincronización del Servidor.

1. Notas sobre la instalación de estas aplicaciones

Instalación de Casandra Para instalar cassandra se recomienda tener la última versión de JAVA instalada.

Sistema de gestión de procesos institucionales y documental.

Backup & Recovery Oracle 9i

Ministerio de Educación. Base de datos en la Enseñanza. Open Office. Módulo 5: Report Builder

Iniciando con Oracle. Índice de contenido. Ingresando a Oracle. Cambiando Su Contraseña. Ingresando un Comando SQL en SQL*Plus

Formas de llevar a cabo un backup de una base de datos MySQL

Optimizar base de datos WordPress

BASE DE DATOS QUÉ ES UNA BASE DE DATOS?

Historial de Versiones: Velneo vversion. Funcionamiento. Repositorio de versiones. Funcionalidades del Historial de Versiones. Bloquear.

Manual de usuario Versión: 1.3 Edición: 05/02/2015 1

Gestor de Contenidos CMS. Prof: Ing. Henrry Servitá

TRABAJO GRUPAL TEMA: COMO CREAR BASE DE DATOS EN SQL

Plan de Gestión de Configuración. Universidad Nacional de la Patagonia Austral

MANUAL DE ACTUALIZACIÓN DEL DEA. Versión del DEA del 10/04/2012

MANUALITO MS-SQL SERVER

WEB SERVICES CON AXIS

Conceptos Generales en Joomla

UNIVERSIDAD DEL ISTMO CAMPUS IXTEPEC LIC. INFORMATICA GRUPO 508 PROCEDIMIENTOS ALMACENADOS EN SQL SERVER 2000

Oracle 12c DISEÑO Y PROGRAMACIÓN

CONCEPTOS DE PROCESAMIENTO DE TRANSACCIONES

CVS Concurrent Versions System Manual de Usuario

D.T.Informática S.L. [Sistema hada] hilo Administrador Desarrollo Activo

Oracle Database 10g: Taller de Administración I 1-2

UNIT4 CRM. Información de usuario. Release notes. v a v UNIT Ref. acv9010u.docx

Integración de Magento & Dynamics NAV

ÁLAMO SOFTWARE PARA GESTIÓN INMOBILIARIA

SCT Software para la calibración de transductores de fuerza. Versión 3.5. Microtest S.A.

Toda base de datos relacional se basa en dos objetos

Instalación. Interfaz gráfico. Programación de Backups. Anexo I: Gestión de la seguridad. Manual de Usuario de Backup Online 1/21.

Unidad 1. Fundamentos en Gestión de Riesgos

Introducción a la extensión de scripting en gvsig 2.0

Tutorial: Primeros Pasos con Subversion

[I-SOLVER] MANUAL USUARIO. i-solver GESTIÓN DE INCIDENCIAS 2012

WPeMatico. Wordpress-Plugin

Elementos requeridos para crearlos (ejemplo: el compilador)

COMERZZIA CHANGELOG. Changelog. COMERZZIA-CL-Changelog. Página 1 de 5. Fecha: 29/09/2014 Versión: 1.3

Novedades Integria IMS v. 4.2

Gestión de Procesos de Compra. Documentación Técnico Comercial

Versión Boletín de Novedades

10. El entorno de publicación web (Publiweb)

Manual de instalación Actualizador masivo de Stocks y Precios

Control de Versiones con Subversion

Ilustraciones:

MANUAL DE USUARIO Guía de Gestión de la Configuración con Subversion

Curso de PHP con MySQL Gratis

PROGRAMACIÓN PÁGINAS WEB CON PHP

Tenemos que instalar los programas de los usuarios también (los anteriormente mencionados) y los siguientes que vamos a nombrar.

Guía de Instalación. Glpi

Symantec Backup Exec System Recovery Manager

Adaptación al NPGC. Introducción. NPGC.doc. Qué cambios hay en el NPGC? Telf.: Fax.:

GADE E.R.P. LAS NOVEDADES DE LA VERSIÓN GADEFAC 15.0 SON:

Definiciones. Tema 21_Módulos Menú 1

El proceso de Instalación de Microsoft SQL Server 2008

INSTALACIÓN PHP+MYSQL CON EASYPHP

Copias de seguridad con SQL Server 2005 WhitePaper Febrero de 2008

Análisis de aplicación: Moon Secure AV

Integración continua con JBoss Trading, una aplicación empresarial de referencia

Capítulo 4. Requisitos del modelo para la mejora de la calidad de código fuente

Base de datos relacional

Como Publicar Videos en YouTube. Cómo publicar en YouTube? Selecciona su idioma

Añadir un tipo nuevo

MANUAL DE AYUDA MANEJO DE SHAREPOINT CON GOTELGEST.NET

1. Creación del repositorio

ATLAS MANUAL DE USUARIO DEL ARQUETIPO WEB CON DOCUMENTUM

Sistema de diseño y seguimiento de Procesos WT - WorkFlow.

Conexión de GPS a Open CPN.

BuCo. Graphical web billing tool

T12 Vistas y tablas temporales

Unidad 2 Lenguaje de Definición de Datos (DDL) 2.1 Creación de base de datos. 2.2 Creación de tablas.

UNIVERSIDAD DE OVIEDO

Base de datos en Excel

Enginyeria del Software III ( ) CONTROL DE VERSIONES CON SUBVERSION. Roberto García Despatx EPS 3.15

Tutorial de Unity 3D Tema 52 Bases de Datos. Tutorial de Unity 3D. Bases de Datos

Transcripción:

Gestión de Cambios de BDD con LiquiBase ISC Abril 2012 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 2

Contexto Si nunca desarrollamos código sin un control de versiones, por que desarrollamos la BDD sin el? 3

La problemática del cambio (1/3) Las BDD son una parte fundamental en la mayoría de los proyectos. Como realizamos el seguimiento de sus cambios? Necesitamos: Soportar múltiples desarrolladores. Soportar ramas y versiones. Flexibilizar y automatizar como se aplican los cambios. 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. 5

La problemática del cambio (3/3) Soluciones? 6

Qué es LiquiBase? (1/3) LiquiBase es una librería OpenSource (bajo licencia Apache 2.0), independiente de la base de datos, que nos permitirá realizar el seguimiento, la gestión y aplicación de cambios en nuestro modelo de datos. Database Refactoring Database Change Management 7

Qué es LiquiBase? (2/3) Permite aplicar cambios de una forma controlada y automatizada así como llevar un histórico de los mismos. Pensada especialmente para equipos de desarrollo ágiles, con múltiples desarrolladores y ramas de código. 8

Qué es LiquiBase? (3/3) Una de las ideas es conseguir que los refactoring o nuevos desarrollos de código subidos a SVN/CVS, se acompañen del refactoring del modelo de BDD, es decir subir también los changesets LiquiBase. De esta forma cuando el resto de desarrolladores actualicen, descargaran código y las modificaciones de BDD necesarias para que este funcione. Se puede conseguir que aplicar estos cambios sea casi transparente para los desarrolladores, ya que LiquiBase puede utilizarse no solo desde una linea de comandos, si no también mediante tareas Ant o mediante Maven. 9

Entorno Desarrollo 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 11

Cómo es la gestión con LiquiBase? (1/4) No es una herramienta diff. Trabaja de forma diferente a los tradicionales herramientas de versionado de esquemas. Almacena una lista de los cambios aplicados. 12

Cómo es la gestión con LiquiBase? (2/4) LiquiBase utiliza ficheros XML para describir los cambios (changesets), lo que permite independencia del sistema de BDD utilizado. Un changeset se identifica por su id y author, así como por el propio nombre del fichero. Cuando aplicamos un changeset, LiquiBase a parte de realizar las modificaciones pertinentes, registra una entrada con el cambio en su tabla de histórico DatabaseChangeLog. De hecho, antes de aplicar un changeset, se comprueba con dicha tabla que este no se ha realizado previamente. 13

Cómo es la gestión con LiquiBase? (3/4) LiquiBase utiliza dos tablas: databasechangelock Utilizada para controlar la concurrencia. databasechangelog Para el registro de cambios aplicados. 14

Cómo es la gestión con LiquiBase? (4/4) Ya que todos los cambios en la base de datos son almacenados en un formato legible para los humanos (changesets), permite también su seguimiento y control el sistema de control de versiones. Podemos utilizar LiquiBase directamente como una herramienta de comandos, o configurarla como un plugin de Ant o de Maven. 15

Primeros pasos con LiquiBase (1/4) 1º Definir el fichero Changelog db.changelog.xml <?xml version="1.0" encoding="utf 8"?> <databasechangelog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:xsi="http://www.w3.org/2001/xmlschema instance" xsi:schemalocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog 2.0.xsd"> </databasechangelog> En este fichero es donde indicamos todos los cambios o Changesets. 16

Primeros pasos con LiquiBase (2/4) 2º - Definir un Changeset. db.changelog.xml <?xml version="1.0" encoding="utf 8"?> <databasechangelog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:xsi="http://www.w3.org/2001/xmlschema instance" xsi:schemalocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog 2.0.xsd"> <changeset id="1" author="pau"> <createtable tablename="producto"> <column name="id" type="int"> <constraints primarykey="true" nullable="false"/> </column> <column name="nombre" type="varchar(50)"> <constraints nullable="false"/> </column> <column name="precio" type="double" /> <column name="baja" type="boolean" defaultvalueboolean="false"/> </createtable> </changeset> </databasechangelog> 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 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. 19

Buenas Prácticas (1/3) Añadir comentarios a los changesets. <changeset id="2" author="pau"> <comment>se añade columna descripcion a tabla producto</comment> <altertable tablename="producto"> <column name="descripcion" type="varchar(100)" /> </createtable> </changeset> Seguir siempre el mismo criterio para los IDs. Puede ser un numero (1), una fecha y numero (20120401 1), etc. 20

Buenas Prácticas (2/3) Organizar los ChangeLogs. Utilizar una estructura de directorios y nombres de fichero. Utilizar includes en db.changelog.xml <databasechangelog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:xsi="http://www.w3.org/2001/xmlschema instance" xsi:schemalocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog 2.0.xsd"> <include file="tablas.changelog.xml" relativetochangelogfile="true" /> <include file="datos.changelog.xml" relativetochangelogfile="true" /> </databasechangelog> 21

Buenas Prácticas (3/3) Utilizar el fichero de propiedades liquibase.properties Nos evita tener que pasar los parámetros de conexión a la BDD, en cada llamada a la herramienta liquibase. 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 De esta forma llamamos a liquibase indicando únicamente la acción. $ java jar liquibase update 22

Rolling Back de Cambios Crear Tags tag $ java jar liquibase tag v0.1 Deshacer todos los cambios hasta el Tag indicado rollback $ java jar liquibase rollback v0.1 Deshacer todos los cambios hasta fecha rollbacktodate $ java jar liquibase rollbacktodate '2012 04 01'T'00:00:00' Deshacer los últimos N cambios rollbackcount $ java jar liquibase rollbackcount 1 23

Acciones de Refactoring disponibles (1/2) LiquiBase permite definir todo tipo de modificaciones mediante su sintaxis XML. Add Column Create View Rename Column Rename View Modify Column Drop View Drop Column Merge Columns Alter Sequence Create Stored Procedure Create Table Insert Rename Table Etc... Drop Table Imprescindible revisar la documentación oficial www.liquibase.org/manual/refactoring_commands 24

Acciones de Refactoring disponibles (2/2) También permite incluir cambios mediante ficheros SQL. db.changelog.xml <changeset id="3" author="pau"> <comment>se crea nueva tabla usuarios</comment> <sqlfile path="sql/3 create_usuarios.sql"> <rollback> <droptable tablename="usuarios"/> </rollback> </changeset> 3-create_usuarios.sql CREATE TABLE usuarios ( Id int PRIMARY KEY, Nombre varchar(50) ); Si utilizamos SQL, debemos encargarnos nosotros de indicar las acciones de rollback 25

Integración con Maven (1/2) pom.xml <plugins> <! Liquibase Plugin > <plugin> <groupid>org.liquibase</groupid> <artifactid>liquibase maven plugin</artifactid> <version>2.0.3</version> <configuration> <propertyfile>src/main/resources/liquibase/liquibase.properties</propertyfile> <promptonnonlocaldatabase>false</promptonnonlocaldatabase> </configuration> <executions> <execution> <phase>process resources</phase> <goals> <goal>update</goal> </goals> </execution> </executions> </plugin> </plugins> http://www.liquibase.org/manual/maven 26

Integración con Maven (2/2) Por defecto durante el build del proyecto maven llamará a liquibase con la acción update. Pero podemos invocar directamente al plugin para hacer uso de otras acciones. Ejemplos: $ mvn liquibase:update $ mvn liquibase:rollback Dliquibase.rollbackCount=1 $ mvn liquibase:tag Dliquibase.tag=v2.0 $ mvn liquibase:help 27

Novedades en versión 2.0.4 Se esta trabajando ya en Liquibase 3.0. La última versión estable es Liquibase 2.0.4, liberada el pasado 19 de Abril. Principalmente incluye correcciones de errores, pero entre las nuevas funcionalidades podemos destacar la posibilidad de insertar datos de tipo blob/clob. <insert tablename="test_blob"> <column name="a_blob" valueblob="imagen.png" /> </insert> <insert tablename="test_clob"> <column name="a_clob" valueclob="texto.txt" /> </insert> 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 29

Sobre el Autor: Software Engineer en ISC Blog: www.lintips.com Email: paucls@gmail.com 30