Sobre las aplicaciones multicapa

31/05/2005 - 22:36 por Benton | Informe spam
Hola,

Estoy analizando un ejemplo de aplicación en tres capas, para usarlo como
modelo en un proyecto que tengo enfrente.

La capa de más bajo nivel es la que realiza las operaciones en la base de
datos, esta capa la constituyen básicamente un montón de procedimientos
almacenados que se encargan de insertar, modificar, elinimar y extraer
registros de la tablas.

La capa intermedia (en C#) manda llamar a estos procedimientos con los
parámetros adecuados.

Ahora bien, mi idea es eliminar la capa "baja" y hacer que la capa
intermedia, en vez de llamar procedimientos almacenados, genere
dinámicamente el SQL que necesita en cada operación y lo ejecute. De esta
manera me evito crear y mantener cuatro o cinco procedimientos por cada
tabla.

¿Alguien tiene alguna opinión sobre lo atinado o desatinado de mi idea?

Saludos,

-Benton

Preguntas similare

Leer las respuestas

#16 Eduardo A. Morcillo [MS MVP VB]
01/06/2005 - 20:43 | Informe spam
Y sí. Usando "Prepare" obtenemos la misma velocidad que usando
procedimientos almacenados.



Siempre y cuando la consulta use parametros y sea bastante usada. Si no
fuera parametrizada (cuando se le deben pasar valores desde la aplicacion)
se estaria generando un nuevo plan para cada ejecucion y si no es una
consulta bastante usada seguramente se borrara del cache el plan de
ejecucion perdiendose cualquier ventaja que Prepare pueda dar.

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
Respuesta Responder a este mensaje
#17 Benton
01/06/2005 - 23:23 | Informe spam
Que es eso del Prepare y donde se utiliza?



La primera vez que un SGBD va a ejecutar una sentencia SQL parametrizada
(que recibe parámetros desde la aplicación cliente), hace un "Parse"
(verifica que sintácticamente esté correcta) y luego un "Prepare", esto es,
determina el plan de ejecución más óptimo, tomando en cuenta entre otras
cosas los índices que puede utilizar. Esta optimización puede tomarle
tiempo, por lo que una vez preparada la sentencia por primera vez, almacena
el plan calculado en un caché, para no tener que calcularlo cada vez que
ejecuta la misma sentencia. La frecuencia con que se borra este caché
dependerá de cada SGBD.

Saludos,

-Benton
Respuesta Responder a este mensaje
#18 Tristan
02/06/2005 - 00:26 | Informe spam
El mejor libro que se ha escrito sobre este tema es sin ninguna duda
este:



Amen

Juan Carlos Badiola
MVP - C#
Respuesta Responder a este mensaje
#19 Alfredo Novoa
02/06/2005 - 02:09 | Informe spam
On Wed, 1 Jun 2005 19:34:24 +0200, "Jose Antonio"
wrote:

Que es eso del Prepare y donde se utiliza?



Si una aplicación va a utilizar una consulta cualquiera más de una vez
le puedes decir al SGBD que la analize, la compile y la deje preparada
para ejecutarse las veces que quieras. Por eso se llama "Prepare".

Una consulta preparada se ejecuta algo más rápidamente por que no es
necesario volver a realizar la verificación y compilación del código
cada vez que se ejecuta.

En algunos casos el plán de ejecución también se mantiene de una
consulta para otra, pero los detalles dependen de cada SGBD
particular. Hay veces que no interesa mantener el plan, por que el
plan óptimo puede depender del número de filas de cada tabla, y eso va
cambiando con el tiempo.

De todas formas la generación del plan de ejecución es solo una parte
del proceso de preparación de una consulta. El análisis léxico,
sintáctico y semántico siempre nos lo ahorramos preparando antes la
consulta.


Saludos
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida