Urgente!!! Dudas de eficiencia y velocidad en DataSet.

07/11/2005 - 15:35 por Vyacheslav Popov | Informe spam
Hola foro

Mi duda es la siguiente:
Tengo alrededor de 80 tablas en mi base de datos de ellas unas 50 tablas son
de solo lectura (valores y códigos predefinidos).

La aplicación es distribuida y voy utilizar un servicio Web para acceder a
los datos de la base de datos. Estoy pensando utilizar un método Web para
cargar todas la tablas de solo lectura (unas 50) al inicio de aplicación y
posteriormente traer el resto conforme la necesidad. Todas las tablas están
relacionadas entre si.

¿Que harías tu en mi lugar?

Cualquier consejo me será útil.

Saludos
Popov

Preguntas similare

Leer las respuestas

#6 Vyacheslav Popov
09/11/2005 - 10:13 | Informe spam
Hola Carmelo.

El caso es que son datos, además de solo lectura, participan en muchas
relaciones con el resto de las tablas como por ejemplo: países, provincias,
localidades, idiomas, etc...

Imagínate que para cualquier consulta, tengo que volver a traerme estos
datos desde el Servicio Web, esquivando a los madrugadores con las tazas de
café, las secretarias ociosas y atravesando los cortafuegos puestos por el
apañado administrador de sistemas.

Así que he pensado traerlos al inicio de la aplicación y posteriormente solo
rellenar el DataSet con los datos que el usuario quiere consultar o
modificar. Usando para ello el bonito método Merge de DataSet.

Saludos
Popov

"Carmelo J. Morales Muñoz" escribió en el mensaje
news:%233cZ%
¿y porque traerte esas 50 tablas?.si todos los datos residen en el
servidor, ¿porqué no utilizas llamadas a servicios web que te den los
datos que necesite?. Vamos, es mi modo de ver


http://www.gestionagricola.com
http://www.carmelosoft.com
http://gaona.blogspot.com
http://gaonasec.blogspot.com
http://www.vamosamorirtodos.com
"Vyacheslav Popov" escribió en el mensaje
news:
Hola foro

Mi duda es la siguiente:
Tengo alrededor de 80 tablas en mi base de datos de ellas unas 50 tablas
son de solo lectura (valores y códigos predefinidos).

La aplicación es distribuida y voy utilizar un servicio Web para acceder
a los datos de la base de datos. Estoy pensando utilizar un método Web
para cargar todas la tablas de solo lectura (unas 50) al inicio de
aplicación y posteriormente traer el resto conforme la necesidad. Todas
las tablas están relacionadas entre si.

¿Que harías tu en mi lugar?

Cualquier consejo me será útil.

Saludos
Popov





Respuesta Responder a este mensaje
#7 Alfredo Novoa
09/11/2005 - 13:55 | Informe spam
Hola Vyacheslav

On Wed, 9 Nov 2005 09:58:53 +0100, "Vyacheslav Popov"
wrote:

El caso es que boy a tener un método de Servicio Web que me devuelve un
DataSet tipado con aproximadamente 80 tablas y cargado hasta los ojos de
datos que sufren modificaciones dentro de la aplicación.
Luego habrán unos cuantos métodos de devolución de datos relacionados los
que podrá modificar el usuario. Por ejemplo: por el código del cliente se
devolverán los registros relacionados, tales como, tabla de cliente,
pedidos, detalles de pedido etc..
Por supuesta que antes de realizar una actualización o lectura de datos del
cliente habrá que buscarlo. Para ello tendré unos cuantos métodos de
búsqueda.



Que supongo que consistirán en ejecutar sentencias SQL. Creo que la
palabra "consulta" es bastante más apropiada.


Ahora bien, los datos devueltos por el "súper método" ocupan unas 3 Mª y se
utilizan en muchos sitios y todos son relacionados. He pensado cargarlos al
inicio de aplicación de forma asíncrona y mostrando mientras tanto un
mensajito al estilo "Cargando... Espere por favor". La ventaja de estos
datos es que sufren muy pocos cambios.



Pues más razón para guardarlos en el disco del ordenador cliente y
traer solamente los datos modificados al iniciar la aplicación. Así en
lugar de cargar 3 megas, muchas veces no tendrías que cargar nada o
solamente unos pocos KB. Yo creo que cargar 3 MB a través de Internet
puede ser bastante molesto.

En segundo lugar pensé que seria interesante cargar todos los datos
relacionados con un cliente y luego liberarlos (borrar de la memoria).
Quiero conseguir con esto un tamaño estable de la memoria.

