一种基于Type 2 JDBC驱动的分离模式分布式存储过程实现方法技术

技术编号:25708518 阅读:28 留言:0更新日期:2020-09-23 02:55
本发明专利技术提供了一种基于Type 2 JDBC驱动的分离模式分布式存储过程实现方法,包括如下步骤:1)数据库通过JDBC T4接收客户端的请求,数据库通过执行器将存储过程封装成SPJ发送到UDR Server;2)UDR Server对SPJ进行解析,再通过JDBC T2接口来访问数据库的执行器,执行存储过程中的SQL语句。本发明专利技术使用Type 2的JDBC驱动结合UDR服务器实现分布式数据库的存储过程功能,在分离存储过程的执行和SQL执行的同时避免额外的网络通信,减少对存储过程执行性能的影响。

【技术实现步骤摘要】
一种基于Type2JDBC驱动的分离模式分布式存储过程实现方法
本专利技术属于分布式关系型数据库
,涉及到其中的存储过程语言在分布式数据库中的实现方法,尤其是涉及一种基于Type2JDBC驱动的分离模式分布式存储过程实现方法。
技术介绍
存储过程(storeprocedure)是传统关系型数据库系统的重要功能,也是ISOSQL标准的重要组成部分(SQL/PSM)。SQL/PSM最早在1996年作为SQL-92的一个扩展(ISO/IEC9075-4:1996)。并且从1999年的SQL:1999标准开始合并到标准之中,作为标准的第四部分。存储过程定义了一种SQL过程编程语言,主要功能包括控制流程、异常/条件处理、变量声明和赋值、表达式计算和游标等。传统的数据库系统基本都实现了对存储过程的支持,比如Oracle的PL/SQL,DB2的SQLPL,MySQL的存储过程和PostgreSQL的plpgsql等。其中Oracle的PL/SQL是最早和最流行的存储过程语言,其语法基于ADA编程语言。其他的存储过程语言也都受到PL/SQL语言的影响,也都采取类似的语法。包括SQL/PSM标准的语法也基于ADA语言。虽然标准和多数传统数据库都采用类似的语法,但是他们在具体的语法特性和功能上都存在一些区别。随着大数据时代的到来,传统数据库技术和产品已经不能满足大数据环境下对数据的处理能力、可扩展性和可靠性等方面的要求。以谷歌为代表的互联网企业在21世纪初开启了以可扩展性、可靠性为核心的NoSQL的技术方向。使用基于键-值对的数据模型替代传统的关系型数据库模型,使用简单的API接口替代复杂的SQL结构化查询语言。在谷歌公布其相关的技术论文后,相应的开源软件也随后开始开发对应的开源软件,其中Hadoop和HBase就是开源NoSQL大数据处理的领导者。NoSQL经过10多年的发展后也日益暴露出接口过于简单带来的各种问题。数据处理中的很多问题从数据库转移到了应用端,造成应用端不得不重复的处理各种原本应该由数据库来处理的问题,比如基于键-值的数据库不支持数据模型,无法描述数据的内部格式和数据类型,需要应用程序来解析和处理数据的数据模型。NoSQL的API接口不支持复杂的查询方式,也需要应用来处理复杂的查询过程。另外还有事务处理,NoSQL数据库通常不支持事务,或只支持单行数据修改的事务性,这也使得应用程序需要处理复杂的多行、多表、多节点事务。这些问题为应用开发和移植都带来了巨大的问题。为了解决NoSQL的这些问题,同时又能过保留NoSQL的性能和可扩展性优势,于是就出现了键-值存储技术和SQL结构化查询语句相结合的NewSQL技术。目前的NewSQL技术是在键-值存储技术的基础上加上SQL的特性来实现的,但是目前对SQL语言的支持都不完整,尤其是对存储过程的支持,目前其他基于NewSQL技术的分布式数据库都没有对存储过程语言的完整支持。比如Spanner、CockroachDB和TiDB都不支持存储过程功能,OceanBase也只支持最基本的存储过程功能,距离完整的存储过程支持还有很大的距离。现有的存储过程语言实现方式都是基于传统的过程语言实现机制,通常存储过程语言的处理和普通SQL处理类似,也是分为两个阶段,一个是编译阶段,一个是执行阶段,在编译阶段所有的语句经过词法解析、语法解析,然后生成指令;在执行阶段则通常基于堆栈的状态机的方式来执行编译生成的指令。这种实现方式的缺点是存储过程的执行和SQL语句的执行在同一个执行环境中,容易导致相互影响;特别是由于存储过程中包含用户或应用编写的逻辑,因此其中很可能存在错误或不严谨的地方。如果其中包括任何问题,比如占用大量内存或消耗大量CPU,就会导致数据库的基本SQL运行也受到影响甚至导致整个数据库系统崩溃,影响到其他数据库用户和应用的运行。
技术实现思路
有鉴于此,本专利技术旨在提出一种基于Type2JDBC驱动的分离模式分布式存储过程实现方法,以避免存储过程执行过程中产生的问题对SQL执行的影响。本专利技术的核心思想是:第一个是使用分离的UDR服务器进程来运行存储过程,避免存储过程的执行影响数据库本身的运行;第二个是在存储过程中使用Type2JDBC接口来运行SQL语句。为达到上述目的,本专利技术的技术方案是这样实现的:一种基于Type2JDBC驱动的分离模式分布式存储过程实现方法,包括如下步骤:1)数据库通过JDBCT4接收客户端的请求,数据库通过执行器将存储过程封装成SPJ发送到UDRServer;2)UDRServer对SPJ进行解析,再通过JDBCT2接口来访问数据库的执行器,执行存储过程中的SQL语句;其中,所述UDRSever是一个独立的用于运行用户自定义过程的服务进程。进一步的,UDRServer收到SPJ后,调用SPSQLJavaLibrary中定义的callSPSQL函数,callSPSQL函数根据调用参数中的存储过程名字从EsgynDB的元数据中查找并加载对应的SPSQL代码,然后调用SPSQL的解析器对SPSQL代码进行解析并生成语法树,解析结束后启动执行器根据生成的语法树执行解析后的代码。进一步的,所述SPSQLJavaLibrary主要包括如下模块:解析器,用于解析数据库语言,生成语法树,解析器是基于ANTLR解析器实现的;执行器,用于根据语法树执行其中的语句,执行器的基于ANTLR的访问者模式实现的;变量和作用域,用于处理变量声明、赋值和变量的作用域;表达式,用于处理各种表达式的计算处理;语句处理,用于执行非查询类的语句;查询处理,用于处理SELECT查询语句;游标,用于处理游标的打开、获取数据和关闭;包,用于处理包的定义和执行;信号,用于异常处理和条件处理;内置函数,用于定义内置的字符、日期时间,以及兼容性函数。相对于现有技术,本专利技术所述的方法具有以下优势:本专利技术使用Type2的JDBC驱动结合UDR服务器实现分布式数据库的存储过程功能,在分离存储过程的执行和SQL执行的同时避免额外的网络通信,减少对存储过程执行性能的影响。附图说明构成本专利技术的一部分的附图用来提供对本专利技术的进一步理解,本专利技术的示意性实施例及其说明用于解释本专利技术,并不构成对本专利技术的不当限定。在附图中:图1为本专利技术实施例所述基于Type2JDBC驱动的分离模式分布式存储过程实现方法的SPSQL调用流程;图2为本专利技术实施例所述方法的DDL语句处理流程;图3为本专利技术实施例所述方法的DML语句处理流程;图4为本专利技术实施例所述方法的存储过程创建/删除流程;图5为本专利技术实施例所述方法的存储过程调用流程;图6为本专利技术实施例所述方法的访问者解析执行器。具体实施方式需要说明的是,在不冲突的情况下,本专利技术中的实施例及实施例中的特征可以相互组合。<本文档来自技高网
...

