![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|
|
#1
|
||||
|
||||
|
Ya se ha hablado varias veces por aqui sobre estos temas: cuando hay varias sedes remotas utilizando la misma base de datos.
Una solución que a mi me parece particularmente interesante para esto, aunque no la he utilizado todavía, es la replicación, mediante la cual en cada LAN o sede remota hay una copia de la base de datos y se van sincronizando; hay varias opciones segun haya un servidor central o no, replicacion simple o múltiple,.... Hay soluciones comerciales, como la que ofrece ibphoenix, libres aunque estancadas como fibre o bien esta, http://www.devarchive.com/f700.html, que me bajé yo pero que no he tenido tiempo de mirarlo bien. Es gratis para porpositos personales o educacionales, si se usa comercialmente habría que pagar 199 $ Otra posibilidad sería que uno mismo, mediante programación. implementase la replicación. Aqui tienes un hilo donde el compañero Cadetill explica la suya: http://www.clubdelphi.com/foros/show...ht=replicacion
__________________
Emilio J. Curbelo |
|
#2
|
||||
|
||||
|
Con respecto de la opción de replicación mencionada por el amigo Voutarks, creo que siempre hay que evaluar. Si ya tenes una línea que te conecta las dos sucursales... yo creo que la replicación podría ser mas complicado que optimizar la aplicación (que siempre es posible).
Eso si... debes tener en cuenta que si hay un fallo en la línea de comunicación... la sucursal "cliente" se quedará fuera de línea, siendo imposible operar el sistema hasta que se restablezca la comunicación. Este es un punto en contra, pero si hay redundancia, o se confía en el proveedor... yo lo dejaría como está. Esto porque la replicación implica otra serie de factores que pueden provocar problemas con la información y tienden a ser mecanismos "de cristal", ya que es delicado aplicar cambios a la estructura, por no mencionar la cantidad de trabajo que puede significar diseñar/montar/mantener los mecanismos de replicación, y que tiene que haber usuarios responsables (¿existirán?) de correr los procesos de replicación o un mecanismo automátizado (que involucra otras cosas, como correo electrónico) que envie y actualice las bitácoras... Decidirte entre un mecanismo u otro depende no de los factores ya comentados sino de algunos otros (regularmente subjetivos... ) Hasta luego. ![]()
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
|
#3
|
||||
|
||||
|
jachguate, es cierto lo que comentas ya que la replicación conlleva todo eso. De acuerdo, es más costoso que intentar optimizar, pero es otra opción, y el resultado no es el mismo.
En el hilo que aporte anteriormente tambien se explica cómo intentar optimizar las conexiones. Otra buena opción sería un desarrollo en tres capas aunque no se hasta que punto eso aceleraría las cosas.
__________________
Emilio J. Curbelo |
|
#4
|
||||
|
||||
|
Hola.
Una valoración de las 3 alternativas propuestas, podría ser :
Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
|
#5
|
|||
|
|||
|
Hola,
Lo primero, muchas gracias a todospor todos vuestros comentarios, me están sirviendo de mucha ayuda. Que es Código:
un desarrollo en tres capas Por qué crees que : Código:
Probablemente sea la opción que aumenta menos el rendimiento de las comunicaciones Por otro lado, entiendo, después de leer todo lo que se ha escrito en este foro, que la Replicación entre Servidores puede estar muy bien si realmente no es necesario que todos los puestos tengan acceso a todos los cambios producidos en las bases de datos, de un modo inmediato, lo cual es mi caso. ¿O me confundo? En cualquier caso, entiendo que el uso de procedimientos, efectivamente, me reduciría el tráfico de la red, entre la oficina cliente y el servidor central, respecto a lo que tengo actualmente. gracias, por todo, a todos. Virginia
__________________
Sonrie al mundo, y el mundo te sonreirá :) |
|
#6
|
||||
|
||||
|
Hola Vicky.
Cita:
Ya habia mencionado en un mensaje anterior que debes acotar bien tus consultas, optimizandolas para minimizar el tráfico por la red. Es muy comun que trates de mostrar en una grilla todos los registros de los clientes, por ejemplo para que quien opera elija al cliente a quien atiende... pero es un desperdicio de la red. Si los tenes ordenados por apellido, y el cliente que se busca tiene apellido "Yoko", prácticamente viajarán todos los registros de clientes a la terminal... para elgir solamente uno! ... Es mejor que preguntes el apellido (y quizas los nombres) al usuario, y hagas viajar solamente los registros que coincidan... Nunca he usado IBX (que me parece que son los que usas), así que habrá que ver también cómo se comporta con los lookups y los filtros (si los usas), ya que suelen ser muy bonitos en la interfaz de usuario, pero regularmente generan un tráfico de red horrible... En fin... espero haberte aclarado algo. Saludos.
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
|
#7
|
||||
|
||||
|
Como comenta Juan Antonio, el uso de procedimientos almacenados solo te permitirá aumentar el rendimiento de algunos procesos.
Pongamos por ejemplo, el proceso de facturación. Supongamos que una vez al mes cogemos todos los Albaranes y generamos las Facturas correspondientes. La forma usual de hacerlo es mediante una consulta sobre los Albaranes, recorrer la consulta desde Delphi, e ir generando las Facturas una a una. En este caso está claro que por la red tienen que bajar todos los datos de los Albaranes, para poder recorrerlos en la aplicación, y después iran subiendo todas las Facturas una a una. Si utilizamos un procedmiento almacenado, la aplicación ejecuta el procedimiento, y como los procedimientos almacenados se ejecutan por el mismo motor de la base de datos, no hace falta que se envien de vuelta todos los Albaranes, sinó que todo se realiza sobre la memória del Servidor. En este caso lo único que viaja por la red es la instrucción de ejecutar el procedimiento y la notificación de que el el procedimiento ha finalizado. Como puedes adivinar, al no estar involucradas varias aplicaciones, ni haber ningún tráfico por la Red, es mucho más rápido el procedimiento de Facturación como procedimiento almacenado, que en la programación estándar dentro de la aplicación. En cambio en muchos casos el uso de un procedimiento almacenado, no mejora en nada o practicamente nada el rendimiento. Supongamos la inserción de un registro, tienen que viajar por la red los mismos datos (los datos a insertar) tanto si se ejecuta como una consulta (en un Query) como mediante un procedimiento almacenado. Aunque la ejecución en el Servidor de un procedimiento almacenado es más rápida que la de una consulta (puesto que esta segunda debe compilarla), este tiempo es despreciable comparado con el transporte de los datos. Por lo que la inserción tendrá practicamente el mismo rendimiento como consulta que como procedimiento almacenado. En las consultas ocurre le mismo, si queremos poner en una grid los 1000 clientes, practicamente tardará lo mismo obtenerlos mediante un Query que mediante un procedimiento almacenado. Puesto que el tiempo importante es el de transporte por la red, y este es exactamente igual en los dos casos. Así pues, como comenta Juan Antonio, hay que centrarse en el diseño de la aplicación para que requiera el menor tráfico posible. Por ejemplo, en lugar de bajar los 1000 registros, bajar solo los 25 primeros y si el usuario quier ver mas, le da a un botón y bajen los siguientes. O por ejemplo no utilizar consultas del tipo select * from Tabla, sinó que solo debemos consultar los campos que vamos a necesitar (los que ponemos en la grid), los otros no los necesitamos para nada, pero como los hemos puesto en la consulta, también se los bajará la aplicación, con lo que va a tardar bastante más en obtener los datos que necesitabamos. Por eso comentaba que esta opción es la que menos incrementa el rendimiento, puesto que en algunos procesos concretos puedes aumentar drasticamente la velocidad de ejecución del proceso, pero en la mayoría de casos, no obtienes practicamente ninguna mejora. Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|