![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
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. ![]() |
#2
|
||||
|
||||
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. ![]() Última edición por raco fecha: 11-08-2005 a las 02:25:33. Razón: se movio |
#3
|
||||
|
||||
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.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#4
|
||||
|
||||
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.
|
#5
|
|||
|
|||
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. |
#6
|
||||
|
||||
Entonces Cambio?
Ok de acuerdo, gracias,
![]() ![]() ![]() ![]() ![]() Última edición por raco fecha: 11-08-2005 a las 22:56:29. Razón: corregir |
#7
|
||||
|
||||
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. |
#8
|
||||
|
||||
Ok, muchas gracias a todos por su ayuda
|
#9
|
|||
|
|||
![]() 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 ![]() Espero te sirva. Luis Roldan Mar del Plata Argentina |
![]() |
|
|
![]() |
|