Ver Mensaje Individual
  #2 (permalink)  
Antiguo 22/07/2016, 05:57
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Procedimiento almacenado - ventajas

Vamos a empezar por corregirte una afirmación antes que caigas en un error calamitoso:
Cita:
O las ventajas de los procedimientos basicamente es traspasar toda la logica de la aplicacion a la base de datos
NO, no y no. El objetivo de los SP NO es traspasar la lógica de la aplicación a la base de datos. Eso es un error de concepto muy usual entre los programadores.
En todo caso UNO de sus objetivos es sacar la lógica DE DATOS de la aplicación y dárselo a la base de datos EN AQUELLOS CASOS donde el procesamiento de los datos sea mas eficiente en la base.
Por ejemplo: No tiene ningún sentido que leas una tabla para luego recorrerla iterativamente en la aplicación a fin de realizar operaciones de sumatoria, calculo o agrupamiento y/u ordenamiento de los registros, así como otras consultas dependientes de ese resultado original, cuando todo eso lo puede hacer la propia base con un SP, devolviendote un resultado final.
¿Se entiende la idea?
Son los procesos hechos con datos de la base, para acciones que deriven en la base y que luego devuelva algún tipo de mensaje o resultados. Allí es donde tiene sentido usar SP. Esas acciones pueden ser simplemente una validación contra una tabla (que devuelva TRUE o FALSE), la lectura de una tabla o vista, o una secuencia muy larga de sentencias manipulando resultados y evaluaciones lógicas de acuerdo ellos para realizar otras.

Por otro lado, también posee ventajas a la hora de la segurizacion de la base, dado que 1) los SP son invulnerables al sql-injection, y 2) permiten utsar usuarios que no tengan permisos para hacer nada mas que ejecutar SP... con lo que esos mismos usuarios no pueden, por ejemplo, leer directamente una tabla si no es por medio de SP.

Finalmente, para hablar de eficiencia en performance, te lo ejemplifico en esta forma: Las aplicaciones que requieren mayor optimizacion y eficiencia son las bancarias, es decir aquellas que están relacionadas con movimientos de los bancos. Estas son tanto las de los cajeros automáticos como las de las transacciones de clearing y asientos masivos de todo tipo.
Bueno, NINGUNA de esas acciones y NINGUNO de los aplicativos de uso bancario utiliza directamente consultas SQL a las tablas, sino pura y exclusivamente stored procedures.

¿Se entiende bien esa idea?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)