OC

Knowledge OS
主帖 12 条回复

如果使用数据库,大家是否会把业务逻辑放到存储过程?

灵感之源 灵感之源 · 2013年09月05日 · 阅读 6 · 无人欣赏。

我从第一个使用数据库的商业产品开始都是用存储过程,复杂业务逻辑完整并可被多放使重用,维护方便,安全。想像复杂的逻辑在应用服务器和数据库传递,还有注入,不能临时表游标等,问题多了。

存储过程的缺点就是偶尔的cache plan因为参数 sniffer或者corrupted,要折腾一下。还有容错这块看怎么做了,如果在sp吞了调用端又难以调试。对批量数据传递进来处理有点麻烦譬如用xml做参数,如果直接ad hoc那可以随便拼接。。。但我还是推荐存储过程。。。cache那是双刃剑看怎么用。

回复

12 条
#1
tinyfool
2013年09月05日

其实还是一个架构设计问题,如果真的需要用一些比较淫巧的手段,一定要有清晰的结构,隔离等等

#2
灵感之源
2013年09月05日

做存储过程也是一个separation of concerns的做法啊,如果在代码里面写SQL,既不容易改,也把控制和数据逻辑混在一起了

#3
tinyfool
2013年09月05日

我记得我刚玩Sql Server的时候还是蛮喜欢存储过程的,后来发现要移植的时候很麻烦,后来就不用Sql Server了

#5
akunamotata
2013年09月05日

能放存储过程当然放存储过程了,维护起来也容易,特别是统计。 还有就是能用数据库定时任务,尽量用数据库定时任务,总比代码定时任务强多了。

#6
tinyfool
2013年09月05日

我现在主要是MySQL,没啥需要NoSQL级别的负载啊

#7
灵感之源
2013年09月05日

同意akunamotata,我都忘记了任务那块了。

听说腾讯还是在用MySQL做QQ的存储?

#8
stros
2013年09月06日

我的经验有点不同,一直是尽量避开存储过程。项目型的统计多的可以用存储过程吧,这东西不好移植,并且在数据库切分之类的操作时会有麻烦,业务逻辑一般不耦合数据层的东西。

#9
tomqq
2013年09月06日

@tinyfool ,其实存储过程移植起来也是蛮方便的,存储过程->新的存储过程

#10
tinyfool
2013年09月06日

@tomqq 理解能力太差,一般说移植都是从sql server到mysql之类的

#11
tomqq
2013年09月06日

tiny都这把年纪了,还在这里讨论这种菜鸟问题做啥···

#12
指针为空
2013年09月06日

之前的公司有一个DBA团队,专门负责开发存储过程,我们做后端的只需要告诉他们需要那些数据就可以了,他们做好后就会告诉你去调用哪些存储过程去。

本帖有12个回复,因为您没有注册或者登录本站,所以只能看到本帖的10条回复。如果想看到全部回复,请注册或者登录本站。
登录 或者 注册
顶楼 / 底楼 / 首页