Otro debate (mas) sobre los Procedimientos Almacenados

28/04/2008 - 14:00 por Pablo Roca | Informe spam
Siento si el tema es recurrente, pero ahi va:

El siguiente hilo es para proponer un debate (amistoso) sobre los
procedimientos almacenados.

Llegué hace poco a SQL Server 2005 y de lo primero que hice fué empezar a
programar todo o casi todo con procedimientos almacenados. Hasta aquí bien,
en momentos noté que (a ratos) las consultas no iban todo lo bien que
debieran ...

Soy un cliente final, y mi casuistica particular me impone que tenga que
utilizar unas 60 bases de datos. Por lo que uno piensa en buscarse la manera
de sincronizar los procedimientos almacenados entre BBDD, alternativamente
mira uno de poner los SPs en la BBDD master, lo que simplifica la
administración y mantenimiento (hasta cierto punto, porque trabajar en
pruebas contra master es un tanto latazo), pero se me presenta el problema
de que tengo que dar acceso a master a todos los usuarios que utilicen la
aplicación, cosa que no me gusta nada.

Lo que es el modelo de poner todo el acceso a datos dentro de la BBDD, la
verdad que me gusta. Pero despues de leer y comprobar en el post de Eduardo
Quintás

http://geeks.ms/blogs/quintas/archi...nados.aspx

Que los procedimientos almacenados no reutilizan sus planes de ejecución si
se ejecutan en BBDD distintas, eso ya me tiró por el suelo a los SPs. Y me
dió una pista de porque los SP's me iban bien a veces (si consultaba siempre
contra la misma BBDD)

Pegas que le veo a los SPs

- la fundamental es la no reutilización de planes de ejecución entre BBDD
distintas.
- si uno se pone a escribir SPs como si fuera un lenguaje normal de
programación puede caer en el error de hacer esto:

IF condicion1
SELECT uno
ELSE
IF condicion2
SELECT dos
ELSE


hacer grandes bloques de if y consultas SELECT es de las peores cosas que se
pueden hacer con un SP, ya que: los planes de ejecución variaran en funcion
de las condiciones de la consulta, la compilación del plan de ejecución se
hace muy lenta.

En lugar de hacer eso es mucho mas optimo hacer:

IF condicion1
EXEC sp1
ELSE
IF condicion2
EXEC sp2
ELSE


¿Porque? Por la reutilización de planes de ejecución. En este segundo
ejemplo el plan de ejecución del SP principal es siempre el mismo, y el de
cada SP que es llamado tambien. Se evitan tiempos de compilación, cacheo,
...

Ventajas de los SPs

- tener todo el código de acceso centralizado en un único sitio
- facilidad de mantenimiento (incluso en producción)

Bien ante todo esto, estoy empezando a cambiar el chip y pasar mis consultas
a la capa de negocio del lado del servidor (lo que estoy haciendo es una
aplicación SOA) utilizando consultas parametrizadas (ahora decirme que las
consultas parametrizadas no se reutilizan entre BBDD y ya se me lió el
invento :)).

Al hilo de esto.

¿Como trabajar de una manera segura con los SPs en master? ¿Metiendo los SPs
en esquemas personalizados y jugando con los permisos?

Bueno .. cualquier comentario es bienvenido.


Saludos,

Pablo Roca
La Coruna - Spain
http://www.portalfox.com

Preguntas similare

Leer las respuestas

#41 Alfredo Novoa
30/04/2008 - 19:54 | Informe spam
El Wed, 30 Apr 2008 14:30:15 -0300, Maxi escribió:

que tiene que
ver SOA con lo que vos estas diciendo, por Dios!



Pues todo.

Service Oriented Architecture (SOA) is a computer systems architectural
style for creating and using business processes, packaged as services,
throughout their lifecycle. SOA also defines and provisions the IT
infrastructure to allow different applications to exchange data and
participate in business processes. These functions are loosely coupled with
the operating systems and programming languages underlying the
applications.[1] SOA separates functions into distinct units (services)[2],
which can be distributed over a network and can be combined and reused to
create business applications.[3] These services communicate with each other
by passing data from one service to another, or by coordinating an activity
between two or more services. SOA concepts are often seen as built upon,
and evolving from older concepts of distributed computing[3][2] and modular
programming.

http://en.wikipedia.org/wiki/Servic...chitecture

Dime de todo esto lo que no se puede aplicar a SQL Server.

No es más que la enésima moda que no aporta nada nuevo y que solo tiene el
propósito de venderle a los incautos cosas que no necesitan. Parece mentira
que a estas alturas aun no conozcas el negocio en el que estás metido.

hablamos si?, pero no des afirmaciones que no son correctas SOA es una
arquitectura de servicios y eso no tiene nada que ver conque SQL sea un
servicio de Windows,



Macho a ver si aprendes a leer de una vez. Yo no he dicho nada de que SQL
Server sea orientado a servicios por que sea un servicio Windows. Es que no
son una ni dos veces, es que nunca te enteras de nada.
Respuesta Responder a este mensaje
#42 Carlos M. Calvelo
30/04/2008 - 20:01 | Informe spam
Hola Alfredo,

On 30 apr, 19:54, Alfredo Novoa wrote:
El Wed, 30 Apr 2008 14:30:15 -0300, Maxi escribió:

Macho a ver si aprendes a leer de una vez. Yo no he dicho nada de que SQL
Server sea orientado a servicios por que sea un servicio Windows. Es que no
son una ni dos veces, es que nunca te enteras de nada.



