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 Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-09-2021
Avatar de mRoman
mRoman mRoman is offline
Miembro
 
Registrado: nov 2003
Posts: 599
Poder: 21
mRoman Va por buen camino
Interconexion de tablas/backup-restore

Hola amigos.

Trabajo con: Delphi6/Delphi 10.3, Win10/Server 2012, FB 2.5


Pretendo desarrollar un nuevo proyecto que va a requerir o hacer referencia (aprovechar tablas) a otras tablas de 1 base de datos. Lo anterior porque en el nuevo proyecto tendrá 1 tabla con la misma estructura que tiene otra tabla que esta en producción en una base de datos (BD1).

He leido acerca de realizar consultas SQL haciendo referencias a tablas que están en otras base de datos, pero se comenta que es algo lento por medio de EXECUTE STATEMENT
https://firebird21.wordpress.com/201...atos-externas/
(entre otros links dentro de este foro).

Las consultas a esas tablas serán frecuentes, asi que si es importante el tema de velocidad/respuesta de la consulta.

Pensaba hacer crear las tablas del nuevo proyecto en la base de datos de producción, para q la consultas a esas tablas sean dentro de la base de datos....pero ahora viene el tema del backup/restore en caso de que se quieran ejecutar estos procesos a las tablas del nuevo sistema o del que esta en producción, se podrá solo hacer respaldo de algunas tablas??...excluyendo algunas?? o no se podría?

Lo ideal es que cada sistema tenga su propia base de datos, pero existe un proceso de actualización a 1 tabla que se desea este actualizada también en el nuevo sistema, por ese motivo que consulto lo antes descrito.

Que experiencia tienen uds al respecto?.
Como podría aprovechar los datos de las tablas de producción, en el nuevo sistema?

Espero haberme explicado correctamente, saludos y gracias por su tiempo.
__________________
Miguel Román

Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !!
Responder Con Cita
  #2  
Antiguo 07-09-2021
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.037
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Si no he entendido mal, el nuevo software con su base de datos BD1 necesita leer datos de una tabla de otra BD2.
Puedes hacerlo abriendo otra conexión.
Tienes tus componentes de base de datos BD1, de transacciones TR1, dataset QR1, etc.
Y al mismo tiempo puedes tener un data module DM2, con un BD2, un TR2 y un QR2, etc. para acceder a los datos de la otra BD2
Responder Con Cita
  #3  
Antiguo 07-09-2021
Avatar de mRoman
mRoman mRoman is offline
Miembro
 
Registrado: nov 2003
Posts: 599
Poder: 21
mRoman Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Si no he entendido mal, el nuevo software con su base de datos BD1 necesita leer datos de una tabla de otra BD2.
Puedes hacerlo abriendo otra conexión.
Tienes tus componentes de base de datos BD1, de transacciones TR1, dataset QR1, etc.
Y al mismo tiempo puedes tener un data module DM2, con un BD2, un TR2 y un QR2, etc. para acceder a los datos de la otra BD2
Ok, gracias Casimiro.

y las consultas como serián?... from bd1.tabla1.campo1=bd2.tabla2.campo2 ??, algo asi?.
__________________
Miguel Román

Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !!
Responder Con Cita
  #4  
Antiguo 07-09-2021
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.037
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
No, tendrías que consultar una BD, y con los datos extraídos hacer la consulta a la otra BD.
Aunque ahora que lo dices, creo haber leido en las especificaciones de la última versión de firebird que se puede hacer algo como comentas.
Tengo que revisarlo, hablo de memoria y puede que esté confundido con otra cosa.
Responder Con Cita
  #5  
Antiguo 07-09-2021
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.037
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
De todas formas no sé si has probado el "execute statement", lo de lento es relativo, haz una prueba por si te sirve.
Responder Con Cita
  #6  
Antiguo 07-09-2021
manelb manelb is offline
Miembro
 
Registrado: mar 2017
Posts: 280
Poder: 8
manelb Va por buen camino
No sé si sería una opción, pero algunos componentes de acceso a datos permiten realizar consultas sobre la BD y a continuación ejecutar consultas sql sobre este primer resultado.
Lo utilice hace un tiempo en un proceso un tanto particular con Firedac

Contula_BD1=
Código SQL [-]
Select * from TablaX join TablaY on X.id=Y.id
Contula_BD2=
Código SQL [-]
Select * from TablaX join TablaY on X.id=Y.id

El resultado de las dos primeras consultas se utiliza como tablas para la consulta final
Consulta_Final=
Código SQL [-]
Select * from Contula_BD1 join Contula_BD2 on (.......)

Saludos ...
Responder Con Cita
  #7  
Antiguo 07-09-2021
Avatar de mRoman
mRoman mRoman is offline
Miembro
 