¿Que tal la idea?



Pues creo que lo vas a pasar bastante mal cuando quieras manipular los
datos del dataset. Sería mucho más interesante instalar un SGBD en el
ordenador cliente y mantener la base de datos de los clientes
sincronizada trayendo solamente los datos que se hayan modificado. Así
reducirás bastante el tráfico de red y podrás ejecutar SQL contra la
base de datos de los ordenadores clientes (para sacar informes por
ejemplo), en lugar de tener que usar los primitivos métodos de
búsqueda de los datasets.

Otra ventaja es que podrás realizar cualquier consulta (usando SQL)
estando desconectado de la red.

Pienso usar Microsoft SQL Server 2000 Desktop Engine (MSDE 2000) o tal vez
la nueva versión, SQL Server 2005 Express Edition.



Pero tendrías que tener un SGBD central y otro en cada uno de los
ordenadores cliente, y no tendría por que ser el mismo. Podrías usar
SQL Server como SGBD central y Firebird en los clientes, por que en
los clientes necesitas mucha menos potencia. Como ya he dicho hay una
versión de Firebird que es una pequeña dll, y es infinitamente más
potente que los datasets.


Saludos
Alfredo
Respuesta Responder a este mensaje
#8 Vyacheslav Popov
09/11/2005 - 17:34 | Informe spam
Pues creo que lo vas a pasar bastante mal cuando quieras manipular los
datos del dataset. Sería mucho más interesante instalar un SGBD en el
ordenador cliente y mantener la base de datos de los clientes
sincronizada trayendo solamente los datos que se hayan modificado. Así
reducirás bastante el tráfico de red y podrás ejecutar SQL contra la
base de datos de los ordenadores clientes (para sacar informes por
ejemplo), en lugar de tener que usar los primitivos métodos de
búsqueda de los datasets.

Otra ventaja es que podrás realizar cualquier consulta (usando SQL)
estando desconectado de la red.

Pienso usar Microsoft SQL Server 2000 Desktop Engine (MSDE 2000) o tal vez
la nueva versión, SQL Server 2005 Express Edition.



Pero tendrías que tener un SGBD central y otro en cada uno de los
ordenadores cliente, y no tendría por que ser el mismo. Podrías usar
SQL Server como SGBD central y Firebird en los clientes, por que en
los clientes necesitas mucha menos potencia. Como ya he dicho hay una
versión de Firebird que es una pequeña dll, y es infinitamente más
potente que los datasets.



Has dado en el clavo!!! Esta es mi gran problema. Que no tengo posibilidad
de instalar un SGBD cliente/servidor como SQL Server 2000 en la maquina
central por el tema económico. Entre las posibles soluciones he probado
trabajar con MySQL, pero ADO.NET me ha enseñado dientes. Entonces entre las
posibles soluciones que me quedaron, he decidido usar los Servicios Web
junto con un SGBD de escritorio. Entre los SGBD, tales como MSDE 2000 o
Access he optado usar MSDE 2000.

¿Que otra solución le ves a esto?

Saludos
Popov
Respuesta Responder a este mensaje
#9 Alfredo Novoa
09/11/2005 - 22:39 | Informe spam
On Wed, 9 Nov 2005 17:34:10 +0100, "Vyacheslav Popov"
wrote:

Has dado en el clavo!!! Esta es mi gran problema. Que no tengo posibilidad
de instalar un SGBD cliente/servidor como SQL Server 2000 en la maquina
central por el tema económico.



Pues puedes usar Firebird Superserver en la máquina central y Firebird
Embedded en las máquinas cliente.

Entre las posibles soluciones he probado
trabajar con MySQL



MySQL es bastante pobre. Mejor Firebird of PostgreSql

, pero ADO.NET me ha enseñado dientes. Entonces entre las
posibles soluciones que me quedaron, he decidido usar los Servicios Web
junto con un SGBD de escritorio.



Lo de los Servicios Web te lo podrías ahorrar, no creo que aporten
nada en este caso.

Entre los SGBD, tales como MSDE 2000 o
Access he optado usar MSDE 2000.



Access ni siquiera es un SGBD.

¿Que otra solución le ves a esto?



Usar un SGBD cliente/servidor potente y gratuito como Firebird.


Saludos
Respuesta Responder a este mensaje
#10 Vyacheslav Popov
10/11/2005 - 17:29 | Informe spam
Pues puedes usar Firebird Superserver en la máquina central y Firebird
Embedded en las máquinas cliente.



Gracias Alfredo lo estudiare a fondo.

Pero, ¿que hay de malo en los servicios Web?
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida