none
Actualización de Base de datos tipo Blue-Green RRS feed

  • Pregunta

  • Tenemos despliegues tipo Blue-Green:

    https://martinfowler.com/bliki/BlueGreenDeployment.html

    Cómo podríamos actualizar una BBDD (SQL Server) en producción sin que afecte al usuario ?

    De Andrés Descalzo:

    propuesta quizas a "lo atamos con alambre"

    1: si agregas un nuevo campo, este tendría que tener un valor por defecto para lo viejo o seria nuleable. no hay problema

    2: cambio de nombre o tipo: creas el campo, la nueva version escribe en este campo y luego (ver ultimo punto)

    3:  borras un campo porque ya es obsoleto: (ver ultimo punto)

    4: agregas una nueva tabla y tiene relaciones con tablas actuales: creas la tabla, los indices y demas (ver ultimo punto)

    5: refactor de una tabla: renombraría la tabla y crearía una vista con el nombre actual para acceso solo lectura (pensado rapido) y creo la nueva tabla y vuelco los datos actuales, y (ver ultimo punto). pero tendría el acceso readonly  a lo viejo, por el tema de el indice primario, si es que hay.

    ultimo punto: tendría que tener un evento donde se sabe que todas las versiones viejas estan de baja, y realizar las tareas pendientes

    el problema aca es el tiempo de este paso, la creación de indices y demasquizas es mas facil duplicar la parte a modificar y dejarla como solo lectura

    ¡¡aclaracion!! es una idea pensada en 5 min, de seguro que tiene muchos issues y no es aplicable en todos los casos y quizas hay un experto y dice "de que esta hablando este muchacho"

    miércoles, 25 de septiembre de 2019 5:06

Todas las respuestas

  • Hola Miriam,

    con actualizar la BBDD te referis al motor de base de datos? O al modelo de datos en si?

    martes, 22 de octubre de 2019 16:34
  • Actualización del modelo (DDL) de una base de datos.
    martes, 22 de octubre de 2019 20:42
  • con respecto a la actualizacion depende que estes modificando.. Como haces para evitar downtime? depende del cambio, tene en cuenta que SQL Server es una base de datos relacional lo que significa que siempre bloqueos vas a adquirir para proteger la integridad de tus datos. Si estas cambiando el nombre de una tabla o la estructura y la renombras downtime vas a tener.. a no ser que crees una tabla nueva y temporalmente puedas redirigir tus lecturas (No escrituras!) a esa tabla o bien crees un snapshot de tu base de datos y redirecciones las lecturas a esa "copia". De todas formas depende mucho del cambio que necesites hacer.

    Espero te sirva!

    miércoles, 23 de octubre de 2019 20:15