Registrado: nov 2003
Posts: 599
Poder: 21
mRoman Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
De todas formas no sé si has probado el "execute statement", lo de lento es relativo, haz una prueba por si te sirve.
Si...ahorita estoy en fase de investigación q conviene mas...si cada quien con su base de datos y hacer las consultas como me habias comentado o crear las tablas en la base q ya tengo en producción....pero aqui me brinca el tema de los respaldos, cuando se desee bajar un respaldo de cualquier de los 2 sistemas, me afectara a lo ya realizado en el otro sistema....

Gracias Casimiro. Sigo valorando.
__________________
Miguel Román

Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !!
Responder Con Cita
  #8  
Antiguo 08-09-2021
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.037
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por mRoman Ver Mensaje
Si...ahorita estoy en fase de investigación q conviene mas...si cada quien con su base de datos y hacer las consultas como me habias comentado o crear las tablas en la base q ya tengo en producción....pero aqui me brinca el tema de los respaldos, cuando se desee bajar un respaldo de cualquier de los 2 sistemas, me afectara a lo ya realizado en el otro sistema....
Gracias Casimiro. Sigo valorando.
No he entendido lo que planteas, supongo que usas nbackup, y es independiente a cada base de datos, obviamente. Supongo que no es eso lo que preguntas.
Responder Con Cita
  #9  
Antiguo 08-09-2021
ASAPLTDA ASAPLTDA is offline
Miembro
 
Registrado: jun 2003
Ubicación: COLOMBIA-CALI
Posts: 639
Poder: 21
ASAPLTDA Va por buen camino
leer bases de datos heterogeneas o diferentes

hola, no te puedo apoyar mucho porque lo hice hace mucho tiempo pero funciona leyendo datos de dos tablas firebird o una firebird y una por ejemplo sqlserver usa localsql en 10.3

https://docwiki.embarcadero.com/RADS...l_SQL_(FireDAC)
Responder Con Cita
  #10  
Antiguo 08-09-2021
Luis F. Orjuela Luis F. Orjuela is offline
Miembro
 
Registrado: may 2003
Ubicación: Bogotá - Colombia
Posts: 68
Poder: 21
Luis F. Orjuela Va por buen camino
Yo en Delphi 10.3 utilizo los componentes FIREDAC, con ellos puedo atacar (consultar) diferentes motores de BD, y mejor aún puedo utilizar una característica propia que tiene esos componentes que es una especie de puente entre diferentes motores de DB utilizando sqlite en local, es decir, puedo hacer por ejemplo un "select join" entre tablas de diferentes bases de datos. Es una maravilla.

Pero como dice Casimiro, se deben crear tantas conexiones de DB como Bases de Datos tengas que atacar...

Yo en estos momentos tengo un sistema que trabaja contra SQL Server, Firebird y SQLite; haciendo consultas con inner join, left join entre las diferentes tablas de las diferentes bases de datos.

En cuanto a los respaldos (backups), pues cada Base de Datos por separado tiene su propio plan de mantenimiento (backup / restore). Es tu obligación saber qué tabla de qué base de datos deseas restaurar, para así solicitarlo al DB Manager que haga esta tarea sobre esa base de datos....

Saludos desde BOGOTA - COLOMBIA
__________________
Ing. LUIS FERNANDO ORJUELA
BOGOTA - COLOMBIA
Responder Con Cita
  #11  
Antiguo 08-09-2021
Avatar de mRoman
mRoman mRoman is offline
Miembro
 
Registrado: nov 2003
Posts: 599
Poder: 21
mRoman Va por buen camino
Cita:
Casimiro
No he entendido lo que planteas, supongo que usas nbackup, y es independiente a cada base de datos, obviamente. Supongo que no es eso lo que preguntas.
A lo q me refiero es que si las tablas del sistema nuevo las creo en la base de datos que ya tengo, como le haré para cuando se quiera bajar las tablas del sistema nuevo o del q esta corriendo. Actualmente no uso ninguna aplicación como GBAK para los respaldos -sé que no es muy profesional no usarlo-, lo q hago es respaldar el archivo .FDB completo, tengo un soft (CobianBackup) para realizar la copia del archivo y hasta el momento me ha funcionado, sin problema.

Cobian lo uso porque los respaldos los puedo programar por dias de la semana y a una hora determinada....la verdad es muy cómodo, solo reviso q se hayan hecho los respaldos, en caso de que no, los ejecuto manualmente.

No conozco bien GBAK, pero talvez también se pueda programar los respaldos (Diario, Semanal, Mensual, x Hora especifica, Full, Diferencial, etc.) de manera automática.

Saludos.
__________________
Miguel Román

Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !!

Última edición por mRoman fecha: 08-09-2021 a las 17:46:23.
Responder Con Cita
  #12  
