Lógica de negocio en Base de datos o Java
En el desarrollo de software surgen muchas dudas, una de ellas me hizo reflexionar el siguiente planteamiento:
- Lógica de negocio en la base de datos: por lógica de negocio se entiende las reglas y la manipulación de los datos para proveer un resultado esperado. La ubicación de esta lógica supone varias ventajas:
- Lógica centralizada: la lógica esta centralizada y no importa el cliente que intente accederla, siempre va a ser la misma, con un mismo lenguaje SQL.
- Velocidad: al tener los datos en el mismo motor que ejecuta los procedimientos, se evita el ir y venir entre el servidor web o cliente y la base de datos por datos a procesar.
- Actualización: al estar centralizada, un cambio en la lógica actualiza todos los clientes que la utilicen, sin importar la plataforma.
También supone ciertas desventajas:
- Difícil de mantener: Trabajar con SQL es como trabajar con Cobol, es programación procedimental en su gran mayoría; agregar una nueva funcionalidad podría suponer revisar muy bien en que parte va y rezar para que nada se dañe.
- No hay buenas practicas: no hay test eficientes, no hay metodología orientada a objetos, no hay herencia ni interfaces que podría ahorrar bastante código y simplificar la lógica.
- Velocidad: el rendimiento podría llegar a verse comprometido al procesar todo en la base de datos, en vez de ser utilizada solo como repositorio de datos.
- Dependencia del proveedor: el software queda atado al SGBD que se utilizo para su desarrollo. Cambiar de motor implica volver a hacer todo de nuevo.
Que opinan ustedes?
Con respecto a la desventaja número 4: Así mismo, el tener toda la lógica del negocio en un lenguaje x implica atarlo a dicho lenguaje. Si posteriormente quieres o necesitas otra plataforma de desarrollo, también tendrías que hacer todo de nuevo. Por ese lado queda empatado BaseDatos vs código
ResponderEliminarPero en Java "escríbelo una vez, ejecutalo donde sea" ;)
ResponderEliminarValido, aunque con los requisitos mientras mas complejos, mas dificiles de plasmar en un lenguaje como SQL, pienso yo.
ResponderEliminar