La gestión de cambios en bases de datos es el proceso de determinar
qué cambios se tienen que realizar en una base de datos, especificar dichos cambios, evaluar sus efectos y desplegarlos.
Es posible que se necesiten cambios en esquemas de base de datos por varias razones, incluidas las siguientes: nuevos requisitos de la empresa, fusiones, cambios legislativos y cambios en las aplicaciones. Los cambios en esquemas pueden implicar cambios tanto en objetos lógicos de base de datos (por ejemplo, tablas, columnas, claves primarias y restricciones) como en objetos físicos de base de datos (por ejemplo bases de datos, espacios de tabla, agrupaciones de almacenamientos intermedios e índices). El hecho de modificar objetos de bases de datos, independientemente de su tipo, no suele ser una operación trivial. Los cambios suelen afectar a objetos dependientes y en ocasiones a los datos subyacentes. El proceso de analizar y mantener estas dependencias es tradicionalmente un proceso que consume mucho tiempo y que se presta a errores.
Supongamos que tenemos un entorno de base de datos típico, como el que se muestra
en la siguiente figura, en el que se incorporan inicialmente nuevas aplicaciones y
cambios en el diseño de la base de datos en un sistema de desarrollo dedicado, luego
se validan en un sistema de prueba y finalmente se despliegan en el sistema de
producción de la organización.
Figura 1. Entorno de base de datos típico
Aunque el diseño general de los sistemas de desarrollo, prueba y producción suele ser bastante parecido, las reglas empresariales que controlan cada sistema suelen ser distintas. La base de datos de producción funciona bajo reglas empresariales estrictas y debe estar en ejecución 24 horas al día, 7 días por semana. La base de datos de prueba también funciona bajo reglas empresariales estrictas para asegurar que lo que se prueba se ejecutará correctamente en producción. Sin embargo, la base de datos de prueba no necesita el mismo nivel de disponibilidad que el sistema de producción. En contraste con los sistemas de producción y de prueba, la base de datos de desarrollo suele tener menos reglas empresariales porque los desarrolladores tienen que efectuar cambios constantemente. El proceso de gestión de estos distintos sistemas de bases de datos suele requerir que el DBA:
- Sincronice el sistema de desarrollo o el sistema de prueba de modo que sea una
copia en un punto en el tiempo del sistema de producción
- Promocione (o migre) los cambios de un sistema a otro
- Deshaga cambios realizados en un entorno de base de datos
- Cree un modelo base histórico para su futura consulta
- Realice una auditoría de los cambios para comprender sus efectos
- Gestione el ciclo de vida de los cambios estructurales en las bases de datos
- Compare dos conjuntos de objetos para determinar las diferencias entre los mismos
- Analice el impacto de un cambio propuesto en una base de datos
- Gestione el despliegue de cambios en la base de datos de destino
- Cargue y descargue datos cuando los cambios requieran que los objetos se descarten y se vuelvan a crear
- Mueva datos
- Vuelva a vincular paquetes que han pasado a ser inoperativos como resultado de los cambios
- Renueve o vuelva a definir objetos dependientes
La gestión de cambios suele ser un proceso difícil al que el administrador de la base de datos debe dedicar mucho tiempo porque presenta los siguientes retos:
- El hecho de no reconocer un cambio en el esquema resulta peligroso para la integridad del sistema.
- Es difícil encontrar todos los elementos relacionados con el cambio en el esquema.
- Analizar el impacto de un cambio en el esquema lleva mucho tiempo.
- Para migrar datos es necesaria una planificación minuciosa y exhaustiva previa
a la migración real.
- Para aplicar cambios en una base de datos es necesario tener un conocimiento experto de la
estructura de la base de datos.
- El aprendizaje de la sintaxis de SQL puede resultar difícil.
El software de gestión de cambios puede facilitar el proceso de gestión de cambios ya que aumenta su fiabilidad y reduce la posibilidad de que se produzcan errores humanos.