Database Migrations, también conocido como Schema Migrations o simplemente Migrations, es un concepto de versionamiento y abstracción de modelado de base de datos. Al igual que Git, por ejemplo, Migrations permite básicamente realizar operaciones de cambio de versiones entre la estructura de base de datos. Además, favorece el almacenamiento de las abstracciones de su estructura, […]
Database Migrations, también conocido como Schema Migrations o simplemente Migrations, es un concepto de versionamiento y abstracción de modelado de base de datos.
Al igual que Git, por ejemplo, Migrations permite básicamente realizar operaciones de cambio de versiones entre la estructura de base de datos. Además, favorece el almacenamiento de las abstracciones de su estructura, lo que permite su implementación en muchos lenguajes y el soporte a diferentes sistemas de bases de datos.
Si aún no has utilizado esta solución o deseas ampliar tus conocimientos sobre ella, ¡sigue leyendo!
¿Para qué sirven las Migrations?
Cualquiera que desarrolle intensamente utilizando base de datos, más específicamente SQL, sabe muy bien que los cambios en la estructura y en los metadatos de un sistema ocurren todo el tiempo.
Por lo tanto, uno de los grandes desafíos en el área de la programación es precisamente el momento del mantenimiento del software y la gestión de cambios. Eso es porque hay docenas de metodologías, estándares, frameworks, herramientas y todo lo demás que ayuda en este proceso.
Es precisamente en este contexto que surgió Migrations, para facilitar el mantenimiento diario.
Imagina un escenario en el que eres el desarrollador de un proyecto PHP. ¿No sería mucho más fácil si pudieras estructurar tu base de datos usando las funciones del propio PHP? Es más: realizar operaciones, ¿cómo subir todo el modelado de la base de datos usando un solo comando?
Imaginemos ahora otra escena, que sería la gigantesca facilidad de compartir este archivo de modelado con otros desarrolladores, que tendrían la copia exacta de la estructura de la base de datos con un solo comando, incluso en futuros cambios de estructura.
Porque estos son los beneficios y facilidades que ofrece Migrations.
¿Cuál es la utilidad de las Migrations?
Al ser un concepto, su uso varía según la herramienta o el framework que se utilice. En el mundo de los frameworks, por ejemplo, las Migrations son un elemento prácticamente obligatorio.
Los frameworks como Laravel, Django, Ruby on Rails, .Net y Node.js tienen implementaciones muy conocidas de Migrations, estando siempre presentes en proyectos que utilizan estas tecnologías.
El uso en cada tipo de framework y tecnología puede cambiar, pero normalmente se utiliza a través de una línea de comandos o CLI del propio framework.
La aplicación de Migrations también puede cambiar, pero lo más común es tener muchos archivos, donde cada uno representa una versión de la estructura de la base de datos.
Dentro de estos archivos, hay una abstracción del modelado de la base de datos, es decir, una representación de su estructura en el lenguaje en el que fue implementada. A través de ella, es posible hacer todo, o casi todo, lo que normalmente haríamos para modelar una base de datos si utilizáramos, por ejemplo, un archivo SQL.
El más común es que haya dos bloques de código con funciones principales dentro de cada archivo de las Migrations. Uno de ellos es el responsable de aplicar los cambios, normalmente llamados up; mientras que el otro se utiliza para revertirlo, llamado down.
El up se usa cuando se carga la Migration como una nueva versión, y el down cuando se revierten los cambios de esta.
Cada nuevo cambio que aparece en el modelado – como la adición de un nuevo campo o tabla – crea un nuevo archivo, indicando la versión reciente del banco.
Obviamente, no son solo para hacer creates, alter y drop. Cualquier modificación que incluya la inserción de nuevos registros, generalmente de metadatos, también puede ser realizada por Migrations.
¿Cuáles son las ventajas de las Migrations?
Una de las ventajas es que no es necesario especificar la base de datos utilizada en su estructura de código, debido a que la información es abstracta. Es decir, representan el modelado de la base de datos, y esto abre las puertas para el soporte de muchos tipos.
Otro diferencial es el hecho de abstraer el SQL del modelado de la base de datos; además de acelerar el proceso de desarrollo, lo que permite la compatibilidad con muchos modelos.
Migrations sigue manteniendo un registro de los cambios de versión en estas bases de datos, lo que le permite volver a las versiones antiguas – haciendo el día a día de los profesionales mucho más fácil. Todavía cuando hay que resolver un error, lo que normalmente quita el sueño a los desarrolladores.