[ Foro de C# ]

Consulta de rendimiento

06-Nov-2014 14:36
Mariano German Villarreal Kuber
1 Respuestas

Muy buenos días, quería compartir con ustedes un tema que estoy teniendo, mas que un problema es una investigación que estoy realizando con el objetivo de llegar a resultados y procesos mas óptimos (eterna búsqueda de nosotros los programadores).



Paso a detallarles el escenario. La agencia es una agencia, de servicios, estilo despegar.com, pero con  un abanico mucho mas grande.
El tema es que las consultas a la db, son enormes, y el caudal de información que se mueve es muy grande.

Al momento al forma en que operan estas consultas es la siguiente:

- A travez de Store Procedures se realiza todo este proceso, primero se arroja la consulta a la base de datos, y esta nos devuelve un id de transacción. Una vez que el sql resuelve la consulta completa, este nos avisa, y con el id de transacción realizamos un simple select el cual podemos paginar.

El tema es que estas consultas son muy grandes y los datos que viajan son gigantes. Al momento se me ofrecieron tres escenarios:

1- Consultar esto directamente por store procedures.

2- Que me devuelvan XML.

3-Consumir a través de wcf servicios rest, expuestos desde sql server.

(La base de datos se encuentra en sql server 2008)

La consulta directamente, es que opción me recomiendan, o que proceso/arquitectura me recomiendan implementar.

Consumo el sql server, desde Client-Side y trato directamente los datos todo cliente?

Consumo de lago Back-End, armo los datos y los envio a lado cliente?



Muchísimas gracias de ante mano, y ojala puedan ayudarme.



Saludos.


06-Nov-2014 22:17
Nacho Cabanes (+83)

Es muy difícil opinar en algo así sin conocer muy bien los detalles.

En principio, si los datos son muy grandes yo comenzaría por tratarlos en el servidor tanto como sea posible, en vez de enviar enormes ficheros XML, porque el tráfico de red es mucho más costoso en tiempo que el uso de CPU. Cuanto más ligera sea la comunicación cliente-servidor, menos lags habrá en el equipo cliente.

En cuanto a si usar stored procedures o no... un stored procedure debería ser rápido, en teoría más que una aplicación de servidor, pero esa ganancia no lo será tanto si el mismo equipo que hace de servidor web es también el que hace de servidor de base de datos. De igual modo, si la estructura de las tablas no es eficiente, quizá hubiera que empezar por optimizar el diseño de las tablas.

El que la comunicación se haga mediante WCF o mediante un protocolo simple diseñado por ti no debería ser una gran diferencia, siempre y cuando la cantidad de información enviada no sea muy grande.

Lo dicho... cada caso en un mundo, y es muy difícil opinar "desde fuera del proyecto"...







(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)