stringtranslate.com

Diseño de bases de datos evolutivas

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 al mismo tiempo, por lo tanto, existe la necesidad de 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 respaldar las metodologías ágiles para el desarrollo de software. Estas técnicas de desarrollo se aplican en sistemas que se encuentran en la etapa de preproducción , así como en sistemas que ya se han lanzado. Estas técnicas no solo cubren 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 también 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

Después de utilizar el modelo en cascada durante mucho tiempo, la industria del software ha sido testigo de un aumento en la adopción de métodos ágiles para el desarrollo de software. Las metodologías ágiles no asumen 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 en contraste con 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 es testigo del ciclo de vida completo del desarrollo del software a pesar de que las iteraciones son de corta duración que puede variar entre semanas y algunos meses. [1]

Antes de la adopción de estas metodologías, todo el sistema se diseñaba antes de empezar a desarrollar el código. El mismo principio se aplicó también al esquema de la base de datos, donde se consideró que se derivaba de los requisitos del software que, a su vez, se desarrollaban mediante la colaboración entre el cliente, los usuarios finales, los analistas de negocios, etc. y no se esperaba que estos requisitos cambiaran con el progreso en el desarrollo del software. Este enfoque resultó ser engorroso porque, a medida que transcurría el tiempo, las redundancias en el esquema de la base de datos existente en forma de filas o columnas sin usar eran evidentes. 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 de naturaleza iterativa y se han vuelto inmensamente populares en las últimas dos décadas. El diseño evolutivo de bases de datos tiene como objetivo construir el esquema de la base de datos a lo largo del proyecto en lugar de construir todo el esquema de la base de datos al comienzo del proyecto. Este método de diseño de bases de datos puede capturar y abordar de manera eficaz 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 crear sus bases de datos de forma iterativa. A continuación, se ofrece una breve descripción general de las cinco técnicas.

Refactorización de bases de datos

La refactorización es el proceso de realizar cambios en el programa sin afectar la funcionalidad del mismo. 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 la funcionalidad y la información almacenada en la base de datos. [2] El objetivo principal de la refactorización de bases de datos es mejorar el diseño de la base de datos para que esté más sincronizada con los requisitos cambiantes. El usuario puede modificar tablas , vistas , procedimientos almacenados y activadores . La dependencia entre la base de datos y las aplicaciones externas hacen que la refactorización de bases de datos sea un desafío.

Modelado evolutivo de datos

El modelado de datos es la técnica de identificar entidades , asociar atributos a las entidades y decidir la estructura de datos para representar los atributos. [3] En el escenario de base de datos tradicional, 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 de modelado de datos se realiza de manera iterativa, es decir, se desarrollan múltiples modelos de datos, cada modelo 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 principales del desarrollo ágil. [4]

Pruebas de regresión de bases de datos

Siempre que se añade una nueva funcionalidad a un sistema, es esencial verificar que la actualización no corrompa o inutilice el sistema. En una base de datos, la lógica empresarial 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. La prueba de regresión es el proceso de ejecutar todos los casos de prueba cada vez que se añade una nueva característica al sistema. El desarrollo de prueba primero (TFD) es una forma de prueba de regresión que se sigue en el diseño de bases de datos evolutivas. Los pasos involucrados en el enfoque TFD son, [3]

Gestión de la configuración de los artefactos de la base de datos

La gestión de la configuración es un registro detallado de las versiones y actualizaciones que se han aplicado a cualquier sistema. La gestión de la configuración es útil para revertir actualizaciones y cambios que han afectado al sistema de manera negativa. Para garantizar que se puedan revertir las actualizaciones realizadas en la refactorización de la base de datos, es importante mantener los artefactos de la base de datos como los scripts de lenguaje de definición de datos , los archivos de modelos de datos, los datos de referencia , los procedimientos almacenados, etc. en un sistema de gestión de la configuración. [5]

Sandboxes para desarrolladores

Un sandbox es un entorno completamente funcional en el que se puede construir, probar y ejecutar el sistema. Para realizar cambios en el esquema de la base de datos de manera evolutiva, lo ideal es que cada desarrollador tenga su propio sandbox físico, copia del código fuente y una copia de la base de datos . En un entorno sandbox, el desarrollador puede realizar cambios en el esquema de la base de datos y ejecutar pruebas sin afectar el trabajo de otros desarrolladores y otros entornos. Una vez que el cambio se ha implementado con éxito, se promueve al entorno de preproducción donde se realizan pruebas de aceptación y, una vez que las pruebas de aceptación son exitosas, se implementa en producción .

