Aquí es donde la reunión de las mentes, es decir, las mentes de los Desarrolladores (DV) y los DBA, debe suceder inevitablemente. Trabajar con Business Logic (BL) y almacenarlos en una base de datos puede tener un impacto que puede glorificar u horrorizar su implementación.
Para algunos productos RDBMS, existen bibliotecas / herramientas / API superiores para la lógica de negocios y las infraestructuras de objetos que uno podría aprender y emplear rápidamente en sus aplicaciones. Para otros RDBMS, no existen bibliotecas / herramientas / API.
En el pasado, las aplicaciones del servidor cliente hicieron el puente en BL a través de Procedimientos almacenados (SP). Para productos como Oracle y SQL Server, esto se hizo temprano. A medida que surgieron bases de datos de código abierto como PostgreSQL y MySQL, quienes las usaban corrían el riesgo de abrir nuevos caminos con los procedimientos almacenados en BL. PostgreSQL maduró muy rápidamente en esto, ya que no solo se implementaron procedimientos almacenados, sino que también surgió la capacidad de crear idiomas para los clientes. MySQL básicamente dejó de evolucionar en el mundo de los procedimientos almacenados y llegó en una forma simplificada de un lenguaje con muchas restricciones. Por lo tanto, cuando se trata de BL, está completamente a merced de MySQL y su lenguaje de procedimiento almacenado.
Realmente solo queda una pregunta: independientemente del RDBMS, ¿BL debería residir total o parcialmente en la base de datos?
Piensa en el desarrollador. Cuando las cosas salen mal en una aplicación, el proceso de depuración hará que el Desarrollador entre y salga de una base de datos para seguir los cambios de datos que pueden o no ser correctos intermitentemente. Es como codificar una aplicación C ++ y llamar al código Assembler en el medio. Tienes que cambiar de código fuente, clases y estructuras a interrupciones, registros y compensaciones ¡¡¡Y VOLVER !!! Esto lleva la depuración a ese mismo nivel.
Los desarrolladores pueden crear un método de alta velocidad para ejecutar BL junto con configuraciones de lenguaje (marcas de compilación para C ++, diferentes configuraciones para PHP / Python, etc.) a través de objetos de negocios ubicados en la memoria en lugar de en una base de datos. Algunos han intentado unir esta ideología para un código de ejecución más rápido en la base de datos escribiendo bibliotecas donde la depuración de procedimientos almacenados y disparadores está bien integrada en la base de datos y parece inutilizable.
Por lo tanto, el desarrollador tiene el desafío de desarrollar, depurar y mantener el código fuente y BL en dos idiomas.
Ahora piense en el DBA. El DBA quiere mantener la base de datos ajustada y tener el mayor significado posible en el ámbito de los procedimientos almacenados. El DBA puede ver BL como algo externo a la base de datos. Sin embargo, cuando SQL solicita los datos necesarios para BL, el SQL debe ser sencillo y medio.
Ahora, para el encuentro de las mentes !!!
El desarrollador codifica SP y utiliza métodos iterativos. DBA mira el SP. DBA determina que una sola instrucción SQL puede reemplazar los métodos iterativos escritos por el desarrollador. El desarrollador ve que la declaración SQL sugerida por el DBA requiere llamar a otro código relacionado con BL o SQL que no sigue los planes de ejecución normales de la declaración SQL.
A la luz de esto, la configuración, el ajuste del rendimiento y la codificación SP se convierten en una función de la profundidad y la intensidad de los datos de BL para la recuperación de datos. Mientras más profundidad e intensidad de datos tenga el BL, más Desarrolladores y DBA deben estar en la misma página para la cantidad de datos y poder de procesamiento dado a la Base de Datos.
CONCLUSIÓN
La forma de recuperación de datos siempre debe involucrar a los campamentos de desarrolladores y DBA. Siempre se deben hacer concesiones sobre qué métodos de codificación y paradigmas de recuperación de datos pueden trabajar juntos, tanto para la velocidad como para la eficiencia. Si la preparación de datos para que los maneje el código fuente se realiza solo una vez antes de que el código obtenga los datos, el DBA debe dictar el uso del SQL magro y medio. Si el BL es algo con lo que el DBA no está en sintonía, las riendas están en manos del desarrollador. Esta es la razón por la cual el DBA debe verse a sí mismo y formar parte del equipo del proyecto y no una isla en sí mismo, mientras que el Desarrollador debe permitir que DBA realice el ajuste fino del SQL si lo justifica.