关于将业务逻辑卸载到数据库引擎支持的视图和查询,我尽可能避免这样做,只在这样做可以极大地提高效率和用户响应时间时才这样做。
例如,在我所在的地方,有数据库人员和应用程序人员。尝试对现有应用程序进行分析很容易变成一场毫无结果的搜索。
应该尽可能使数据库与应用程序保持分离,以便可以轻松地用其他数据库或数据库提供商替换它,而设置新数据库的人员只需付出最少的认知努力。如果功能已卸载到数据库,则需要进行额外的测试以确保触发器和视图的正确执行,并且它们按预期工作。
此外,将所有业务逻辑与应用程序保持在一起,允许所有功能和文档在一个地方可读,这在对现有应用程序进行后续分析时非常宝贵。最糟糕的情况是功能分散在各个地方。
将所有内容与应用程序保持在一起意味着由一组人员负责,在我的情况下,是应用程序人员。减少了来回的请求。请记住,任何时候都有人员参与进来,例如要求 DBA 为您创建视图或触发器,该 DBA 必须对其工作承担责任,无论要求是什么,都会导致更多的官僚主义和管理复杂性。