Antiguo 08-09-2021
Avatar de mRoman
mRoman mRoman is offline
Miembro
 
Registrado: nov 2003
Posts: 599
Poder: 21
mRoman Va por buen camino
Cita:
Empezado por Luis F. Orjuela Ver Mensaje
Yo en Delphi 10.3 utilizo los componentes FIREDAC, con ellos puedo atacar (consultar) diferentes motores de BD, y mejor aún puedo utilizar una característica propia que tiene esos componentes que es una especie de puente entre diferentes motores de DB utilizando sqlite en local, es decir, puedo hacer por ejemplo un "select join" entre tablas de diferentes bases de datos. Es una maravilla.

Pero como dice Casimiro, se deben crear tantas conexiones de DB como Bases de Datos tengas que atacar...

Yo en estos momentos tengo un sistema que trabaja contra SQL Server, Firebird y SQLite; haciendo consultas con inner join, left join entre las diferentes tablas de las diferentes bases de datos.

En cuanto a los respaldos (backups), pues cada Base de Datos por separado tiene su propio plan de mantenimiento (backup / restore). Es tu obligación saber qué tabla de qué base de datos deseas restaurar, para así solicitarlo al DB Manager que haga esta tarea sobre esa base de datos....

Saludos desde BOGOTA - COLOMBIA
Me parece buena opción....la voy a analizar.
__________________
Miguel Román

Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !!
Responder Con Cita
  #13  
Antiguo 08-09-2021
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
Asi como dices, lo mas obvio es que simplemente haces backup en ambas BD y listo.

La otra, es que ejecutes un backup (parcial) en la de los datos externos (eso tocaria manualmente con SQL y exportar datos), o mantener un servicio que constantemente copie los datos a la BD de base y asi es 1 backup solo.
__________________
El malabarista.
Responder Con Cita
  #14  
Antiguo 08-09-2021
Avatar de mRoman
mRoman mRoman is offline
Miembro
 
Registrado: nov 2003
Posts: 599
Poder: 21
mRoman Va por buen camino
Cita:
Empezado por ASAPLTDA Ver Mensaje
hola, no te puedo apoyar mucho porque lo hice hace mucho tiempo pero funciona leyendo datos de dos tablas firebird o una firebird y una por ejemplo sqlserver usa localsql en 10.3

https://docwiki.embarcadero.com/RADS...l_SQL_(FireDAC)
Trate de seguir el link, pero no tiene información, de todas maneras gracias.
__________________
Miguel Román

Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !!
Responder Con Cita
  #15  
Antiguo 08-09-2021
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.037
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por mRoman Ver Mensaje
tengo un soft (CobianBackup) para realizar la copia del archivo y hasta el momento me ha funcionado, sin problema.
Pero antes tienes que hacer un shutdown de la base de datos para que no haya ninguna conexión abierta.
Si no lo haces así, ten por seguro que te llevarás una sorpresa el día que necesites recuperar un backup.

Con nbackup del firebird puedes hacer los backups con todo el mundo conectado y trabajando, pues hace un backup justo del momento, como una transacción más.
Responder Con Cita
  #16  
Antiguo 08-09-2021
Avatar de mRoman
mRoman mRoman is offline
Miembro
 
Registrado: nov 2003
Posts: 599
Poder: 21
mRoman Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Pero antes tienes que hacer un shutdown de la base de datos para que no haya ninguna conexión abierta.
Si no lo haces así, ten por seguro que te llevarás una sorpresa el día que necesites recuperar un backup.

Con nbackup del firebird puedes hacer los backups con todo el mundo conectado y trabajando, pues hace un backup justo del momento, como una transacción más.
Lo de hacer shutdown, la verdad no lo hago. El proceso siempre se ejecuta a las 3 a.m., donde los usuarios, a esa hora, no están conectados. Durante el proceso, los usuarios no se pueden conectar...ya hice una prueba. Y si están conectados al sistema, el proceso de respaldo no se ejecuta, marca error ya que el archivo esta siendo ocupado. Pero sin duda es algo que debo tomar en cuenta...lo del shutdown; porque siempre hay una primera vez!.

Suena interesante el nBackup

Gracias Casimiro.
__________________
Miguel Román

Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !!

Última edición por mRoman fecha: 08-09-2021 a las 19:53:57.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
BackUp Restore Automático jsanchez Firebird e Interbase 8 28-03-2013 12:00:29
backup y restore santi33a PostgreSQL 2 16-05-2012 20:25:28
Backup y Restore de BD en SQL Server con C# Lester .NET 2 07-02-2009 13:49:32
Backup/Restore HectorMendez SQL 1 18-09-2007 09:25:09
Backup y restore chipsoni SQL 2 08-05-2006 10:20:56


La franja horaria es GMT +2. Ahora son las 19:29:25.


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