后端逻辑用存储过程合适吗

迷途的码农 发布于 2017/01/19 22:26
阅读 1K+
收藏 0

接手一个项目,java,web项目。主要提供后端接口。我发现代码虽然也是三层,不过全部逻辑都是调用存储过程。我看了一下数据库,存储过程有接近1000个。我在想这样的设计合理吗?我感觉不合理。不过我感觉,可能是因为我们公司也有其他语言做开发,用存储过程可以做到共用。

不过把逻辑放到数据库,整个维护性就很大,也比较凌乱。我在想我是继续用存储过程,还是重写?用常用的设计。直接写代码,不用存储过程?

后面可能ios,安卓,web都会使用同一套java后段做接口。求指导!

加载中
2
AlanVision
AlanVision

对于楼上某些同学喷用存储过程实现业务逻辑的做法,我想说两句:

1.存储过程不见得就比代码难维护,在某种程度上存储过程可能比代码实现业务更容易维护。首先,无论系统代码怎么重构,都不会影响到存储过程,能保证核心业务不出错。第二,代码风格很难统一,时间长了之后比存储过程更难维护

2.实际上很多大型,对安全性比较高的系统,核心业务都是用存储过程来实现的。银行金融类系统尤为突出。

3.存储过程更安全高效,核心业务可以直接掌控在DBA手里,而不是普通的程序员。

特别是业务稳定,不经常调整,对安全性较高的系统,我个人认为用存储过程写业务逻辑挺合适。

0
无锡首席大都督程序员
虽然不太合理,但是已经1000个了,还是憋重写了吧
0
魔力猫
魔力猫

不得不说,这是很早期的糟糕设计方式。数据库就是存储、整理数据的地方,业务流程放到里面既不好开发调试,也不好维护。

技术债务遗留确实比较严重。建议逐步用微服务进行迁移分割。

首席
国外对微服务这类分布式服务本来就是讲究能不用就不用。到底谁在邯郸学步,你自己清楚
首席
你先去了解了再发言,谢谢。什么叫落后?什么叫先进?你知道oracle的erp主要开发语言是什么吗?你以为全世界都是几个非死不可,谷歌?
魔力猫
魔力猫
回复 @首席 : 因为某个老软件曾经因为当时的技术环境使用了某个技术,所以就可以不管这些年的发展,非要使用相同的技术?邯郸学步。
首席
sap的mrp等运算大量使用存储过程,诶,多看看好的软件再发言吧
乌龟壳
乌龟壳
为了表述清楚,我说一下存储过程的定义:由数据库引擎亲自执行的逻辑,不限于pl/sql
下一页
0
纯洁徐
纯洁徐

和我以前的公司团队一样;

看你的岗位,如果你是CTOor部门负责人亦或签订了长期合同有分红的,建议服务端使用JAVA或其它编译行语言重写;但如果只是新手,这个项目或企业不值得长期待的就算了吧,搞不好就是个坑这个锅你背不起,看年终奖多少再定夺吧!

其它语言开发更应该使用微服务架构,一般都是主线核心业务JAVA RPC 内部管理后台PHP python node都行,用户层的API可以直接用RPCClient 或者其它语言都行,毕竟java php的工人最好招,意味着成本也是最低的;

祝你好运

0
一号男嘉宾
一号男嘉宾
存储过程是快速处理复杂业务的唯一方法,支持存储过程。顺便说一句,不会写SQL,还怕写存储过程的码农只是码农,不是程序员。
aobabushiz
aobabushiz
呵呵,存储过程就是十年前的老程序员抱残守缺
一号男嘉宾
一号男嘉宾
回复 @魔力猫 : 只能说明你写的是hello world级别的应用
魔力猫
魔力猫
实际上正好相反,采用存储过程进行业务处理和分析,越来越少。
市委书记李达康
市委书记李达康
会sql但是不会存储过程的码畜路过!
0
-飞客-
-飞客-

1000个存储过程?坑爹啊!绝对坑爹,能重写就重写(时间,人力允许的情况下)

最好的策略是不接这个项目,哈哈

mark35
mark35
回复 @-飞客- : 对于.net, java这种部署不方便的系统,在数据库直接升级存储过程可简单多了
-飞客-
-飞客-
回复 @mark35 : 存储过程如果能善用,确实有速度的优势,但是对于软件开发来说开发和维护的成本在大多数情况下都比速度重要的多,这也是为什么存储过程越来越少,编程语言越来越高级的原因,要往前看。
mark35
mark35
年度结息,同行业一家公司的系统让领导等了一小时还没出结果。我们公司用存储过程算不超过10分钟搞定。
mark35
mark35
我们公司就这样,后台从winform换到.net换到java,数据库从msql换到oracle,现在业务逻辑全在存储过程中…… 200多个包,1000多的存储过程…………
0
rocky_star
rocky_star

人家愿意用就用吧,改1000个存储过程的事情就别想了。没可能。

另用不用存储过程就是个权衡。

0
咖啡碼農
咖啡碼農
强逻辑性的业务处理用存储过程实现再好不过了,搞不懂楼上说的“数据库只是存储的地方”,业务流即数据流,当然如果你用mysql的话,当我没说过。
风翔飞
风翔飞
回复 @wuyiw : 总体来说还是根据业务场景来划分吧,各有各的好处,不过遇到分库分表之类的存储过程就不好搞了
wuyiw
wuyiw
回复 @风翔飞 : 不容易维护不太认同, 存储过程也是程序, 维护性要看写的人. 对数据库压力是增大了, 但也要权衡整体性能, 如果只是业务流程复杂而不需要大量计算, CPU增加点负担不是事吧(数据库瓶颈一般在IO对不对?)
风翔飞
风翔飞
数据库当然不光支持存储,但是所有业务都放数据库里就不合适了,不容易维护,对数据库压力也大,成本变高,很多业务还是在内存里处理更合适
一号男嘉宾
一号男嘉宾
N这么说很容易被喷的,这里很多都是mysqler,他们不懂数据库还有存储过程触发器约束全文索引序列这些玩意,在他们眼里,mysql存放数据和text来存放数据莫得区别。他们很多人连char和varchar的区别都不懂。
0
天地的星空
天地的星空
公司缺个dba。。。你速度退散吧
0
冬日暖阳85
冬日暖阳85

要看应用场景的。曾经我接触过MRP的系统,绝大部分复杂逻辑都是存储过程实现的,在外部实现效率是个大问题。

返回顶部
顶部