• 把业务逻辑写在存储过程中有哪些缺点和优点?


    https://segmentfault.com/q/1010000000251484

    我的观点:这么设计的目的并不能方便随时修改业务逻辑,只是方便熟悉存储过程的开发人员,能够随时修改业务逻辑。对于后续的业务逻辑越趋于复杂,修改就越困难,存储过程中的重复代码就越多;重复代码越多,系统的坏味道就越散发开来。

    由于.net在一些系统UI展示控件上,跟数据库集成,非常方便用户开发,简单的拖拖拉拉,再链接数据库,就能搞出一些像样的东西出来。这对系统逻辑不是很复杂的情况下,开发简单高效,且由于逻辑不是很复杂,也容易维护,所以很有优势。

    但是系统的逻辑一旦达到一定的复杂度,把业务逻辑都放在存储过程中就会有2个很大的弊端,一是把系统的压力全都压到数据库上,这样势必增加系统的风险,且针对将来的负载增加的时候,不容易做水平扩展;二是业务逻辑放到存储过程,维护比较困难,且对于一些业务扩展,势必会增加冗余的代码,这样也会增加系统出bug的风险。

    所以,在考量一个设计方案的时候,要综合系统的复杂度、技术实现平台等各方面。例如,对于技术实现平台,.net提供了这种集成数据库的UI控件,能够有效实现数据驱动,开发简单高效,但java就无法提供这种优势(ps:一般把这种叫做【表模块】设计方式);对于系统复杂度很高,为了应付后续的需求,一般会考虑【领域模型】设计方式,通过对业务进行领域建模,利用面向对象的各种设计模式,能够有效满足业务需求,且将系统压力分流到应用端,通过应用端的水平扩展,更方便系统扩容。

    由于不了解你们系统的业务复杂程度,所以也不能说现有的基于存储过程的设计方式有什么问题,这需要你根据你们系统的需求等各方面综合来评估。最后推荐一本书:企业应用架构模式

  • 相关阅读:
    spring原理
    架构师和数学
    项目经理需要注意的地方
    如何快速掌握一门新技术
    项目管理要做啥
    编程原则
    架构设计的常用思想
    聊聊编程范式
    程序员与哲学家
    IT人员如何有效规划自己时间
  • 原文地址:https://www.cnblogs.com/chucklu/p/11780774.html
Copyright © 2020-2023  润新知