Hola,
Hace un tiempo yo me planteaba lo mismo, y la sugerencia que me dieron y que
después de hacerlo un tiempo me parece excelente es:
1) Tener tres entornos: desarrollo, test y producción.
2) Bajar a desarrollo un backup de producción (Probablemente con datos no
reales pero representativos de los casos de prueba), a desarrollo antes de
empezar con los cambios y otra a test. Te quedás con el dump de test.
3) Mientras vas desarrollando, vas generando un script de creación /
modificación de la estructura. Lo vas subiendo al controlador de versiones
(Yo uso cvs, imagino que se puede hacer con cualquier otro)
4) Hacés un script que actualice el cvs y ejecute todos los scripts que se
agregaron o cambiaron .Usando cvs y bash sería algo así como:
for i in $i(cvs -q update|cut -d" "-f1);do
echo $i|psql db
done;
5) Probás la aplicación en test. Si no funciona bajás el dump, cambiás el
script de creación y volvés a ejecutar el bash.
6) Cuando lo tenés funcionando bien ejecutás el bash en producción.
Saludos.
Pablo.
PD: Si a alguien se le ocurre como hacer un rollback de esto de una forma
más práctica o rápida que restaurando un dump, les agradecería que me lo
informen!!!
----- Original Message -----
From: "Sam" <[EMAIL PROTECTED]>
To: <pgsql-es-ayuda@postgresql.org>
Sent: Tuesday, August 12, 2008 10:32 AM
Subject: Re: [pgsql-es-ayuda] Actualizar estructura de una BD en base a otra
Cualquier cambio que se haga a una bd tiene que hacerse mediante
scripts, nunca con editores gráficos, básicamente, porque es la única
forma de saber que lo que se desarrolló, y posteriormente testeó en QA
y UAT es exactamente lo mismo que se está tirando a producción.
Otro tema muy importante que viene a colacion con esto es el
versionado, te recomiendo este artículo:
http://www.codinghorror.com/blog/archives/001050.html
y en particular, los cinco links que tiene al blog de K. Scott Allen,
que toca unos cuantos puntos interesantes sobre el tema.
2008/8/12 el-PRiNCiPiTo <[EMAIL PROTECTED]>:
Hola, no se ni que titulo poner en el post porque no se si esta forma de
trabajo que tenemos es muy buena. Yo creo que no así que agradezco
cualquier
sugerencia.
Os explico a que me refiero con la forma de trabajo:
Estamos desarrollando un programa que almacena los datos en una base de
datos postgresql (la versión es 8.2). El programa ya esta funcionando pero
vamos añadiéndole funciones, lo que hace que tengamos que añadir tablas o
campos a las tablas ya creadas en el base de datos.
Entonces tenemos una "copia" de la base de datos que se usa en el
programa
en el equipo en que se desarrolla el programa. Yo añado lo que necesito a
esta base de datos y cuando actualizo el programa añado a mano cada tabla
o
campo nuevo en la base de datos "verdadera".
El problema de esto es que, ademas de ser muy laborioso, no es nada
practico ya que es difícil saber si has añadido todo lo nuevo.
Entonces mi pregunta es si hay alguna forma de "actualizar" la base de
datos del programa usando la "nueva versión" y conservando los datos que
ya
hay en la base de datos ya que los datos que tengo en la nueva son sólo
para
pruebas y los de la antigua son datos reales que no deben modificarse.
Espero haberme explicado, yo creo que todo este proceso que hacemos es
demasiado complicado y que debe haber un sistema mejor para trabajar así
alguien me sugiere otra forma de trabajo que solucione este problema me
serviría igualmente.
Muchas gracias a todos.
--
TIP 5: ¿Has leído nuestro extenso FAQ?
http://www.postgresql.org/docs/faqs.FAQ.html
--
TIP 2: puedes desuscribirte de todas las listas simultáneamente
(envía "unregister TuDirecciónDeCorreo" a [EMAIL PROTECTED])
--
TIP 3: Si encontraste la respuesta a tu problema, publícala, otros te lo
agradecerán