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?