【技术保护点】
1.一种基于Type 2 JDBC驱动的分离模式分布式存储过程实现方法,其特征在于,包括如下步骤:/n1)数据库通过JDBC T4接收客户端的请求,数据库通过执行器将存储过程封装成SPJ发送到UDR Server;/n2)UDR Server对SPJ进行解析,再通过JDBC T2接口来访问数据库的执行器,执行存储过程中的SQL语句;其中,/n所述UDR Sever是一个独立的用于运行用户自定义过程的服务进程。/n

【技术特征摘要】
1.一种基于Type2JDBC驱动的分离模式分布式存储过程实现方法,其特征在于,包括如下步骤:
1)数据库通过JDBCT4接收客户端的请求,数据库通过执行器将存储过程封装成SPJ发送到UDRServer;
2)UDRServer对SPJ进行解析,再通过JDBCT2接口来访问数据库的执行器,执行存储过程中的SQL语句;其中,
所述UDRSever是一个独立的用于运行用户自定义过程的服务进程。


2.根据权利要求1所述的方法,其特征在于:UDRServer收到SPJ后,调用Java语言编写的SPSQLJavaLibrary中定义的callSPSQL函数,callSPSQL函数根据调用参数中的SPSQL存储过程名字从EsgynDB的元数据中查找并加载对应的SPSQL代码,然后调用SPSQL的解析器对SPSQL代码进行解析并生成语法树,解析结束后启动执行器根据生成的语法树执行解析后的代...

【专利技术属性】
技术研发人员:何振兴刘明徐凯华王效忠冀贤亮苏锦佩
申请(专利权)人:贵州易鲸捷信息技术有限公司
类型:发明
国别省市:贵州;52

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1