viernes, 19 de octubre de 2012

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:

  1. 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:
    1. 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.
    2. 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.
    3. 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:

  1. 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.
  2. 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.
  3. 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.
  4. 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?

3 comentarios:

  1. 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

    ResponderEliminar
  2. Pero en Java "escríbelo una vez, ejecutalo donde sea" ;)

    ResponderEliminar
  3. Valido, aunque con los requisitos mientras mas complejos, mas dificiles de plasmar en un lenguaje como SQL, pienso yo.

    ResponderEliminar