Ventajas y desventajas

Ventajas

  1. Alta calidad del diseño de bases de datos: en el diseño de bases de datos evolutivas, el desarrollador realiza pequeños cambios en el esquema de la base de datos de manera incremental y esto logra un esquema de base de datos altamente optimizado .
  2. Manejo de cambios: en un enfoque de base de datos tradicional , se dedica mucho tiempo a remodelar y reestructurar la base de datos cuando cambian los requisitos. En la técnica de base de datos evolutiva, el esquema de la base de datos se ajusta periódicamente para mantenerse al día con los requisitos cambiantes. Por lo tanto, la técnica de diseño de base de datos evolutiva es más adecuada para manejar los requisitos cambiantes.
  3. Funcionamiento garantizado del sistema en todo momento: el enfoque de diseño de bases de datos evolutivas sigue el modelo de desarrollo de prueba inicial , en el que se prueba el funcionamiento completo de un sistema antes y después de implementar una actualización. Por lo tanto, se garantiza que el sistema siempre funcione.
  4. Compatible con el desarrollo de software: la industria de TI está progresando hacia un método ágil de desarrollo de software y el diseño de bases de datos evolutivas garantiza que el desarrollo de datos esté sincronizado con el desarrollo de software.
  5. Esfuerzo general reducido: en un entorno evolutivo solo se implementa la funcionalidad que se requiere en ese momento y no más.

Desventajas

  1. Impedimentos culturales: el enfoque de diseño de bases de datos evolutivas es un concepto relativamente nuevo y muchos profesionales de datos bien calificados aún defienden el enfoque tradicional. Por lo tanto, la mayoría de las bases de datos todavía se diseñan de manera serial y el diseño de bases de datos evolutivas aún debe ganar apoyo y tracción entre los profesionales de datos experimentados.
  2. Requiere una curva de aprendizaje: la mayoría de los desarrolladores están más familiarizados con el enfoque tradicional y lleva tiempo aprender el diseño evolutivo, ya que no es intuitivo.
  3. Complejo: cuando la base de datos tiene muchas dependencias externas, realizar cambios en el esquema se vuelve aún más complicado, ya que las dependencias externas también deben actualizarse para hacer frente a los cambios realizados en el esquema de la base de datos. Con el aumento en el número de dependencias, el enfoque de diseño de bases de datos evolutivo se vuelve extremadamente complejo.

Comparación con el diseño de bases de datos tradicionales

Las técnicas de diseño de bases de datos tradicionales no admiten cambios como las técnicas de diseño de bases de datos evolutivas. "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 muestra una lista de herramientas que proporcionan la funcionalidad de diseñar y desarrollar una base de datos de manera evolutiva.

Véase también

Referencias

  1. ^ abcd "Diseño de bases de datos evolutivas" . Consultado el 14 de septiembre de 2016 .
  2. ^ Vial, G. (1 de noviembre de 2015). "Refactorización de bases de datos: lecciones aprendidas en las trincheras". IEEE Software . 32 (6): 71–79. doi :10.1109/MS.2015.131. ISSN  0740-7459. S2CID  15349486.
  3. ^ ab Ambler, Scott; Sadalage, Pramod J (2006). Refactorización de bases de datos: diseño evolutivo de bases de datos . Addison Wesley Professional. ISBN 978-0-321-29353-4.
  4. ^ "Los principios del modelado ágil (AM)". www.agilemodeling.com . Consultado el 22 de septiembre de 2016 .
  5. ^ "Mejores prácticas para bases de datos ágiles y evolutivas". agiledata.org . Consultado el 14 de septiembre de 2016 .
  6. ^ abcd Datos, Big data, Gracias a Dios por el chip de silicio: A. BREVE historia de; motor, Secretos de los hackers de coches revelados: Agarrar el motor de un tanque en un clásico; Más allá del genoma: TE HAN DESCODIFICADO, otra vez. "Diseño de bases de datos evolutivo vs. tradicional" . Consultado el 14 de septiembre de 2016 .