分布式数据库30讲
王磊
光大银行首席数据架构师
新⼈⾸单¥19.9
2286 人已学习
课程目录
已更新 18 讲 / 共 33 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词|为什么要学习分布式数据库?
免费
基础篇 (8讲)
01|什么是分布式数据库?
02|强一致性:那么多数据一致性模型,究竟有啥不一样?
03|强一致性:别再用BASE做借口,来看看什么是真正的事务一致性
04 | 架构风格:NewSQL和PGXC到底有啥不一样?
05 | 全局时钟:物理时钟和逻辑时钟你Pick谁?
06 | 分片机制:为什么说Range是更好的分片策略?
07 | 数据复制:为什么有时候Paxos不是最佳选择?
08 | 基础篇大串讲:重难点回顾+思考题答疑+知识全景图
开发篇 (9讲)
09|原子性:2PC还是原子性协议的王者吗?
10 | 原子性:如何打破事务高延迟的魔咒?
11|隔离性:读写冲突时,快照是最好的办法吗?
12 | 隔离性:看不见的读写冲突,要怎么处理?
13 | 隔离性:为什么使用乐观协议的分布式数据库越来越少?
14 | 隔离性:实现悲观协议,除了锁还有别的办法吗?
15 | 分布式事务串讲:重难点回顾+思考题答疑+知识全景图
16 | 为什么不建议你使用存储过程?
17 | 为什么不建议你使用自增主键?
分布式数据库30讲
15
15
1.0x
00:00/00:00
登录|注册

16 | 为什么不建议你使用存储过程?

王磊 2020-09-14
你好,我是王磊,你也可以叫我 Ivan。
今天,我们一起来到了这门课的第 16 讲。如果你学习并理解了前面的所有课程,那么我要恭喜你,这不仅是因为你学完了一半的课程,还意味着你已经征服了“数据库事务”这座高峰。当然,如果你有困惑的地方,也不必沮丧,因为接下来会是一小段平缓地带,我们会探讨一些相对独立的问题。比如我们今天的话题,为什么不建议你使用存储过程?
有些资深的数据库开发同学可能不同意这个观点,我猜他们大概会说:“存储过程很好呀,那些用不好的人就是自己水平烂,不接受反驳!”其实,我就有过这样的念头,但是现在的我面对分布式数据库,会更倾向于少用或者不用存储过程。下面,我就来和你分享下这个心路历程吧。

我从 C/S 时代走来

当我刚成为一个名程序员时,正好是 C/S 架构时代的末期。那时最流行的开发套件是 PowerBuilder 和 Sybase 数据库。PowerBuilder 是一款可视化开发工具,有点像 VB,开发好的程序运行在用户的 PC 终端上,通过驱动程序连接远端的数据库。而 Sybase 当时正与 Oracle 争夺数据库的头把交椅,它和 SQL Server 有很深的渊源,两者在架构和语言上都很像。
C/S架构
在这个 C/S 架构中,数据库不仅承担了数据存储、计算功能,还要运行很重的业务逻辑,相当于数据库同时承担了应用服务器(Application Server)的大多数功能。而这些业务逻辑的技术载体就是存储过程。所以,不管是 Sybase 还是 Oracle,它们存储过程的功能都非常强大。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《分布式数据库30讲》,如需阅读全部文章,
请订阅文章所属专栏新⼈⾸单¥19.9
立即订阅
登录 后留言

精选留言(5)

  • 佳佳的爸
    OceanBase支持Oracle的存储过程是迫不得已的事情,因为这决定着 它是否能 "侵入" Oracle的传统客户阵营-大企业和金融领域,是一种纯粹的商业行为。举个例子来说,Oracle 的ERP产品中大量采用了存储过程来实现业务逻辑,最复杂的业务逻辑的源码打印出来几十页,这么复杂的存储过程 我相信 OceanBase的工具是无法完美处理(移植到OB)的,但是为了竞标之类的商业行为,你如果不支持Oracle的很多特性 你就根本没有参与的机会。 这就是中国的现实情况。
    2020-09-14
    1
    2
  • tt
    我觉得既然存储过程都支持用JAVA了,那数据复制应该就可以借鉴TCC,直接在代码层也就相当于是“服务层”实现,而且又是基于内存的,重试的成本还是比较低的,直接用代码往节点里写得了。

    都是基于内存,但与REDIS不同,应该不会要求那么高的性能,直接用线程池同时往数据节点里写数据
    2020-09-14
  • 佳佳的爸
    VoltDB用K-safety机制解决数据复制的问题,其实就是N+1的副本机制,VoltDB在写数据操作的时候,会在每个副本中执行该语句,这样就可以保证数据被正确插入每个副本。这N+1的副本都可以同时提供访问,同时允许最多N个副本丢失(分区故障), 当N+1个副本都不可用的时候,VoltDB就会停止服务进行修复。
    2020-09-14
  • 佳佳的爸
    存储过程是单机数据库时代的不可替代的产物,当年我当程序员的时候,存储过程是最好的解决前后端代码分离的利器。一个10万条订单批量审核的操作,调用存储过程几分钟搞定,前端vb代码执行,一个小时都出不了结果

    作者回复: 是的,存储过程对于数据密集型计算,绝对是一大利器。

    2020-09-14
  • 地下城勇士
    clickhouse的物化视图其实是个触发器,这种应该从什么角度分析?
    2020-09-14
收起评论
5
返回
顶部