Reducir el volumen de datos a transmitir

04/04/2008 - 11:52 por DHarma | Informe spam
Saludos a todos:

Resulta que mantengo una aplicación desarrollada en VB6 que ataca una
base de datos sqlserver (2005). El caso es que tengo que atacar la
base de datos desde un sitio dónde el ancho de banda es pequeño por lo
que el tiempo de respuesta del programa se ve bastante afectado. He
visto que toda la información que se envia/recibe por la red viaja en
texto llano.

Como ando algo justo de conocimiento de administración de base de
datos, ¿alguien podría sugerirme alguna solución para por ejemplo,
comprimir los datos antes de enviarlos?
¿alguna otra idea para reducir el volumen de datos enviados?

Gracias.
 

Leer las respuestas

#1 Eduardo Castro
04/04/2008 - 15:58 | Informe spam
Hola,

Podrías comprimir el DataSet antes de enviarlo, pero estas usando VS 6.0 que
utiliza recordsets, lo que puedes hacer es utilizar algún algoritmo de
paginación, puedes utilizar algo como esto:

http://www.davidhayden.com/blog/dav.../2652.aspx
If I want the first page of 10 records from my log file sorted by Date DESC,
I can use the ROW_NUMBER FUNCTION as follows:

SELECT Description, Date
FROM (SELECT ROW_NUMBER() OVER (ORDER BY Date DESC)
AS Row, Description, Date FROM LOG)
AS LogWithRowNumbers
WHERE Row >= 1 AND Row <= 10



The second page of 10 records would then be as follows:



SELECT Description, Date
FROM (SELECT ROW_NUMBER() OVER (ORDER BY Date DESC)
AS Row, Description, Date FROM LOG)
AS LogWithRowNumbers
WHERE Row >= 11 AND Row <= 20

If you have a lot of records, using TOP X in the inner SELECT clause may
speed up things a bit as there is no use returning 1000 records if you are
only going to grab records 11 through 20:



SELECT Description, Date
FROM (SELECT TOP 20 ROW_NUMBER() OVER (ORDER BY Date DESC)
AS Row, Description, Date FROM LOG)
AS LogWithRowNumbers
WHERE Row >= 11 AND Row <= 20

We can rap this up in a Stored Procedure as follows:



CREATE PROCEDURE dbo.ShowLog
@PageIndex INT,
@PageSize INT
AS

BEGIN

WITH LogEntries AS (
SELECT ROW_NUMBER() OVER (ORDER BY Date DESC)AS Row, Date, Description
FROM LOG)

SELECT Date, Description
FROM LogEntries
WHERE Row between (@PageIndex - 1) * @PageSize + 1 and @PageIndex*@PageSize

END Saludos,

Eduardo Castro
http://mswindowscr.org
Costa Rica

"DHarma" wrote in message
news:
Saludos a todos:

Resulta que mantengo una aplicación desarrollada en VB6 que ataca una
base de datos sqlserver (2005). El caso es que tengo que atacar la
base de datos desde un sitio dónde el ancho de banda es pequeño por lo
que el tiempo de respuesta del programa se ve bastante afectado. He
visto que toda la información que se envia/recibe por la red viaja en
texto llano.

Como ando algo justo de conocimiento de administración de base de
datos, ¿alguien podría sugerirme alguna solución para por ejemplo,
comprimir los datos antes de enviarlos?
¿alguna otra idea para reducir el volumen de datos enviados?

Gracias.

Preguntas similares