Acceso a Datos (Mejores practicas)

18/05/2007 - 20:28 por ivan13pocaterra | Informe spam
Buenas Amigos:

Siempre en busqueda de las buenas practicas de desarrollo, para poder
implementarlas en los sistemas en los que trabajo, tengo una duda
sobre el uso o no de stored procedures para el acceso a datos.

1.- Me encontre con una opinion que indica que para el acceso a datos,
no es necesario el uso masivo de stored procedures. Es decir, que si
yo necesito hacer un un simple "Insert", "Update", "Delete" o un
"Select", los mismo se pueden colocar explicitame y directamente en la
capa de datos o de negocio de la aplicación. Y dejar solo los stored
procedures para realizar operaciones mas complejas (que luego se
llamarian desde la aplicación .NET).

2.- Otra opinión es que el acceso a datos solo debe ser realizado
mediante el uso exclusivo de stored procedures (asi sea un simple
select). Es decir, en todo el codigo de la aplicación no debe existir
un solo "Select", "Insert", "Update" o "Delete".

Bueno.. escucho opiniones de los expertos!

Saludos

Preguntas similare

Leer las respuestas

#6 Alfredo Novoa
22/05/2007 - 15:48 | Informe spam
On Tue, 22 May 2007 10:58:02 +0200, "Jesús López"
wrote:

No estoy de acuerdo Alberto.



Yo si :)

Sin embargo, los procedimientos almacenados siguen teniendo ventajas de
seguridad. Por ejemplo puedes crear un procedimiento para eliminar un
registro y dar permiso de ejecución de este procedimiento a los usuarios.
Así los usuarios pueden eliminar registros, pero DE UNO EN UNO. Por otra
parte si utilizas la instrucción DELETE directamente desde la aplicación
tienes que dar permiso de delete sobre la tabla a los usuarios, con lo que
un usurario PUEDE ELIMINAR TODOS LOS REGISTROS DE LA TABLA DE UNA SOLA VEZ,
usando la instrucción DELETE FROM LaTabla sin cláusula WHERE. Lo mismo
ocurre para insert y update.



La seguridad es la misma, lo único que pasa es que van a tardar un
poco más en borrar toda la tabla. El problema es que a las
aplicaciones que hagan un uso legítimo de la base de datos les va a
pasar lo mismo. Perjudicas a los usuarios que sabes que existen para
ponerles las cosas un poco más incómodas a supuestos hackers que no
sabes si existen.

Además a los hackers hasta les gusta que les pongan las cosas
difíciles :-)

Otra ventaja de los procedimientos almacenados es la encapsulación.



Pero es la forma más primitiva de encapsulación que tienen los SGBD
SQL. Es mejor encapsular con vistas siempre que se pueda.


Saludos
Respuesta Responder a este mensaje
#7 ivan13pocaterra
22/05/2007 - 18:06 | Informe spam
Excelentes opiniones...

La verdad, yo estoy de acuerdo con la encapsulación de todo en stored
procedures, sin embargo, por rapidez (y presión) en el desarrollo de
aplicaciones a veces se opta por colocar las sentencias SQL en el
codigo.

Como soy desarrollador y no me considero ni de cerca un DBA (Aunque
puedo hacer cualquier stored procedure), no entiendo el concepto de
"Planes de Ejecución de SQL Server", ni sus atributos ni propiedades.

Gracias por sus opiniones.. y ojalá existiera un consenso sobre el
tema..

Saludos
Respuesta Responder a este mensaje
#8 Alfredo Novoa
22/05/2007 - 18:52 | Informe spam
On 22 May 2007 09:06:43 -0700, wrote:

La verdad, yo estoy de acuerdo con la encapsulación de todo en stored
procedures,



¿Y que se consigue con eso además de aumentar los costes de
desarrollo?

Mayor rendimiento no. Mayor seguridad tampoco.


Saludos
Respuesta Responder a este mensaje
#9 Jesús López
22/05/2007 - 23:17 | Informe spam
Dios me libre de tener la responsabilidad de administrar una aplicación cuya
seguridad haya sido diseñada por una persona que piense que es lo mismo dar
permiso para eliminar un registro que dar permiso para eliminar todos los
registros de golpe.

No sólo es una cuestión de seguridad sino de intentar evitar que alguien
inadvertidamente elimine más registros de los que realmente quiere eliminar.
Toda precaución es poca, sobre todo con los usuario "avanzados" que son
capaces de usar el Excel para ejecutar consultas contra SQL Server y hacer
estropicios.

Hasta el momento, que yo sepa, no hay otra forma de encapsular un SGDB y que
proporcione la misma funcionalidad que los procedimientos almacenados, por
muy primitiva que te parezca.

No tengo nada en contra de las vistas y otros artefactos, pero no
proporcionan la misma funcionalidad que los procedimientos almacenados.


Saludos:


Jesús López





"Alfredo Novoa" escribió en el mensaje
news:
On Tue, 22 May 2007 10:58:02 +0200, "Jesús López"
wrote:

No estoy de acuerdo Alberto.



Yo si :)

Sin embargo, los procedimientos almacenados siguen teniendo ventajas de
seguridad. Por ejemplo puedes crear un procedimiento para eliminar un
registro y dar permiso de ejecución de este procedimiento a los usuarios.
Así los usuarios pueden eliminar registros, pero DE UNO EN UNO. Por otra
parte si utilizas la instrucción DELETE directamente desde la aplicación
tienes que dar permiso de delete sobre la tabla a los usuarios, con lo que
un usurario PUEDE ELIMINAR TODOS LOS REGISTROS DE LA TABLA DE UNA SOLA
VEZ,
usando la instrucción DELETE FROM LaTabla sin cláusula WHERE. Lo mismo
ocurre para insert y update.



La seguridad es la misma, lo único que pasa es que van a tardar un
poco más en borrar toda la tabla. El problema es que a las
aplicaciones que hagan un uso legítimo de la base de datos les va a
pasar lo mismo. Perjudicas a los usuarios que sabes que existen para
ponerles las cosas un poco más incómodas a supuestos hackers que no
sabes si existen.

Además a los hackers hasta les gusta que les pongan las cosas
difíciles :-)

Otra ventaja de los procedimientos almacenados es la encapsulación.



Pero es la forma más primitiva de encapsulación que tienen los SGBD
SQL. Es mejor encapsular con vistas siempre que se pueda.


Saludos
Respuesta Responder a este mensaje
#10 Jesús López
22/05/2007 - 23:19 | Informe spam
Mayor rendimiento sí. Mayor seguridad también.

Decir sí o no, es muy fácil. Dar argumentos es otra historia

Saludos:

Jesús López




"Alfredo Novoa" escribió en el mensaje
news:
On 22 May 2007 09:06:43 -0700, wrote:

La verdad, yo estoy de acuerdo con la encapsulación de todo en stored
procedures,



¿Y que se consigue con eso además de aumentar los costes de
desarrollo?

Mayor rendimiento no. Mayor seguridad tampoco.


Saludos

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