今天的存储过程和当年的触发器,本质上面临的是同样的问题:一种技术必须要匹配同时代的工程化水平,与整个技术生态相融合,否则它就要退出绝大多数应用场景。
《阿里巴巴 Java 开发手册》中也赫然写着“禁止使用存储过程,存储过程难以调试和扩展,更没有移植性。”
分布式数据库的支持情况
多数 NewSQL 分布式数据库仍然是不支持存储过程的。OceanBase 是一个例外,它在 2.2 版本中增加了对 Oracle 存储过程的支持。
F1 的论文提出了独立 UDF Server 的思路,是分布式架构下存储过程的一种实现方案,但能不能适合普通的企业网络环境,尚待观察。但这个方案中,存储过程的实现语言不局限于 SQL 方言,而是放宽到多种主流语言,向标准兼容,具备更好的开放性。这提升了存储过程技术与 DevOps 融合的可能性。
VoltDB 是一款基于内存的分布式数据库,VoltDB 将存储过程作为主要操作方式,并支持使用 Java 语言编写。开发者可以继承系统提供的父类(VoltProcedure)来开发自己的存储过程。VoltDB 的基础就是存储过程这种预定义事务方式。存储过程、内存存储、单线程三者互相影响,使得 VoltDB 具备出色的性能表现。
此文章为6月Day16学习笔记,内容来源于极客时间《分布式数据库30讲》