详谈为什么互联网公司禁止使用存储过程

标签: 互联网 公司 存储过程 | 发表时间:2022-04-22 01:47 | 作者:菜鸟厚非
出处:https://juejin.im/backend?sort=monthly_hottest

!!! 本文已参与「新人创作礼」活动,一起开启掘金创作之路。更多干货文章,可以访问 菜鸟厚非


【强制】禁止使用存储过程,存储过程难以调试和扩展,更没有移值性。

其实这一句话足以说明问题,有小伙伴肯定会疑惑,在银行或者证券等公司工作为什么会大量使用存储过程呢?这就是我们今天讲解的内容,首先两个问题

1 . 为什么银行都在用存储过程 2 . 存储过程为什么成为互联网弃子

像银行这类系统,通常会采用商用的数据库 Oracle、DB2 等,应为这些供应商有着完整的解决方案,可以帮助银行规避大量的风险。银行的一些外围业务会使用一些国产的分布式数据库或者 MySQL 这样开源的数据库。

银行是以数据为核心,且早期银行在建设业务的时候,没有好的国产数据库,所以采采购了 Oracle、DB2 这样有成功经验的的数据库。且每套数据库都有着自己的一套存储过程开发方式,只要掌握了存储过程的开发技巧,对数据的交互过程是没有问题的,对于前端使用 go、java、c++ 才是第二关心得问题。


但是近些年,互联网企业,都在禁用存储过程呢。

1 . 闭源

首先其实去 IOE (进行国产化),应为有些数据库并不开源,你不知道会不窃取你的核心数据,会不会外泄。 在这里插入图片描述2 . 数据迁移 在这里插入图片描述 如果说切数据库可以,数据迁移是比较好迁移的一方,但是大量的存储过程要全部重写,一旦重写谁能确保新的存储过程在新的平台执行没有问题,一旦影响的核心业务谁能谁敢带来的风险。

尽管一直在喊去 IOE ,在一些外围业务上会用 Mysql 这样的开源数据库进行一些尝试,但在核心业务上仍然是 Oracle、DB2 等数据库。

3 . 分布式场景的问题 在水平分表的情况下,用存储过程处理所有数据的分析结果,存储过程是做不到的。应为存储过程只能作用于局部分片的数据库。

4 . 数据库压力激增 在这里插入图片描述 大家也都知道分布式缓存架构,这样的目的是从上到下,逐级的进行筛选,尽可能的使少量的请求到数据库,减少数据库压力。应为百分之八九十处理慢,都是在数据库 SQL 层面。

应为存储过程本身都是在数据库层面,之前多的很多缓存方面都是徒劳的,最后处理数据的时候还是要到存储过程进行处理。

5 . 无法保证分布式全局事务 在这里插入图片描述假如我们在一个水平分片情况下,处理数据导入,数据要均匀的分布在每个表。假如分片1、分片2成功了,分片3应为某个字段没有效验通过失败了数据进行了回滚,那可不可以通过分片3存储过程回滚分片1、分片2的数据到导入前的状态数据呢。

显然是不可能的,在数据库层面也没有提供跨进程的数据库交互方面的 API ,所以在分布式场景下存储过程是不是就不好用了。

6 . 难以调试,没有内置的版本管理方案

这个很多同学都身有体会,我们在处理百万数据库的时候,很可能应为某一行的某个字段,而导致存储过程执行异常,这个你怎么可以快速从百万数据库从快速找到那一条呢,这个是相当费劲的。

7 . 业务执行碎片化 在这里插入图片描述在银行应为场景下,对于核心的业务,银行会让自己的员工写存储过程处理流水、账单等业务数据,外围外包系统开发人员对于核心的业务不是会那么了解,他们只需要调用银行员工写的存储过程即可,当然这也是职责分明。

但是有个特别恶心的事情,如果某一天执行存储过程失败了,对于外围系统收到的异常信息是特别少的,可能只提示、存储过程的某一行、异常时间,不知道当时的数据场景。作为外包人员只能去猜,是哪一块执行异常,然后根据本地日志定位到调用的哪个存储过程发生了错误,然后又到数据库根据数据库执行异常,结合去分析。想想都头发麻,是不是这么回事,懂得都懂。


一个有趣去的帖子

在这里插入图片描述

相关 [互联网 公司 存储过程] 推荐:

详谈为什么互联网公司禁止使用存储过程

