Cambios de esquema de base de datos
Es común que el software moderno tenga una capa de base de datos. Por lo general, se utiliza una base de datos relacional, que almacena tanto los datos como la estructura de los datos. A menudo es necesario modificar la base de datos en el proceso de entrega continua. El manejo de los cambios en una base de datos relacional requiere una consideración especial y ofrece otros desafíos además de los que se presentan al implementar binarios de aplicaciones. Por lo general, cuando se actualiza un binario de aplicación, se detiene la aplicación, se actualiza y, a continuación, se inicia de nuevo. En realidad, no hay que preocuparse por el estado de la aplicación, que se maneja fuera de la aplicación.
Al actualizar bases de datos, hay que tener en cuenta el estado porque una base de datos contiene mucho estado pero relativamente poca lógica y estructura.
El esquema de base de datos antes y después de aplicar un cambio debe considerarse como versiones diferentes de la base de datos. Puede utilizar herramientas como Liquibase y Flyway para administrar las versiones.
En general, esas herramientas emplean alguna variante de los siguientes métodos:
-
Agregar una tabla a la base de datos en la que hay almacenada una versión de base de datos.
-
Realizar un seguimiento de los comandos de cambio de base de datos y agruparlos en conjuntos de cambios con versiones. En el caso de Liquibase, estos cambios se almacenan en archivos XML. Flyway emplea un método ligeramente diferente en el que los conjuntos de cambios se manejan como archivos SQL separados u ocasionalmente como clases Java separadas para transiciones más complejas.
-
Cuando se le pide a Liquibase que actualice una base de datos, mira la tabla de metadatos y determina qué conjuntos de cambios se deben ejecutar para actualizar la base de datos con la última versión.