Flyway
Al rescate puede llegar algo más avanzado que analizar las diferencias entre los scripts, algo así como encontrar las diferencias y probar si todo funciona bien, lo cual es muy propenso a errores.
Es aquí donde nos encontramos con Flyway, una herramienta de migración para base de datos SQL (para casos NoSQL existen otras tecnologías también) de forma versionada. Usando Flyway tenemos archivos versionados, que contienen los scripts, dentro de un directorio donde la estrategia para manejar las versiones depende de cada compañía/producto. Sin embargo, podemos utilizar un alcance simple donde se añade un script para cada nueva versión del producto.
Los nuevos scripts pueden contener nuevas tablas, inserciones en las bases de datos y cualquier otra operación que pueda manejarse por medio de scripts y que entienda la base de datos a utilizar. Mucho cuidado con los delete y cambios en columnas de tablas.
Operaciones
Flyway posee soporte para una gran variedad de bases de datos SQL y en el caso de no existir un soporte, puede ser customizado e integrar lo que se necesite. Las operaciones implementadas son las siguientes:
- migrate: migra la BD.
- clean: limpia la BD.
- info: entregar información de la BD migrada
- validate: valida que la BD tenga todas las versiones en orden.
- repair: repara una BD con problemas de migración en sus versiones.
¿Cómo la base de datos conoce la versión de migración?
Implementación
- Utilizar la librería como dependencia e implementar las migraciones invocando a los métodos que disponibiliza su API en JAVA.
- Invocarlo como comando. En este caso, la máquina debe tener el comando Flyway disponible.
- Ejecutar el Mojo desde Maven. Éste modo no necesita código y la lista de operaciones pueden customizadas usando el archivo pom.xml. Personalmente, es la opción que más me acomoda.
Existen otras características para Flyway que no vale la pena mencionar por aquí, pero que puedes encontrar en la documentación oficial de Flyway.