你好,我是王磊。
这一讲是我们课程的第三个答疑篇,我会和你一起回顾第 16 讲到 22 讲的主要内容,这部分内容是围绕着数据库的“查询”展开的。同时,我也会集中解答留给大家思考题,并回复一些大家关注的热点内容。
第 16 讲:慎用存储过程
第 16 讲,我首先分享了自己职业生涯中的一个小故事,说的是如何用 Oracle 的存储过程将程序执行速度提升了 60 倍。这是个值得骄傲的事情,但后来我也发现了存储过程的局限性,就是难以移植、难以调试。所以,我个人的建议是不使用或者少使用存储过程。 然后,我们对分布式数据库的支持现状做了介绍,只有 OceanBase 2.0 版本支持 Oracle 存储过程,但官方并不建议在生产环境中使用。Google 的 F1 中通过引入独立的 UDF Server 来支持存储过程,可以使用 Java 等多种高级语言进行开发,这样调试和迁移会更加方便,但是普通企业的网络带宽能否支撑这种架构还不好说。
最后,我们重点介绍了 VoltDB。它是一款内存分布式数据库,大量使用内存、单线程、主要使用存储过程封装 SQL 是它的三个特点。VoltDB 的存储过程也支持 Java 开发,更加开放。
这一讲的是思考题是“VoltDB 的设计思路很特别,在数据的复制上的设计也是别出心裁,既不是 NewSQL 的 Paxos 协议也不是 PGXC 的主从复制,你能想到是如何设计的吗?”