Migraciones de Bases de Datos
Esta imagen muestra la progresión de las migraciones de base de datos a través de las versiones. Cada versión refleja cambios en la estructura de la base de datos, como la creación de tablas, la modificación de campos o la adición/eliminación de columnas, para adaptarse a los requisitos de la aplicación.
Durante el desarrollo de una aplicación, puede ser necesario modificar el esquema de la base de datos: agregar nuevas tablas, actualizar las existentes, introducir índices, entre otros.
Las migraciones permiten gestionar estos cambios de manera secuencial y organizada, garantizando la integridad de los datos y manteniendo el esquema de la base de datos alineado con el código de la aplicación. Para las migraciones, utilizaremos Flyway.
¿Qué es Flyway?
Una de las características clave de Flyway es su soporte para la versionado de migraciones, lo que permite realizar un seguimiento de los cambios en la estructura de la base de datos y revertir a versiones anteriores si es necesario.
Creación de una migración con Flyway
Para comenzar, agregue la dependencia de Flyway a su proyecto de Spring Boot. Como estamos utilizando Maven, agregue la siguiente dependencia al archivo pom.xml:
También se agregará otra dependencia JPA, que funciona junto con Flyway. Se abordará JPA con más detalle más adelante.
Esta dependencia facilitará la integración de Flyway en el proyecto. Sin embargo, eso no es todo, aún es necesario configurarlo.
Por supuesto, Flyway requiere saber con qué base de datos va a trabajar, por lo que se debe especificar explícitamente la base de datos y proporcionar las credenciales de acceso.
Las configuraciones principales pueden definirse en application.properties:
spring.flyway.url=jdbc:mysql://localhost:3306/my_database
spring.flyway.user=root
spring.flyway.password={your_password}
Necesitamos especificar la url, user y password para permitir que Flyway funcione con nuestra base de datos.
Sin embargo, para evitar ingresar estos valores varias veces, podemos referenciarlos desde otros parámetros usando la sintaxis ${}.
spring.flyway.url=${spring.datasource.url}
spring.flyway.user=${spring.datasource.username}
spring.flyway.password=${spring.datasource.password}
spring.datasource.url=jdbc:mysql://localhost:3306/my_database
spring.datasource.username=root
spring.datasource.password={your_password}
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
En el capítulo anterior, creamos una base de datos my_database y agregamos una tabla book. Sin embargo, ahora podemos eliminar la tabla book ya que será creada mediante una migración.
Ahora todo está listo para crear nuestra primera migración en la aplicación. Es necesario crear una carpeta llamada db dentro del directorio resources, y dentro de esa carpeta, crear otra llamada migration. La ruta completa debe ser: src/main/resources/db/migration.
En el directorio de migraciones, ahora se pueden crear archivos donde se definirán los cambios. El formato del archivo debe ser V<version>__<description>.sql.
V1__create_table_books.sql
Las migraciones se aplican en el orden de sus versiones. La numeración de versiones debe ser secuencial y sin saltos. Por ejemplo, si existen las migraciones V1__init.sql y V2__add_column.sql, la siguiente migración debe ser V3__another_change.sql.
Dentro del archivo de migración, se pueden escribir scripts SQL para definir la estructura de la base de datos, crear nuevas tablas, columnas, etc.
A continuación, se presenta el script para la creación de la tabla books, que se creó manualmente en el capítulo anterior, en nuestro archivo V1__create_table_books.sql.
create table book
(
id varchar(255) not null primary key,
name varchar(255) not null,
author varchar(255) null,
price decimal(10, 2) null
);
También es posible agregar un parámetro al archivo application.properties que especifica la ubicación de las migraciones, para que Flyway conozca la ruta exacta de los archivos de migración:
spring.flyway.locations=classpath:db.migration
Después de esto, ejecutar la aplicación, y deberías ver la tabla creada con los campos que especificaste en la migración.
Ya no puedes modificar la primera versión de la migración. Para cada cambio en tu tabla, deberás crear un nuevo archivo de migración y agregar el nuevo script allí.
¿Por qué son importantes las migraciones?
Las migraciones son necesarias para una gestión ordenada de los cambios en la base de datos, preservando el historial y permitiendo reversiones cuando sea necesario.
Ayudan a sincronizar la estructura de la base de datos entre diferentes entornos como desarrollo, pruebas y producción, además de automatizar el proceso de actualización, reducir el riesgo de errores y garantizar que el esquema de la base de datos permanezca consistente con el código de la aplicación.
Cada migración también documenta cambios específicos, facilitando la comprensión y el mantenimiento del esquema de la base de datos.
Resumen
El uso de Flyway simplifica y automatiza el proceso de gestión de cambios en la base de datos, lo que conduce a un desarrollo de aplicaciones más fiable y eficiente.
1. ¿Qué es una migración de base de datos?
2. ¿Qué función cumplen las versiones de migración?
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
What are the steps to create a migration file with Flyway?
How does Flyway handle versioning and rollbacks?
Can you explain how to configure Flyway in a Spring Boot project?
Awesome!
Completion rate improved to 3.45
Migraciones de Bases de Datos
Desliza para mostrar el menú
Esta imagen muestra la progresión de las migraciones de base de datos a través de las versiones. Cada versión refleja cambios en la estructura de la base de datos, como la creación de tablas, la modificación de campos o la adición/eliminación de columnas, para adaptarse a los requisitos de la aplicación.
Durante el desarrollo de una aplicación, puede ser necesario modificar el esquema de la base de datos: agregar nuevas tablas, actualizar las existentes, introducir índices, entre otros.
Las migraciones permiten gestionar estos cambios de manera secuencial y organizada, garantizando la integridad de los datos y manteniendo el esquema de la base de datos alineado con el código de la aplicación. Para las migraciones, utilizaremos Flyway.
¿Qué es Flyway?
Una de las características clave de Flyway es su soporte para la versionado de migraciones, lo que permite realizar un seguimiento de los cambios en la estructura de la base de datos y revertir a versiones anteriores si es necesario.
Creación de una migración con Flyway
Para comenzar, agregue la dependencia de Flyway a su proyecto de Spring Boot. Como estamos utilizando Maven, agregue la siguiente dependencia al archivo pom.xml:
También se agregará otra dependencia JPA, que funciona junto con Flyway. Se abordará JPA con más detalle más adelante.
Esta dependencia facilitará la integración de Flyway en el proyecto. Sin embargo, eso no es todo, aún es necesario configurarlo.
Por supuesto, Flyway requiere saber con qué base de datos va a trabajar, por lo que se debe especificar explícitamente la base de datos y proporcionar las credenciales de acceso.
Las configuraciones principales pueden definirse en application.properties:
spring.flyway.url=jdbc:mysql://localhost:3306/my_database
spring.flyway.user=root
spring.flyway.password={your_password}
Necesitamos especificar la url, user y password para permitir que Flyway funcione con nuestra base de datos.
Sin embargo, para evitar ingresar estos valores varias veces, podemos referenciarlos desde otros parámetros usando la sintaxis ${}.
spring.flyway.url=${spring.datasource.url}
spring.flyway.user=${spring.datasource.username}
spring.flyway.password=${spring.datasource.password}
spring.datasource.url=jdbc:mysql://localhost:3306/my_database
spring.datasource.username=root
spring.datasource.password={your_password}
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
En el capítulo anterior, creamos una base de datos my_database y agregamos una tabla book. Sin embargo, ahora podemos eliminar la tabla book ya que será creada mediante una migración.
Ahora todo está listo para crear nuestra primera migración en la aplicación. Es necesario crear una carpeta llamada db dentro del directorio resources, y dentro de esa carpeta, crear otra llamada migration. La ruta completa debe ser: src/main/resources/db/migration.
En el directorio de migraciones, ahora se pueden crear archivos donde se definirán los cambios. El formato del archivo debe ser V<version>__<description>.sql.
V1__create_table_books.sql
Las migraciones se aplican en el orden de sus versiones. La numeración de versiones debe ser secuencial y sin saltos. Por ejemplo, si existen las migraciones V1__init.sql y V2__add_column.sql, la siguiente migración debe ser V3__another_change.sql.
Dentro del archivo de migración, se pueden escribir scripts SQL para definir la estructura de la base de datos, crear nuevas tablas, columnas, etc.
A continuación, se presenta el script para la creación de la tabla books, que se creó manualmente en el capítulo anterior, en nuestro archivo V1__create_table_books.sql.
create table book
(
id varchar(255) not null primary key,
name varchar(255) not null,
author varchar(255) null,
price decimal(10, 2) null
);
También es posible agregar un parámetro al archivo application.properties que especifica la ubicación de las migraciones, para que Flyway conozca la ruta exacta de los archivos de migración:
spring.flyway.locations=classpath:db.migration
Después de esto, ejecutar la aplicación, y deberías ver la tabla creada con los campos que especificaste en la migración.
Ya no puedes modificar la primera versión de la migración. Para cada cambio en tu tabla, deberás crear un nuevo archivo de migración y agregar el nuevo script allí.
¿Por qué son importantes las migraciones?
Las migraciones son necesarias para una gestión ordenada de los cambios en la base de datos, preservando el historial y permitiendo reversiones cuando sea necesario.
Ayudan a sincronizar la estructura de la base de datos entre diferentes entornos como desarrollo, pruebas y producción, además de automatizar el proceso de actualización, reducir el riesgo de errores y garantizar que el esquema de la base de datos permanezca consistente con el código de la aplicación.
Cada migración también documenta cambios específicos, facilitando la comprensión y el mantenimiento del esquema de la base de datos.
Resumen
El uso de Flyway simplifica y automatiza el proceso de gestión de cambios en la base de datos, lo que conduce a un desarrollo de aplicaciones más fiable y eficiente.
1. ¿Qué es una migración de base de datos?
2. ¿Qué función cumplen las versiones de migración?
¡Gracias por tus comentarios!