什么时间使用存储过程
存储过程 中间件
数据库迁移 难 易
编写生产率 低 高
调优能力 强 弱
逻辑重用 异构平台,强 异构平台,弱
大数据汇总 易 难
性能 高 低
触发约束机制 强 弱
储存过程好处:
1. 适合监管,适合调用 --- 通过存储过程暴露业务过程,适合异构平台重用业务逻辑,这在企业开发中也很普遍,需要从许多数据库汇总业务数据, 每个业务数据库暴露出其可用的存储过程,远比暴露出表结构强. 举个例子: QA部门的客服数据是java 系统, 物料部门的BOM是cobol, 你如何去查询每种物料的故障率??? 这种在业务发展中不段出现的跨数据库查询, 用存储过程是个相当不错的方法,远比web service好用
2. 性能比在中间层快,适合调优 --- 尤其是在长时间的报表汇总中, 存储过程调优远比什么ejb,hibernate强悍,可用工具也多.
3. 大数据量汇总,中间件根本无法胜任.
所以,我仍然坚持,对于中小型企业系统,我只考虑哪些需要实时数据,客户对响应时间要求较高,而又牵涉的大量数据的场景,才会使用存储过程。其他的,还是用java好了。
存储过程也绝不是一无是处,在进行数据汇总、聚合等操作时存储过程时必然的选择,但复杂逻辑还是交给更适合的其他语言实现吧。也就是说不涉及业务逻辑的、单纯数据的操作应交给存储过程。