El diseño evolutivo de bases de datos implica mejoras incrementales en el esquema de la base de datos para que pueda actualizarse continuamente con los cambios, reflejando los requisitos del cliente. Personas de todo el mundo trabajan en el mismo software simultáneamente; por lo tanto, se necesitan técnicas que permitan una evolución fluida de la base de datos a medida que se desarrolla el diseño. Estos métodos utilizan la refactorización automatizada y la integración continua para dar soporte a las metodologías ágiles de desarrollo de software. Estas técnicas de desarrollo se aplican tanto a sistemas en fase de preproducción como a sistemas ya lanzados. Estas técnicas no solo abarcan los cambios relevantes en el esquema de la base de datos según las necesidades cambiantes del cliente, sino también la migración de datos modificados a la base de datos y la personalización del código de acceso a la base de datos en consecuencia, sin cambiar la semántica de los datos . [ 1 ]
Historia
Tras utilizar el modelo en cascada durante mucho tiempo, la industria del software ha experimentado un aumento en la adopción de métodos ágiles para el desarrollo de software. Las metodologías ágiles no presuponen que los requisitos sean permanentes en ninguna etapa del ciclo de vida del software . Estos métodos están diseñados para admitir cambios esporádicos, a diferencia de la técnica de diseño en cascada. Una parte importante de este enfoque es el desarrollo iterativo , donde todo el ciclo de vida del software se ejecuta varias veces durante la vida de un proyecto. Cada iteración abarca el ciclo de vida completo del desarrollo de software, aunque las iteraciones sean de corta duración, pudiendo variar entre semanas y unos pocos meses. [ 1 ]
Antes de la adopción de estas metodologías, todo el sistema se diseñaba antes de comenzar a desarrollar el código. El mismo principio se aplicaba también al esquema de la base de datos, que se consideraba derivado de los requisitos del software , los cuales, a su vez, se desarrollaban mediante la colaboración entre el cliente, los usuarios finales, los analistas de negocio, etc., y no se esperaba que estos requisitos cambiaran con el avance del desarrollo del software. Este enfoque resultó engorroso, ya que, con el paso del tiempo, se hicieron evidentes las redundancias en el esquema de la base de datos existente en forma de filas o columnas sin usar. Esta redundancia, junto con los problemas de calidad de los datos, se convirtió en un asunto costoso. Se concluyó que la práctica de no intercalar el diseño con la construcción y las pruebas era altamente ineficiente. [ 1 ]
Técnicas
Como se mencionó en la sección anterior, los métodos evolutivos son iterativos y se han popularizado enormemente en las últimas dos décadas. El diseño evolutivo de bases de datos busca construir el esquema de la base de datos a lo largo del proyecto, en lugar de crearlo por completo al inicio. Este método permite captar y gestionar eficazmente los requisitos cambiantes de los proyectos.
Existen cinco técnicas de diseño de bases de datos evolutivas que pueden ayudar a los desarrolladores a construir sus bases de datos de forma iterativa. A continuación, se ofrece una breve descripción general de estas cinco técnicas.
Refactorización de bases de datos
La refactorización es el proceso de realizar cambios en un programa sin afectar su funcionalidad. La refactorización de bases de datos es la técnica de implementar pequeños cambios en el esquema de la base de datos sin afectar su funcionalidad ni la información almacenada en ella. [ 2 ] El objetivo principal de la refactorización de bases de datos es mejorar su diseño para que se adapte mejor a los requisitos cambiantes. El usuario puede modificar tablas , vistas , procedimientos almacenados y disparadores . La dependencia entre la base de datos y las aplicaciones externas dificulta la refactorización de bases de datos.
Modelado de datos evolutivo
El modelado de datos es la técnica de identificar entidades , asociarles atributos y decidir la estructura de datos para representarlos. [ 3 ] En el escenario tradicional de bases de datos, se crea un modelo de datos lógico al principio para representar las entidades y sus atributos asociados. En el modelado de datos evolutivo, la técnica se realiza de forma iterativa, es decir, se desarrollan múltiples modelos de datos, cada uno de los cuales representa un aspecto diferente de la base de datos. Este tipo de técnica de modelado de datos se practica en un entorno ágil y es uno de los principios fundamentales del desarrollo ágil. [ 4 ]
Pruebas de regresión de bases de datos
Siempre que se agrega una nueva funcionalidad a un sistema, es esencial verificar que la actualización no corrompa ni deje el sistema inutilizable. En una base de datos, la lógica de negocio se implementa en procedimientos almacenados , reglas de validación de datos e integridad referencial , y deben probarse exhaustivamente cuando se implementa cualquier cambio en el sistema. Las pruebas de regresión son el proceso de ejecutar todos los casos de prueba cada vez que se agrega una nueva característica al sistema. El desarrollo basado en pruebas (TFD) es una forma de pruebas de regresión que se sigue en el diseño evolutivo de bases de datos. Los pasos involucrados en el enfoque TFD son, [ 3 ]
- Antes de agregar una nueva función al sistema, agregue una prueba al conjunto de casos de prueba de manera que el sistema falle la prueba.
- Ejecuta las pruebas, ya sea el conjunto completo de casos de prueba o solo un subconjunto, y asegúrate de que la prueba recién agregada efectivamente falle.
- Actualiza la función para que la prueba pase.
- Vuelve a ejecutar las pruebas para asegurarte de que todas se ejecutan correctamente y de que el sistema no está averiado.
Gestión de la configuración de los artefactos de la base de datos
La gestión de la configuración consiste en un registro detallado de las versiones y actualizaciones aplicadas a cualquier sistema. Resulta útil para revertir actualizaciones y cambios que hayan afectado negativamente al sistema. Para garantizar que se puedan revertir las actualizaciones realizadas durante la refactorización de la base de datos, es importante mantener los artefactos de la base de datos, como los scripts del lenguaje de definición de datos , los archivos del modelo de datos, los datos de referencia , los procedimientos almacenados, etc., en un sistema de gestión de la configuración. [ 5 ]
entornos de pruebas para desarrolladores
Un entorno de pruebas (sandbox) es un entorno completamente funcional donde se puede construir, probar y ejecutar el sistema. Para realizar cambios en el esquema de la base de datos de forma evolutiva, es ideal que cada desarrollador tenga su propio entorno de pruebas físico, una copia del código fuente y una copia de la base de datos . En un entorno de pruebas, el desarrollador puede modificar el esquema de la base de datos y ejecutar pruebas sin afectar el trabajo de otros desarrolladores ni otros entornos. Una vez implementado el cambio con éxito, se traslada al entorno de preproducción , donde se realizan las pruebas de aceptación , y tras superarlas, se implementa en producción .
Ventajas y desventajas
Ventajas
- Diseño de base de datos de alta calidad: En el diseño evolutivo de bases de datos, el desarrollador realiza pequeños cambios en el esquema de la base de datos de forma incremental, lo que permite obtener un esquema de base de datos altamente optimizado .
- Gestión del cambio: En un enfoque tradicional de bases de datos , se invierte mucho tiempo en remodelar y reestructurar la base de datos cuando cambian los requisitos. En la técnica de bases de datos evolutivas, el esquema de la base de datos se ajusta periódicamente para adaptarse a los requisitos cambiantes. Por lo tanto, la técnica de diseño de bases de datos evolutivas es más adecuada para gestionar los requisitos cambiantes.
- Funcionamiento garantizado del sistema en todo momento: El enfoque de diseño de bases de datos evolutivas sigue un modelo de desarrollo basado en pruebas , en el que se comprueba el funcionamiento completo del sistema antes y después de implementar una actualización. Por lo tanto, se garantiza que el sistema funcione siempre.
- Compatible con el desarrollo de software: La industria de TI está avanzando hacia la metodología ágil de desarrollo de software, y el diseño evolutivo de bases de datos garantiza que el desarrollo de datos esté sincronizado con el desarrollo de software.
- Reducción del esfuerzo general: En un entorno evolutivo, solo se implementa la funcionalidad necesaria en ese momento y nada más.
Desventajas
- Obstáculos culturales: El enfoque de diseño evolutivo de bases de datos es un concepto relativamente nuevo, y muchos profesionales de datos altamente cualificados aún defienden el enfoque tradicional. Por lo tanto, la mayoría de las bases de datos todavía se diseñan de forma secuencial, y el diseño evolutivo aún no ha logrado consolidarse entre los profesionales de datos con experiencia.
- Requiere un periodo de aprendizaje: la mayoría de los desarrolladores están más familiarizados con el enfoque tradicional y se necesita tiempo para aprender el diseño evolutivo, ya que no es intuitivo.
- Complejo: Cuando la base de datos tiene muchas dependencias externas, modificar el esquema se vuelve mucho más complicado, ya que las dependencias externas también deben actualizarse para adaptarse a los cambios realizados en el esquema de la base de datos. Con el aumento del número de dependencias, el enfoque de diseño evolutivo de bases de datos se vuelve extremadamente complejo.
Comparación con el diseño de bases de datos tradicionales
La técnica tradicional de diseño de bases de datos no admite cambios como la técnica de diseño evolutivo de bases de datos. «Desafortunadamente, la comunidad de datos tradicional asumió que evolucionar el esquema de la base de datos es algo difícil de hacer y, como resultado, nunca pensó en cómo hacerlo». [ 1 ] En cierto modo, el diseño evolutivo es mejor para los desarrolladores de aplicaciones y el diseño tradicional es mejor para los profesionales de datos. [ 6 ]
Herramientas
A continuación se presenta una lista de herramientas que proporcionan la funcionalidad para diseñar y desarrollar una base de datos de forma evolutiva.
Véase también
Referencias
- 1 2 3 4 "Diseño de bases de datos evolutivas" . Recuperado el 14 de septiembre de 2016 .
- ↑ Vial, G. (2015-11-01). "Refactorización de bases de datos: lecciones desde las trincheras". IEEE Software . 32 (6): 71– 79. doi : 10.1109/MS.2015.131 . ISSN 0740-7459 . S2CID 15349486 .
- 1 2 Ambler, Scott; Sadalage, Pramod J (2006). Refactoring Database: Evolutionary Database Design . Addison Wesley Professional. ISBN 978-0-321-29353-4.
- ↑ "Los principios del modelado ágil (AM)" . www.agilemodeling.com . Consultado el 22 de septiembre de 2016 .
- ↑ "Mejores prácticas de bases de datos evolutivas/ágiles" . agiledata.org . Consultado el 14 de septiembre de 2016 .
- 1 2 3 4 Datos, Big; datos, Gracias a Dios por el chip de silicio: A. BREVE historia de; motor, Secretos de hackers de coches revelados: Agarrando un motor de tanque en un clásico; Más allá del genoma: HAS SIDO DECODIFICADO, otra vez. "Diseño de bases de datos evolutivo vs. tradicional" . Recuperado el 14-09-2016 .
- teoría de bases de datos