Optimizar aplicación para uso con BD remota

16/03/2006 - 08:13 por Lope | Informe spam
Buenas.

Hasta ahora había hecho aplicaciones con servidores de BD locales
(intranet) en las que el medio de comunicación es muy rápido y no había
que tener especialmente cuidado en la cantidad y tamaño de información
que debía transmitirse desde/hacia la base de datos. Usaba sentencias
SQL desde código para seleccionar los registros, cargaba las tablas en
datasets y las mostraba en los controles oportunos.

Al intentar "adaptar" una de dichas aplicaciones para ser usada con una
base de datos (SQL Server) de un servidor remoto (accesible a través de
internet), observo que la tarea de recuperación de datos se vuelve
lentísima (más de lo previsible) y llega a no realizarse en algunos
casos. ¿Qué cambios en los mecanismos de tratamiento de los datos (Proc.
Almacenados, vistas,...) recomendáis para hacer factible el uso de
dichas bases de datos remotas?

Gracias.
 

Leer las respuestas

#1 IbanJBalasch
16/03/2006 - 12:08 | Informe spam
Si el problema reside en el tiempo empleado en los consultas por
problemas de conexion, habiendo optimizado al maximo las procedures a
las que llamas, hay varias opciones que podrian ayudarte:

- Pon en cache todas las consultas que mas se utilizan para paliar el
acceso a la bbdd teniendo en cuenta la actualizacion de datos a la hora
de asignarle un tiempo de expiracion (asp 2.0 tiene el
SqlCacheDependency que te permite que se dispare el tiempo de
expiracion de la cache automaticamente). Esto es lo mas efectivo sin
lugar a dudas, tan solo hay que estudiar si es valido para ti.

- Cada vez que accedas a la bbdd para recuperar datos crea un bucle que
repita dicha secuencia n veces (maximo 3) capturando cualquier error de
timeout para que vuelva a ejecutarse la recuperacion y saliendo de
dicho bucle cuando encuentre la informacion requerida.

- Si no lo haces: separa la capa de datos y logica de la de
presentacion. Podrias utilizar un webservice que se encargue de las 2
primeras devolviendo datasets tipificados. Con ello aislarias los
tiempos de procesos de la capa de datos centrandote solo en el problema
del acceso y tiempos.




Lope wrote:
Buenas.

Hasta ahora había hecho aplicaciones con servidores de BD locales
(intranet) en las que el medio de comunicación es muy rápido y no había
que tener especialmente cuidado en la cantidad y tamaño de información
que debía transmitirse desde/hacia la base de datos. Usaba sentencias
SQL desde código para seleccionar los registros, cargaba las tablas en
datasets y las mostraba en los controles oportunos.

Al intentar "adaptar" una de dichas aplicaciones para ser usada con una
base de datos (SQL Server) de un servidor remoto (accesible a través de
internet), observo que la tarea de recuperación de datos se vuelve
lentísima (más de lo previsible) y llega a no realizarse en algunos
casos. ¿Qué cambios en los mecanismos de tratamiento de los datos (Proc.
Almacenados, vistas,...) recomendáis para hacer factible el uso de
dichas bases de datos remotas?

Gracias.

Preguntas similares