本篇主要是想给大家分享一下,数据库开发在实际开发如何处理的想法或者建议
不要用存储过程
原因一:存储过程不方便调试
不管是使用mysql,sqlserver,oracel,调试存储过程对开发人员,都将一种负担。要求稍高一些。
在这个动不动就要求全栈的时代,是不是尽可能减少开发人员的负担呢
开发人员还需要学习sql,成为dba吗?
原因二:不方便代码阅读和维护
在新人了解业务逻辑时,顺着代码走到最关键的逻辑处时,发现一个存储过程名称没有了,然后想了解具体的业务处理,还需要登录数据库,查看存储过程。
这就不方便了
原因三:存储过程处理复杂业务地麻烦,代价大,不如代码灵活
当需要循环处理时,存储过程中得使用游标,或者需要拆分,转换等等,在代码中可以轻松解决的,在存储过程中处理就比较复杂,
当然是可以解决的,但是成本太高了,使得存储过程难以维护。
特别是需要拼SQL语句时,这样的存储过程,维护起来太难了。
同时,由于一些开发人员在存储过程不写注释,不格式化,造成存储过程就像是一个麻花一样,更不难搞了。
所以,强烈不建议使用存储过程。
在代码中处理数据库,除了可以解决以上问题,也有利于数据库跟踪。
使用存储过程开发时,数据库跟踪也只能跟踪到一个执行存储过程的语句。
多多使用ORM
最好在开发时,将数据库的创建和表结构维护全交给ORM来搞定,代码中包含数据库和业务逻辑。
所有的开发人员,只需要维护代码就可以。
定时任务用代码实现,不要用数据库定时任务
用定时任务一般就要用到存储过程。以上问题就有可能发生。
使用数据库定时任务,不方便版本管理。
我们现在的代码都有版本管理功能,回滚或者找回都很方便。
我写下今天的文章就是发现,我之前系统后一个定时任务,其中一个步骤的SQL语句丢失了,找不到了。
由于系统比较老旧,已没有测试环境。所以丢失的脚本无法找回。如果使用代码的话,在代码库里肯定是有的。