Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-03-2012
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
Ventajas de usar procedimientos almacenados

Resulta que estamos haciendo algunos cambios a un sistema en producción algo grande y que opera en varias sucursales de uno de nuestros clientes. Los cambios implican que al momento de emitir una factura sucedan algunas otras cosas en las tablas adicionales a las que ya hace el sistema. Este sistema está en producción desde el 2006 y como comprenderán tiene en su haber varios parches de diversa índole. Debido a que las modificaciones son a nivel de tablas, optamos por sugerencia de uno de nuestros ingenieros en utilizar procedimientos almacenados y triggers para no tener que tocar el código Delphi que ya tenemos y hacer que la propagación de los ajustes sea prácticamente instantánea en todas las sucursales.

Hemos hecho pruebas y resulta bastante más práctico hacerlo usando esta opción pero quería preguntarle a quienes ya hacen uso extensivo de los procedimientos almacenados que otras ventajas y desventajas tiene utilizarlos.

Una de las que me gustaron bastante es que de esta manera también tenemos la ventaja de poder usar cualquier lenguaje de programación pero no me gusta mucho el tener que meter lógica de negocio dentro de la BD.

A ver que opinan
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita
  #2  
Antiguo 18-03-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Además de lo que has comentado, algo primordial de los "stored procedures" y de los "triggers" es que al ejecutarse en el servidor, liberan a la red y los clientes de un trabajo importante.
Desde luego, yo soy partidario de poner en la BD todo lo que pueda hacer ella, ya que facilita mucho también el trabajo de desarrollo de cualquier aplicación, imagina un proceso que ahora se decide que tenga que hacer algo con otra tabla, si lo hacemos en el código del programa habrá que copiar una nueva versión a todos los clientes con las molestias (y contratiempos) que puede ocasionar, por ejemplo, que uno se quede sin actualizar. Sin embargo, si se hace en la BD, nadie se enteraría y todos seguirían trabajando como siempre.
Por supuesto, hay que tener muy claro qué cosas pueden ir en la BD, no todo vale.
Responder Con Cita
  #3  
Antiguo 19-03-2012
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.463
Poder: 21
newtron Va camino a la fama
Totalmente de acuerdo con casimiro. Yo soy partidario también de dejar que la base de datos haga el máximo de trabajo posible, esto repercute en dar más agilidad a la aplicación y más facilidad al desarrollador que se despreocupa de esas tareas haga lo que haga en cualquier parte del programa lo cual redunda en un menor porcentaje de problemas.

El único problema sería que si cambiaras de base de datos casi con toda seguridad tendrías que adaptar los procedimientos y los triggers a la nueva base de datos pero no creo que ese sea un caso habitual.

Saludos
__________________
Be water my friend.
Responder Con Cita
  #4  
Antiguo 19-03-2012
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Poder: 22
fjcg02 Va camino a la fama
Ventajas.
Todas las que puedas imaginarte.
Recomendación: que los triggers y procedimientos almacenados sean lo más atómicos posibles, sobre todo cuando sean de actualización. Queiro decir que si una modificación en un registro de una tabla desencadena varias actualizaciones, que cada actualización se dispare en los triggers de cada tabla.

Deventajas.
Alto grado de acoplamiento. Qué quiere decir esto. Que si una aplicación te piden que corra en otro motor de BBDD, tendrás que reescribir todo el código de los trigger y store procedures, y a veces eso, no es fácil.

Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
  #5  
Antiguo 19-03-2012
Hispanohablante Hispanohablante is offline
Miembro
NULL
 
Registrado: mar 2012
Posts: 23
Poder: 0
Hispanohablante Va por buen camino
En mi caso considero todas las ventajas y desventajas mencionadas.

Cita:
Empezado por AzidRain Ver Mensaje
no me gusta mucho el tener que meter lógica de negocio dentro de la BD
Comparto esto, pero sólo cuando usar un lenguaje externo al de la base de datos signifique reducir en buena medida la complejidad de un proceso. Por dar un ejemplo, en ocasiones es mejor usar Delphi para realizar liosos cálculos de facturación que hacerlo bajo SQL o alguna de sus variantes.

El coste de mantenimiento del código no debe ser desestimado. Un código fuente bien escrito en procedimientos almacenados puede resultar más delicado o difícil de seguir que un código fuente bien escrito en Object Pascal.

Tema aparte, siendo este un foro en español, dejo la sugerencia de escribir disparador cuando queremos decir trigger, de la misma forma en que decimos "este procedimiento almacenado es bueno" en lugar de "este stored procedure es bueno". Así, evitando mezclar voces de diferentes idiomas cuando no hay necesidad de ello, protegemos el nuestro.

Saludos cordiales.
__________________
:)
Responder Con Cita
  #6  
Antiguo 20-03-2012
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
Finalmente decantamos por continuar metiendo todo lo que valga la pena en la BD. La mayóría son cálculos simples o actualizaciones en cascada. Dado que es un sistema que ha venido creciendo de a poco, hemos avanzado a saltos al programar directamente en la BD en lugar de tener que estar actualizando a todo el mundo.

Gracias por los aportes
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Procedimientos almacenados. Godzuki MySQL 0 30-04-2011 21:12:42
Procedimientos Almacenados ANALILIAHUJA SQL 2 17-12-2007 15:32:07
procedimientos almacenados davidgaldo SQL 7 09-11-2006 17:28:33
Procedimientos almacenados rcantu MySQL 0 30-06-2006 00:59:32
procedimientos almacenados Gabriel2 SQL 1 13-01-2005 14:50:09


La franja horaria es GMT +2. Ahora son las 12:04:56.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi