过去四年,一直在维护一个银行的借记卡系统,核心功能是由外国人开发,使用 PLSQL ,几乎所有业务都是使用的 PLSQL 实现,java 实现的接口几乎就是透传,我一直有个疑问,在现在这个时代背景下,是不是还需要使用 PLSQL 实现业务?
1
hefish 188 天前
需要的。跟钱有关的,搞个 Oracle 很合理。
|
2
chuck1in 188 天前
那个年代的系统都是这样的,现代系统很少用了。
|
3
fengyie007 188 天前 via Android
新系统一般不会再用了吧。但作为老系统替换成本还是很高的,而且一般收益也不大,吃力不讨好的事一般不会有人去做。
|
4
sakilascott 188 天前 via Android
除非特别大的系统,实际上大部分系统用存储过程维护成本反而更低。
但是,mysql 的计算性能,根本跑不了存储过程,云厂商又要忽悠大家用 mysql 。。。 |
5
echo1937 188 天前 via iPhone
传统行业做核心业务这块,大型机加 oracle 是可以承载的,但现在不会了,一是贵,二是供应链不安全。
|
6
ivvei 187 天前
现在这个时代有何不同?
|
7
xhawk 187 天前 via Android
plsql 挺优秀的,就是能用 plsql 只有 oracle.国内的 oceanbase 还有其他的一些数据库也模仿 oracle. post gres 倒是有些 plsql 的创新,能生成 restapi ,但是在 plsql 里头,最优秀的是对包的管理,缺的,麻烦的是对代码的版本管理和格式化。当然,今日,完全可以不用 plsql ,一定要尽量思考如何前端,后端分离
|
8
kkwa56188 187 天前
跟金融业有关的, 还是得 Oracle, 新版 (其实很久了)早就可以 把 plsql 直通 restful 了, 只是贵和生态绑定, 一般的创业公司用不起
|
9
mingl0280 187 天前 via Android 1
银行系统,敢提取消存储过程的都是勇士。
|
10
NXzCH8fP20468ML5 187 天前 1
@mingl0280 现在银行核心早就禁止了存储过程了。
|
12
NXzCH8fP20468ML5 187 天前
@mingl0280 我就在干这件事情
|
15
NXzCH8fP20468ML5 187 天前 via Android
@mingl0280 数据库不一致是啥问题,你是想说数据不一致?
|
16
mingl0280 187 天前 via Android
@xxfye 比方说记账/事务写入比较复杂的时候,不使用存储过程难免遇到需要多次插入,如果这个过程中有部分数据库或者连接故障,这个不一致的风险和造成的损失肯定就要你们银行自己解决了。所以你们是自己扛了这部分的风险了吧?
|
17
murmur 187 天前
见过这种设计,写一大堆存储过程和函数,美其名曰在线部署不需要重启服务器
|
18
blankmiss 187 天前
我们这边的 ERP 系统 报表和单据就是存储过程 一个 sql 一千多行
|
20
NXzCH8fP20468ML5 187 天前 via Android
@mingl0280 为啥会出现多次插入?
应急方案是啥?能否回退?业务如何规避?今晚能不能解决? 防重放的设计咋写的?为什么能过评审,为什么代码能过 review ?测试为什么测不出来?业务为什么测不出来?平时的灰度吃屎了? 如果上面的重重防线都被击穿,还造成了比较大的社会影响,那就麻烦主管科技的副行长去人行金管局解释一下了,毕竟这个改造任务是总行下达的嘛。 |
21
hutoer 187 天前
|
22
leegradyllljjjj 187 天前 via iPhone
Proc 是挺恶心的,代码乱飞 也就这些传统行业的老人愿意用
|
23
Aksura 187 天前
> 几乎所有业务都是使用的 PLSQL 实现,java 实现的接口几乎就是透传
这种用法毫无疑问就是历史遗留问题,维护旧系统那就算了,新系统绝对不会这么使用。 > 在现在这个时代背景下,是不是还需要使用 PLSQL 实现业务? 存储过程的好处就是: 1. 负载发生在数据库服务器上。 2. 充分利用数据库的批量数据处理能力。 3. 充分利用数据库的事务能力。 能用到这 3 个好处之一的那些仅数据操作的逻辑,可以放到存储过程里。其他任何逻辑都应该在数据库外完成。业务逻辑肯定是不该放到存储过程里了。 |
24
chendy 187 天前 1
历史原因用过程没问题
新业务用过程要么是被逼无奈要么是有病 维护难,定位问题难,扩展性差,招人也不好招 |
25
sun1991 187 天前
@xxfye
应急方案是啥?能否回退?业务如何规避?今晚能不能解决? 防重放的设计咋写的?为什么能过评审,为什么代码能过 review ?测试为什么测不出来?业务为什么测不出来?平时的灰度吃屎了? 如果上面的重重防线都被击穿,还造成了比较大的社会影响,那就麻烦主管科技的副行长去人行金管局解释一下了,毕竟这个改造任务是总行下达的嘛。 -- 说了这么多, 感觉都是在甩锅. 强数据一致性到底是怎么实现的? |
28
GeekGao 187 天前
我觉得唯一的问题是:不利于架构演进和改造。
|
29
cloudzhou 187 天前
@mingl0280 一致性不是一定依靠存储过程,事务做得好,也能得到同样的效果,然后就是交易强一致,其他边缘弱一致,或者说最终一致
存储过程是把所有的逻辑过程,变成 PL/SQL 脚本,甚至可以理解为代码本身了 这样的问题是,调试、开发、并发,都有很大的缺陷 很多年前维护过,确实不利于大规模迭代开发,需求快速变更等 |
31
ervqq 187 天前
我司的返利系统都是靠存储过程计的
|
32
dlmy 187 天前
花巨资请 IBM 的专家来设计核算跟核销系统,核心逻辑就是 2 个存储过程,一个 8000 多行,操作 37 张表;一个 5000 多行,操作 29 张表...
优点是逻辑都是写在存储过程中,需求变动不需要重启服务器,改 SQL 就完事了。 缺点是平时得养着这些 IBM 的专家,因为出问题了我们没法排查,压根就看不懂写的什么。 |
33
NXzCH8fP20468ML5 187 天前 via Android
@sun1991 废话,出了事情为什么不甩锅?
|