业务逻辑层与存储过程优缺点对比

一,存储过程

优点:

1,减少网络带宽,按理论存储过程会提高性能.

2,无需重新编译,更改后即可运行,无需重新编译代码

3,由专门的dba写的sql语句更高效

4,安全性,(在传输用户名密码时,可防止注入等情况)

 

缺点:

1,依赖于数据库厂商,难以移植(当一个小系统发展到大系统时,对数据库的要求也会发生改变)

2,业务逻辑大的时候,封装性不够,难调试难以维护

3,复杂的应用用存储过程来实现,就把业务处理的负担压在数据库服务器上了。没有办法通过中间层来灵活分担负载和压力.均衡负载等

 

结:

存储过程用于进行一些简单的业务逻辑以及数据传送会更好维护,但是在复杂应用时,应交于中间层服务器处理.所以合适的时候用着合理的操作.




------------

------------

存储过程:
1.编译后生成中间代码,该代码的执行效率远比客户端数据库访问快,但是大多数高级的数据库系统都有statement cache的,所以编译sql的花费没什么影响。但是执行存储过程要比直接执行sql花费更多(检查权限等),所以对于很简单的sql,存储过程没有什么优势。
2.使用的是服务器端游标,而客户端程序使用的是客户端游标,速度快
3.不需要象 J2EE 的程序那样要部署,适当的时候只需在后台更新,便于调试与维护
4.占用网络流量较少,如果在存储过程中没有多次数据交互,那么实际上网络传输量和直接sql是一样的。

应用层:
1.一般性的业务逻辑应该放在中间层,这对软件以后的技术扩展有很多好处,像网格技术,就是基于中间件技术的。
2、性能扩展性问题:随着系统访问量的增长,系统必须进行不断地升级扩展,特别对于大型系统而言,更重要的是性能可扩展性而不是局部的性能。J2EE等多层结构要解决的也是这方面的问题。处理逻辑如果全部放在存储过程里,所有的处理都在数据库服务器上进行,消耗的就是数据库服务器的CPU资源,大家知道数据库服务器由于需要较高的可靠性,通常选用的都是价格昂贵的服务器,对数据库服务器升级通常都花费很大。如果把处理逻辑放在中间层服务器上进行,中间层服务器一般都是小型的机器,价格便宜,而且中间层服务器的CPU通常主频比数据库服务器的速度还快(比如现在8CPU的数据库服务器主频只有800M,而双CPU的刀片式服务器CPU主频已经到2.8G了),而且对于多层架构,支持中间层服务器可以增加多台机器进行负载均衡,用中间层服务器即价格便宜,扩展空间也更大。
3、开发问题:存储过程还是过程型语言,其重用性比不上JAVA等面向对象语言开发。用JAVA开发的中间层服务可服用性更好(当然,前提是你采用面向对象设计)
4. 实际上这个只是要将访问数据库的接口统一,是用存储过程,还是EJB,没太大关系,也就是说,在三层结构中,单独设计出一个数据访问层,同样能实现这个目标。

总结:
1.存储过程是基于计算密集型的业务逻辑。如果是基于操作密集型的就不要用存储过程了
2.所有数据访问在应用层封装为数据访问层,在那里,如果SQL简单的话,直接用SQL;如果SQL复杂,或者数据交互多且中间数据最后不会用到,使用存储过程
3.(对于核心的算法,不变的东西放在前台程序中。对于容易改变的字典数据,接口逻辑和配置信息,可以放在后台用存储过程来完成。最大好处,也是最终目的是:源程序不改,只改后台存储过程就可以潇洒应付客户需求的改变。)这个不知道对不对


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值