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