Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-12-2011
erasmo_ga erasmo_ga is offline
Registrado
NULL
 
Registrado: nov 2011
Posts: 2
Poder: 0
erasmo_ga Va por buen camino
¿Cómo versionar el esquema o los metadatos de base de datos?

Saludos a toda la comunidad,

busco un consejo de como versionar el esquema de la base de datos firebird, tengo una aplicación en producción pero cada día tengo que hacer cambios a la estructura de la base de datos, no se por donde abordar el tema de replicar los cambios a las bases de datos de las personas que ya tienen mi aplicación.

Mi idea es tener una dato que aloje la versión de la base de datos,. y que la aplicación automáticamente verifique que la base de datos este actualizada, si no es así, que aplique los scripts que ponga al día la base de datos con los últimos cambios.

FB 2.5
Delphi XE
Win7

Gracias!
Responder Con Cita
  #2  
Antiguo 07-12-2011
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Más o menos es lo que he hecho yo alguna vez.

1) Un campo en la Base de Datos que marca la versión.
2) Utilizando herramientas específicas para ello (DataBase Comparer), a cada versión obteníamos el Script que permitía actualizar la Base de Datos a la ueva versión.
3) Con cada actualización de la aplicación se incluían los Scripts convenientemente numerados.
4) Al ejecutar la actualización se lanzaban los Scripts necesarios (de forma ordenada) para pasar de la versión actual a la nueva.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 07-12-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Más o menos como indica Neftalí, tenemos una tabla que cuando se crea la BD almacenamos la versión y subversión de la misma, además de la fecha y otros campos.
Luego, cuando sacamos actualizaciones, éstas llevan también un número de versión y subversión que se compara con el de la BD que se va a actualizar, se ejecutan sólo los que son más nuevas que los de la propia BD y finalmente se actualiza la BD con los datos de la última ejecutada.
La diferencia es que nosotros tenemos un programita que hicimos a propósito para realizar el proceso.
Es de hace muchos años, pero nunca ha fallado porque es algo muy simple.
La tabla es esta:

Código SQL [-]
CREATE TABLE TBSENTENCIAS_SQL_EJECUTADAS(
  NUMEROPRINCIPAL Integer NOT NULL,
  NUMEROSECUNDARIO Integer DEFAULT 1 NOT NULL,
  FECHAEJECUCION Timestamp DEFAULT "Now",
  USUARIO DOMCODIGONONULO,
  PUESTOTRABAJO DOMCODIGONONULO,
  PRIMARY KEY (NUMEROPRINCIPAL,NUMEROSECUNDARIO)
);

Aunque hay muchas formas de hacer todo esto.
Responder Con Cita
  #4  
Antiguo 07-12-2011
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
A parte de eso, utiliza una herramienta de control de versiones, como subversion o mejor aun mercurial o git.

Lo que hago es que tengo un archivo SQL con el esquema completo de la BD y todos los cambios se hacen sobre el. Luego tengo varios Upgrade-NUMVERSION.sql que tienen los cambios.


Al combinar ambas cosas, tienes un versionado completo.
__________________
El malabarista.
Responder Con Cita
  #5  
Antiguo 08-12-2011
erasmo_ga erasmo_ga is offline
Registrado
NULL
 
Registrado: nov 2011
Posts: 2
Poder: 0
erasmo_ga Va por buen camino
Lightbulb

De ante mano muchas gracias por las respuestas y consejos, sus respuestas han sido de gran ayuda; me iré sobre la primera recomendación:

1) Agregar en la base de datos destino un campo con el numero de revisión.
2) Con IBExpert en la información de de registro de la base de datos, hay manera llegar un log de cambios tanto en la metadata, los scripts y hasta de los sql`s que se ejecutan, la opción se llama Archivos de Bitácora. Probé con DataBase Comparer, pero son mas pasos seguir y genera unos scripts muy grandes.
3) Con cada actualización de la aplicación se incluirán los Scripts convenientemente numerados. (aquí es posible que se me complique un poco mas ya que como requerimiento las actualizaciones las obtendrá del Internet, que locura!)
4) Al ejecutar la actualización se lanzaran los Scripts necesarios (de forma ordenada) para pasar de la versión actual a la nueva.

Les cuento como va!
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
¿ como validar xml contra esquema? JXJ Varios 2 27-03-2011 04:09:41
Como Selesscionar Los Datos De Una Base De Datos ????? c35xr Conexión con bases de datos 8 10-04-2009 05:47:40
Extraer metadatos de archivos DBF DobleSiete SQL 9 25-01-2005 15:59:07
Extraer metadatos RONPABLO Firebird e Interbase 2 22-10-2004 20:04:56
Como conectarme a una base de datos como postgres o mysql?? marys MySQL 4 08-05-2003 11:34:08


La franja horaria es GMT +2. Ahora son las 21:28:03.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi