Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Actualizar BD en varias maquinas (https://www.clubdelphi.com/foros/showthread.php?t=24182)

raco 11-08-2005 02:09:56

Actualizar BD en varias maquinas
 
Hola, hice una aplicacion en Delphi 7 y la base de datos la instale en un servidor de la empresa, todas las demas maquinas que tengo como clientes accesan a la base de datos por medio de ese servidor.

Mi problema es que tenemos implementada una Vpnet con antenas y mi aplicacion funciona muy lenta por la red, entonces lo que pense hacer fue poner la base de datos local en cada equipo y hacer copia de las tablas del servidor a los clientes y de los clientes al servidor, pero tengo una duda, hay alguna forma de hacer esto mas facil, que me recomiendan.

Pense en comparar las tablas del servidor y el cliente y si estaban diferentes, entonces seleccionar los registros q no existen en una de las tablas y ponerlos en la otra por codigo. Existe alguna instruccion que me deje comparar 2 tablas iguales para poder seleccionar los registros que cambiaron y actualizar la tabla que no los tenga o de que otra forma lo puedo hacer?, utilizo tablas de Paradox. O

jala me pueda ayudar alguien, gracias.:D

raco 11-08-2005 02:18:05

Ejemplo de lo q hago
 
Estoy usando la instruccion not in en varios querys para seleccionar lo que esta diferente entre 2 tablas (la del cliente y servidor) y los registros que no estan los meto a la tabla que no los tiene mediante codigo, uso un while que inserta los registros diferentes, hasta ahi esta bien, pero existen campos que se me modifican en las tablas y en este caso estos si existirian en ambas. Por ejemplo:

En una tabla tengo estos campos:

Orden (PC Servidor)
______________________
Folio Cantidad Descripcion Precio Recibidos
1-------1------lo q sea----10------0----
2 ------2------ no se------20------0----

Y en otra tabla:

Orden (PC Cliente)
______________________
Folio Cantidad Descripcion Precio Recibidos
1-------1------lo q sea----10------0----
2 ------2------ no se------20------0----

Como le puedo hacer para saber que la tabla cambio en la columna de los recibidos y actualizar la otra sin tener que copiar toda la tabla o todos los registros, nada mas los que hayan cambiado. Gracias.:D

Casimiro Notevi 11-08-2005 02:26:14

Creo que con ese sistema te estás metiendo en un "berenjenal" sin salida, te costará un gran trabajo y esfuerzo mantener sincronizadas las mismas bases de datos en distintos equipos.

Ese sistema es además justo lo contrario para lo que sirven los sistemas informatizados, centralizar datos, disminuir riesgos, etc

Creo que lo mejor sería que mejores la red o "afinar" las consultas para optimizar los accesos al servidor y de esta manera conseguir mejor velocidad de respuesta.

Cualquier método menos ese que pretendes, aunque si aún quieres seguir con eso, puedes encontrar algún hilo donde se ha hablado de ese tipo de asuntos.

raco 11-08-2005 02:45:17

Si, precisamente por eso consulte aqui, por que a mi tampoco me gustaria hacerlo de esta forma, el problema es que yo ya le quite a mi aplicacion todo lo que pudiera hacerla mas lenta, cerre tablas y querys que no necesitaba y uso solo los que necesito, simplifique todos los procesos que pude, en fin, la trate de hacer mas rapida en todos los procesos posibles, pero incluso al abrirla dura mucho, ¿el problema estara en la red?, tenemos la comunicacion por antenas, estas antenas se comunican a un sitio central que tiene internet (512Mb) y asi se conecta a otra ciudad, por este medio viajan voz y datos, duramos mucho tiempo para poder separar la voz y los datos por que habia un gran problema, sobre todo en la voz, en los datos no habiamos tenido problemas hasta ahora. Que mas podre hacer. Tambien habra problemas con el servidor y las maquinas que tenemos como clientes?. Gracias por tu respuesta.

Yosuun 11-08-2005 08:52:40

Hola Raco, estoy con casimiro en que lo que estas haciendo no es lo mas correcto para solucionar el problema, si al hecho de que el ancho de banda es pequeño le agregamos que utilizas paradox la respuesta a tu problema ya la tienes. Otra cosa supongo que la aplicacion es decir el ejecutable reside en cada maquina porque si encima reside en un servidor centrar remoto y se lo tiene que traer cada vez al equipo para ejecutarlo pues agravaria mas el problema.

Mi recomendacion es que pienses en cambiar a FireBird o Interbase, con esto en principio lo que conseguirias es reducir el trafico de red, puesto que solo viajarian las peticiones y las respuestas. Ademas como he creido entender las peticiones de datos dentro del programa las tienes con querys, pues tienes la mitad del camino andado. No me refiero no me entiendas mal a meterte ahora mismo en el berenjenal de diseñar procedimientos almacenados y trigerss sino a cambiar un "motor" de escritorio por llamarlo de alguna manera por un motor de base de datos como sistema de almacenamiento como primer paso sin mas
y luego ir limandolo con mas tiempo.

No se como tienes estructurado el acceso a datos y las reglas de negocio pero como dice raco lo que pretendes resolver es decir el informatizar por ponerter un ejemplo un almacen haciendolo como lo quieres hacer es decir poner los datos en cada maquina te va a traer mas de un quebradero de cabeza y va a ser la pescadilla que se muerde la cola.

Un saludo.

raco 11-08-2005 22:55:42

Entonces Cambio?
 
Ok de acuerdo, gracias,:) entonces la BD de Paradox es algo mala y lenta para utilizarla en mi caso?:mad: , si uso puros querys, casi no me gusta usar tablas y la aplicacion esta en cada maquina, me podrian decir de algun sitio de donde pueda bajar manuales de FireBird o Interbase, por que solo he usado Oracle (Aqui si me defiendo, lo uso bastante bien SQL Plus, PL/SQL, etc);) , tambien he usado Paradox y Access, el problema con el Oracle es que las Pc's no lo levantan, asi q por eso use Paradox, Que opinan de My SQL?, o son mejor FireBird o Interbase. :D Gracias.:D

lucasarts_18 12-08-2005 16:03:30

Hola:

Sin Duda migra a Firebird, es totalmente gratis...MySQL su fuerte es con aplicaciones PHP y, además a la hora de hacer aplicaciones comerciales debes pagar licencias.

Saludos.

raco 12-08-2005 22:43:28

Ok, muchas gracias a todos por su ayuda

Chaja 05-02-2006 19:30:54

Coneccion de Sistemas
 
Raco:
Hola, bueno yo tuve un problema similar, tenia Paradox y me pase a interbase y hice mis querys lo mas precisos posible, pero no andaba como yo queria, es decir rapido. Tengo clientes con mi sistema instalado en Mar del Plata (Argentina) y con suc. en Caleta Olivia (Sta.Cruz) a 1600 km. y otra en Puerto Madryn (Chubut) a 1100 km. Hice las prubas desde mi casa a la casa central dentro de la misma ciudad y una consulta de cliente por el codigo ma tardaba casi 20 segundos. Con Banda ancha, es decir con un enlace rapido. y lo que me sugirio un amigo fue instalar en la maquina de Casa central un Windows 2003 server, y conectar las terminales por terminal server. Para mi asombro fue genial :o . El tema pasa por las licencias de los TS. Pero si no son mas de dos equipos que acceden al servidor no hay problema, ya que en la conf. de servidor como remoto esta permitido. ahora si son mas pc que se van a conectar, necesitas las licencias. Lo unico que debes tener en cuenta que en el path de coneccion en el servidor de la base de datos figure con el nombre del servidor. Tambien te libera de actulizar los .exe en los clientes lejanos ya que ellos abren una secion en el servidor como si fuese otra maquina y ejecuta el sistema en forma remota. Lo que llega al cliente son solo las pantallas de tu sistema y todo se ejecuta en el servidor.
Espero te sirva.

Luis Roldan
Mar del Plata
Argentina


La franja horaria es GMT +2. Ahora son las 17:15:53.

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