Te aseguro que no sabe lo que has querido decir con
snaque oil y hablandome a mi de congresos, libro y expertos,
seguro que tampoco sabe quien es(era!) Dijkstra.

Acaba de entrar en la conversación y siento como que el
nivel sube a pasos gigantescos.

Saludos,
Carlos
Respuesta Responder a este mensaje
#43 Maxi
30/04/2008 - 20:08 | Informe spam
Se nota que solo tienes teoria y nada mas, pero hagamosma facil, para
Alfredo novoa SQL 6.5 7.0 y 2000 son SOA, que asi sea entonces, ni pienso
debatir sobre este tema contigo francamente, es simplemente lo que tu
opinas, que siempre ha sido SQLServer una arquitectura SOA

Ya que puse a Wiki, aca le paso el completo

http://es.wikipedia.org/wiki/Arquit..._servicios

Digame ahora si las versiones anterioes a las 2005 tenian WSDL, Web Service
y los otros Standares de SOA, a penas 2000 tenia XML


-
Microsoft M.V.P en SQLServer
SQLTotal Consulting - Servicios en SQLServer
Email:
"Alfredo Novoa" escribió en el mensaje
news:11336vz2ix4d7$
El Wed, 30 Apr 2008 14:30:15 -0300, Maxi escribió:

que tiene que
ver SOA con lo que vos estas diciendo, por Dios!



Pues todo.

Service Oriented Architecture (SOA) is a computer systems architectural
style for creating and using business processes, packaged as services,
throughout their lifecycle. SOA also defines and provisions the IT
infrastructure to allow different applications to exchange data and
participate in business processes. These functions are loosely coupled
with
the operating systems and programming languages underlying the
applications.[1] SOA separates functions into distinct units
(services)[2],
which can be distributed over a network and can be combined and reused to
create business applications.[3] These services communicate with each
other
by passing data from one service to another, or by coordinating an
activity
between two or more services. SOA concepts are often seen as built upon,
and evolving from older concepts of distributed computing[3][2] and
modular
programming.

http://en.wikipedia.org/wiki/Servic...chitecture

Dime de todo esto lo que no se puede aplicar a SQL Server.

No es más que la enésima moda que no aporta nada nuevo y que solo tiene el
propósito de venderle a los incautos cosas que no necesitan. Parece
mentira
que a estas alturas aun no conozcas el negocio en el que estás metido.

hablamos si?, pero no des afirmaciones que no son correctas SOA es una
arquitectura de servicios y eso no tiene nada que ver conque SQL sea un
servicio de Windows,



Macho a ver si aprendes a leer de una vez. Yo no he dicho nada de que SQL
Server sea orientado a servicios por que sea un servicio Windows. Es que
no
son una ni dos veces, es que nunca te enteras de nada.
Respuesta Responder a este mensaje
#44 Carlos M. Calvelo
30/04/2008 - 20:14 | Informe spam
On 30 apr, 20:08, "Maxi" wrote:
Se nota que solo tienes teoria y nada mas, pero hagamosma facil, para
Alfredo novoa SQL 6.5 7.0 y 2000 son SOA, que asi sea entonces, ni pienso
debatir sobre este tema contigo francamente, es simplemente lo que tu
opinas, que siempre ha sido SQLServer una arquitectura SOA

Ya que puse a Wiki, aca le paso el completo

http://es.wikipedia.org/wiki/Arquit..._servicios

Digame ahora si las versiones anterioes a las 2005 tenian WSDL, Web Service
y los otros Standares de SOA, a penas 2000 tenia XML




De verdad que no te enteras. Ahora busca 'snake oil' y
lo combinas con todo eso.
Respuesta Responder a este mensaje
#45 Alejandro Mesa
30/04/2008 - 20:36 | Informe spam
Alfredo Novoa,

Todo eso se da por supuesto, pero otra cosa es querer hacer las cosas
mal desde un principio sin necesidad.



Estoy de acuerdo. Sabemos que mucho tiene que ver un mal diseño de db, en
que se genere codigo tipo espagueti. Sabemos que muchas veces por no seguir
los estandares, despues nos vemos con problemas de rendimiento.

AMB


"Alfredo Novoa" wrote:

On Wed, 30 Apr 2008 09:26:15 -0700, Alejandro Mesa
wrote:

>No no, yo no propongo, la realidad nos fuerza a tomar esas decisiones. No
>todos los proyectos pueden durar el tiempo necesario para ser implementados
>como se deberia. Tampoco las compañias tienen el tiempo necesario para que
>las cosas se hagan como se deben. Nunca has escuchado a tu jefe decir que lo
>necesitan para ayer?

Hombre, eso se da por supuesto.

Si las prisas te obligan a hacer las cosas mal pues entonces aunque
tengas justificación las cosas quedan mal hechas :-)

>Ademas, ni los propios software de desarrollo te brindan todas las
>posibilidades.

Y si has hecho algo algo mal por que el software de desarrollo te ha
obligado a ello entonces has hecho algo mal :-)

Todo eso se da por supuesto, pero otra cosa es querer hacer las cosas
mal desde un principio sin necesidad.

>De todas manera, la razon por la que Pablo no quiere usar sps no es justa si
>se le compara con el mismo comportamiento que se tiene con consultas Adhoc y
>preparadas.

Estoy de acuerdo.


Saludos
Alfredo

Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida