Pregunta

Esta es una pregunta para aquellos de ustedes desarrollar en un equipo de desarrolladores donde todos tiene bases de datos separadas. Estas versiones de su base de datos con control de origen y otras herramientas que traerán automáticamente las bases de datos dev actualizados a la última versión de la base de datos (esquemas, datos, SP, funciones, etc.).

OK Great! ¡Pero espera! Lo que si está desarrollando en la versión 4.0 de su software, pero ahora lo que necesita para cambiar ramas de la rama 3.2 para corregir un error? El esquema podría ser (casi con toda seguridad es) muy diferente a estas alturas ...

supongo que si fue a través de un esfuerzo extra para las secuencias de comandos de reversión de escritura, junto con las secuencias de comandos de cambio, esto podría funcionar. Pero eso parece como un montón de trabajo - es realmente vale la pena

¿Fue útil?

Solución

Mucho más fácil sería la creación de una nueva base de datos de 3,2-rama y el trabajo con que mientras se trabaja en el código 3.2-rama. No parece razonable para mí para requerir que cada desarrollador tiene exactamente una base de datos para trabajar con ellos.

Otros consejos

Me voy en una extremidad y supone que está la base de datos de versiones como un binario? Si todos los elementos de base eran en forma de código constructiva (por ejemplo, secuencias de comandos SQL y / o datos de texto vertederos), la solución sería sencilla, como se sugiere por Mark: almacenar estos activos como parte de la rama de desarrollo. Para trabajar en la versión 3.2, cambiar la rama, volver a ejecutar el crear secuencias de comandos y listo, 3,2 base de datos. La fusión sería tan fácil como con el código regular (o tan doloroso, dependiendo de su sistema de control de versiones de elección).

Aquí están algunas sugerencias para el trabajo en este modo:

  • Si la creación de las instancias de base de datos de texto es demasiado lento, hacer una caché en un volumen de disco compartido, introducido por el contenido de todos los archivos de esquema / datos (o la suma MD5 de los mismos).
  • Escriba un gancho pre-commit para asegurar que el esquema y los datos volcados en el caso de los desarrolladores son los mismos que los bajo control de versiones. Esto evita que las personas realicen cambios en su base de datos dev con una herramienta interactiva, y luego olvidarse de cometerlos.
  • Usted menciona guiones de cambio; tratarlos como un pasivo. Mientras que pueden ser requeridos por su escenario de implementación (por ejemplo, para los clientes que deseen actualizar in situ), que duplican la información de la historia de la versión de la base de datos, y por medio de duplicación de la ley de Murphy desincronización tarde o temprano. Trate de generar automáticamente las secuencias de comandos de cambio de los activos de bases de datos utilizando versionados "diff"; o si esto no se puede lograr, dedicar algunas pruebas unitarias graves a las actualizaciones de bases de datos.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top