- - 掘金后端本月最热
本文已参与「新人创作礼」活动,一起开启掘金创作之路. 【强制】禁止使用存储过程,存储过程难以调试和扩展,更没有移值性. 其实这一句话足以说明问题,有小伙伴肯定会疑惑,在银行或者证券等公司工作为什么会大量使用存储过程呢. 这就是我们今天讲解的内容,首先两个问题. 为什么银行都在用存储过程 2. 像银行这类系统,通常会采用商用的数据库 Oracle、DB2 等,应为这些供应商有着完整的解决方案,可以帮助银行规避大量的风险.

北美互联网公司求职记

- - 雷锋网
@zellux,雷锋网已取得作者授权, 原文链接. 最近签掉了 offer,找工作的事情算是告一段落. 在这里写一点面试体验和心得,希望对有兴趣去北美工作的朋友有所帮助. 先简单介绍下自己,国内硕士在读,明年毕业,没有牛 paper,也没参加过 ACM-ICPC 竞赛. 在实验室做过内核、虚拟机和 Android 底层相关的研究工作,接过一些网页和移动开发的外包,2011 年开始在字节社兼职负责后台开发.

.中国互联网公司人效榜

- - 创业家杂志社
你为你的公司贡献了多少收入、多少利润. 前几天,腾讯科技一篇 报道,揭示苹果人均净利润高达45.18万美元,谷歌的人均净利润也有24.2万美元,分列第一、二名. 如果要就此排一个榜单的话,绝没可能出现在这份榜单前列的惟一一个美国科技巨头可能是亚马逊,亚马逊现在都在季度亏损中,而去年的人均销售额也才85.6万美元(它去年一举就招了三万名员工),离苹果谷歌遥遥万里.

互联网公司福利哪家强?

- - IT耳朵
年底了,作为互联网圈儿的“耳朵”,IT耳朵有责任也有义务为大家整理一下互联网公司的福利情况,不过原来我们的好伙伴拉勾网已经整理过了,朵仔就在这里重新编辑、配图然后分享给大家,看看有没有你家公司呢. 他们赚多少:每年提薪14%左右. 他们的住行:办公室有专门的睡眠室. 他们还有啥:大概就是五险一金、带薪年假、员工培训这些常规项目.

互联网公司的指数们

- - 扯氮集--上海魏武挥的Blog
4月头上,随着蚂蚁金服正式推出淘金100指数,BAT三家互联网巨头再一次在同一个领域里碰头:他们都开始做自己的股票指数. 如果算上新浪的i指数,迄今为止,已经有四家互联网公司编制股票指数. 对股票指数的投资,被视为一种被动型投资,它比较适合风险厌恶度高而且相对没有太多时间看盘的人. 我一向认为,在整个大势走好的情况下,投资指数,是一种不错的解决方案.

mysql存储过程 游标

- - ITeye博客
end if; insert into table3 (name) select name from table2 where id =i; end loop cursor_loop; CLOSE c1; end $ delimiter ;. 已有 0 人发表留言,猛击->> 这里<<-参与讨论.

oracle 存储过程 基础

- - ITeye博客
差不多一年没写过存储过程,最近要写,发现基本忘了,google一番之后,觉得很有必要把基础的东西写下来备忘. decalre -- 变量声明 var1 number(2);. -- 仅声明 var2 char(2) := '11';. -- 在声明的同时初始化 begin. -- 语句 end; -- 语句块结束.

小米到底是一家硬件公司还是互联网公司?

- - 科幻星系
随着小米IPO日益临近,业内越来越多的相关消息不断传出. 还记得在小米1时代,这款手机以1999元的价格搭配顶配的硬件等,迅速对彼时的智能手机市场产生了极大冲击. 当时业界就有人质疑雷军:赚的钱够喝粥吗. 当然了,雷军是笑而不语还是暗自窃喜我们不得而知. 但就现在来说,雷军以低价硬件起家的策略显然已经成功了.

国内移动互联网初创公司汇总

- lichzy - 同步控
如果您是关注移动互联网行业的项目分析师、资本合伙人,如果您刚刚打算涉足移动互联网领域创业,又如果您正在从事移动互联网相关的产品策划、竞品分析,那么请将这份来自 17Startup 的、不断更新的国内移动互联网初创公司汇总列表加入您的浏览器收藏夹——你可能会经常用到它. 网页地址:http://17startup.com/#!/category/7.

【快公司】如何防止互联网破坏记忆力?

- psyZETA - 东西
科学研究证实,Google等搜索引擎,及其带来的更容易获取的信息,能损害我们的记忆能力. 如果你不想成为新科技的受害者,下面有四种方法防止你的大脑受损. 苏格拉底曾警告过人类,信息交流方式的革新,终将损害我们自身的记忆. 两千年过后,他的预言成为了现实:著名期刊《科学》上发表的最新研究显示,Google会损害人的大脑.