¿Qué metodologías de control de versiones ayudan a los equipos de personas a rastrear los cambios en el esquema de la base de datos?
¿Qué metodologías de control de versiones ayudan a los equipos de personas a rastrear los cambios en el esquema de la base de datos?
Respuestas:
Hace solo un par de minutos estaba comprobando esto: una tabla que debería existir en todos los proyectos con una base de datos , parece bastante simple de poner en práctica, échale un vistazo:
Se llama schema_version (o migraciones, o lo que le convenga) y su propósito es realizar un seguimiento de los cambios estructurales o de datos en la base de datos. Una posible estructura (ejemplo en MySQL) es:
create table schema_version ( `when` timestamp not null default CURRENT_TIMESTAMP, `key` varchar(256) not null, `extra` varchar(256), primary key (`key`) ) ENGINE=InnoDB;
insertar en los valores de versión de esquema (
key
,extra
) ('001', 'versión de esquema');Depende de usted si agrega esta tabla desde el comienzo del proyecto o justo después de haber implementado la primera versión en un servidor provisional o de producción.
Siempre que necesite ejecutar un script SQL para cambiar la estructura de la base de datos o realizar una migración de datos, también debe agregar una fila en esa tabla. Y hágalo a través de una declaración de inserción al principio o al final de ese script (que está comprometido con el repositorio de código del proyecto).
...
Creo que el mejor método es generar la base de datos como parte de su proceso de compilación . Mantenga todos los scripts en control de fuente con el resto del código, y todos serán responsables de sus propios entornos.
De lo contrario, RedGate tiene una herramienta para integrar el control de origen en SSMS y SQL Compare es útil para comparar / sincronizar esquemas de MS SQL Server. Visual Studio Database Edition también tiene una herramienta integrada de comparación de esquemas .
Otra pregunta SO me llevó a Migrator Dot Net, que voy a comenzar a investigar durante mi abundante tiempo libre. Parece un buen método, pero podría ser más una inversión de tiempo / gastos generales de lo que está dispuesto a hacer.
eiefai ya mencionó una tabla que debería existir en todos los proyectos con una base de datos . Esta es una gran publicación de blog, pero en mi opinión solo va en parte a una solución de trabajo para el control de revisión de la base de datos. Creo que cualquier intento de "responder" esta pregunta en el mundo real necesita considerar alguna otra información sobre VCS y bases de datos:
Creo que hay un par de ángulos diferentes para abordar esta pregunta. El ángulo de "herramienta primero", creo, variará según la plataforma y las preferencias personales. Caso en cuestión: estoy usando un proyecto de base de datos en MS Visual Studio, pero no estoy seguro de que sea una excelente solución para MySQL. También conozco personas que se venden bastante con sus herramientas favoritas de Redgate, Erwin, Embarcadero, etc.
También hay un ángulo de "primer proceso" para esta pregunta, que (con suerte) será revisado en este sitio en las preguntas posteriores. Las piedras angulares en este proceso son poner su esquema bajo control de origen y administrar los cambios de manera que pueda aplicar los cambios de esquema de la versión "x" a la versión "y" más o menos bajo demanda.
Una respuesta definitiva a este tema terminará pareciéndose a un libro, por lo que probablemente valga la pena comenzar haciendo referencia a uno: Redgate publicó recientemente un libro electrónico gratuito llamado " La guía de Red Gate para el desarrollo basado en equipo de SQL Server ", y aunque hay hay mucho para debatir, es un buen lugar para comenzar a debatir, en mi opinión. Contrariamente al nombre, gran parte del material de este libro es lo suficientemente general como para aplicarse a cualquier base de datos (no solo a SQL Server) y a cualquier conjunto de herramientas (no solo Redgate). Si aún no has visto esto, definitivamente vale la pena echar un vistazo, al menos.
Finalmente, probablemente valga la pena vincular en la "respuesta heredada" de stackoverflow .
SchemaCrawler es mi herramienta para producir un archivo de texto con todos los objetos de esquema de base de datos. Diseñé esta salida de texto para que sea legible por humanos, así como diferible frente a una salida similar de otro servidor.
En la práctica, lo que he encontrado es que generar un archivo de texto del esquema de la base de datos es útil cuando se hace como parte de la compilación. De esta manera, puede verificar el archivo de texto en su sistema de control de código fuente y tener un historial de versiones de cómo ha evolucionado su esquema con el tiempo. SchemaCrawler está diseñado para automatizar esto también, desde la línea de comandos.