Introducción a Flyway: qué es y para qué sirve
\n\nFlyway es una biblioteca para la gestión de versiones y migraciones de bases de datos (Database Migration Tool). En el desarrollo de software moderno, especialmente en el trabajo en equipo y al usar metodologías CI/CD, surge la necesidad crítica de sincronizar la estructura de la base de datos entre desarrolladores, entornos de prueba y producción. Flyway resuelve este problema permitiendo describir los cambios del esquema de la BD (creación de tablas, adición de columnas, índices, disparadores, etc.) como scripts SQL secuenciales y versionados o clases Java.
\n\nEl concepto principal de Flyway es simple: cada migración tiene un número de versión único (por ejemplo, V1, V2, V3) y se ejecuta una sola vez. La biblioteca rastrea qué migraciones ya se han aplicado a una base de datos específica, utilizando una tabla especial (por defecto flyway_schema_history). Esto garantiza la idempotencia y la reproducibilidad del estado de la base de datos.
¿Para qué usar Flyway?
\n- \n
- Versionado del esquema: Cada cambio en la base de datos es una versión separada que se puede revertir o aplicar. \n
- Automatización: Integración con Maven, Gradle, Spring Boot y pipelines CI/CD. \n
- Control de integridad: Flyway verifica las sumas de verificación de las migraciones, evitando cambios accidentales en scripts ya ejecutados. \n
- Simplicidad: Para la mayoría de las tareas, basta con escribir un script SQL normal. \n
Instalación de Flyway para Java
\n\nFlyway no se instala a través de pip o npm, ya que es una biblioteca Java. Existen varias formas de agregarla a un proyecto:
\n\n1. Maven (pom.xml)
\n<dependency>\n <groupId>org.flywaydb</groupId>\n <artifactId>flyway-core</artifactId>\n <version>9.22.3</version> <!-- Versión actual al momento de escribir -->\n</dependency>\n\n<!-- Controlador para su BD, por ejemplo PostgreSQL -->\n<dependency>\n <groupId>org.postgresql</groupId>\n <artifactId>postgresql</artifactId>\n <version>42.7.1</version>\n</dependency>\n\n2. Gradle (build.gradle)
\nimplementation 'org.flywaydb:flyway-core:9.22.3'\nimplementation 'org.postgresql:postgresql:42.7.1'\n\n3. Plugin de Maven (para ejecutar desde la línea de comandos)
\n<plugin>\n <groupId>org.flywaydb</groupId>\n <artifactId>flyway-maven-plugin</artifactId>\n <version>9.22.3</version>\n <configuration>\n <url>jdbc:postgresql://localhost:5432/mydb</url>\n <user>myuser</user>\n <password>mypassword</password>\n </configuration>\n</plugin>\n\n4. Spring Boot (configuración automática)
\nSi usa Spring Boot, basta con agregar la dependencia y configurar los parámetros en application.properties:
spring.flyway.enabled=true\nspring.flyway.locations=classpath:db/migration\nspring.datasource.url=jdbc:postgresql://localhost:5432/mydb\nspring.datasource.username=myuser\nspring.datasource.password=mypassword\n\nInicio rápido con ejemplo de código
\n\nVeamos un ejemplo mínimo de uso de Flyway en una aplicación Java para crear la tabla users.
Paso 1: Cree la estructura de directorios para las migraciones
\nPor defecto, Flyway busca scripts SQL en la carpeta db/migration en el classpath (por ejemplo, src/main/resources/db/migration).
Paso 2: Cree el archivo de migración
\nCree el archivo V1__Create_users_table.sql en esta carpeta:
CREATE TABLE users (\n id SERIAL PRIMARY KEY,\n username VARCHAR(50) NOT NULL UNIQUE,\n email VARCHAR(10 También en la biblioteca
Envío de SMS en TypeScript: API de la biblioteca sms-client-ts
Geolocalización y mapas en PHP: revisión de bibliotecas y herramientas
Tokens JWT en JavaScript (Node.js): guía completa
Multer para JavaScript (Node.js): guía completa con ejemplos