这是必然会发生思想交流的地方,也就是说,开发人员(DV)和DBA的思想。使用业务逻辑(BL)并将其存储在数据库中可能会产生使美化或使它的实施变得恐怖的影响。
对于某些RDBMS产品,存在用于业务逻辑和对象基础结构的高级库/工具/ API,人们可以快速学习并在其应用程序中使用它们。对于其他RDBMS,不存在任何库/工具/ API。
过去,客户端服务器应用程序通过存储过程(SP)成为BL的桥梁。对于Oracle和SQL Server等产品,这是提早完成的。随着诸如PostgreSQL和MySQL之类的开源数据库的兴起,使用它们的数据库面临着BL中存储过程开辟新局面的风险。PostgreSQL在这方面非常迅速地成熟,因为不仅实现了存储过程,而且还产生了制作客户语言的能力。MySQL基本上停止了在存储过程世界中的发展,并以一种简化的语言形式出现了很多限制。因此,当涉及到BL时,您完全可以依靠MySQL及其存储过程语言。
真正只有一个问题:无论是RDBMS,BL是否应全部或部分驻留在数据库中?
想想开发人员。当应用程序出现问题时,调试过程将使开发人员跳入和跳出数据库,以遵循可能偶尔间歇或不间歇正确的数据变化。就像编写C ++应用程序并在中间调用汇编程序代码一样。您必须从源代码,类和结构切换到中断,寄存器和偏移量,然后返回!这将调试带到了相同的水平。
开发人员可以通过位于内存而不是数据库中的业务对象,结合语言配置(C ++的编译器标志,PHP / Python的不同设置等),设计出一种执行BL的高速方法。有些人试图通过编写库来调试这种思想,以便更快地将代码运行到数据库中,在该库中,调试存储过程和触发器已很好地集成在数据库中并且几乎无法使用。
因此,开发人员面临着用两种语言来开发,调试和维护源代码和BL的挑战。
现在想想DBA。DBA希望保持数据库的精简性,并在存储过程领域中尽可能多地发挥作用。DBA可能会将BL视为数据库外部的东西。但是,当SQL调用BL所需的数据时,SQL需要精简而卑鄙。
现在,让思想见面!
开发人员对SP进行编码并使用迭代方法。DBA查看SP。DBA确定单个SQL语句可以替代开发人员编写的迭代方法。开发人员发现DBA建议的SQL语句需要调用其他BL相关代码或不遵循SQL语句正常执行计划的SQL。
鉴于此,配置,性能调整和SP编码成为BL用于数据检索的深度和数据强度的函数。BL的深度和数据密集度越高,提供给数据库的数据量和处理能力就必须在同一页上的开发人员和DBA越多。
结论
数据检索的方式应始终涉及Developer和DBA阵营。为了速度和效率,必须始终就哪种编码方法和数据检索范式可以协同工作做出让步。如果仅在代码获取数据之前一次准备供源代码处理的数据,则DBA应该指示使用精益和均值SQL。如果BL是DBA不适应的,那么控制权就在开发人员手中。这就是为什么DBA应该看到他/她自己和项目团队的一部分,而不是他/她自己的孤岛,而开发人员必须在允许的情况下让DBA对SQL进行微调。