位置:51电子网 » 技术资料 » 通信网络

GKD-Base PL/SQL存储函数实现的关键技术研究

发布时间:2008/5/27 0:00:00 访问次数:597

来源:电子技术应用 作者:高朝瑞 熊 伟 陈宏盛 翟玉人

摘要:介绍具有自主知识产权的某安全数据库管理系统gkd-base的pl/sql引擎,基于该引擎研究gkd-base存储函数机制实现的关键技术。设计了函数管理器和执行状态堆栈,通过语法树表示存储函数编译后生成的中间代码,并解决了中间代码的执行问题。最后实现了in、out、inout三种参数模式函数的参数传递机制。

关键词:存储函数 过程式sql语言 pl/sql 函数管理器 执行状态堆栈

gkd-base是一个具有自主知识产权的安全数据库管理系统。经过十几年的发展和试点应用,已经证明该系统是稳定和安全可靠的。但是,随着应用需求向深度和广度的发展,gkd-base在很多方面暴露出不足,如不支持过程式sql语言、不支持存储过程和函数、缺少触发器功能,这都为gkd-base数据库管理系统的进一步推广应用带来了不小的障碍。由于目前数据库管理系统产品大都支持过程式的sql语言,如oracle的pl/sql、sql server的t-sql、postagresql的pl/pgsql等,其中又以oracle的pl/sql使用最为广泛。因此,为使gkd-base适应应用需求的发展,满足数据管理和开发人员的需求,笔者开发了gkd-base pl/sql引擎,进而在引擎的基础上实现了gkd-base存储函数机制。gkd-base pl/sql引擎兼容了oracle pl/sql v2.3语言规范,可以使用变量、类型、表达式、条件和循环、过程和函数等过程式语言中的通用机制进行程序设计,同时也可以使用sql语句进行数据操作。

存储函数是独立存在于表之外的数据库对象,是由用户按照存储函数语言规范编写的经过数据库分析和编译的pl/sql程序,它有输入/输出参数和返回值,可以被其它应用程序调用。存储函数可以避免重复编码,具有更高的可靠性和效率。是数据库管理系统的重要功能扩充。本文在介绍gkd-base pl/sql引擎设计框架的基础上,重点探讨gkd-base存储函数实现的关键技术。

1 gkd-base pl/sql引擎的体系结构

gkd-base采用客户服务器结构,以多线程机制支持客户访问,登录到数据库的用户实际上是运行数据库管理系统映像的一个线程。gkd-base支持tcp/ip协议,客户可以在任务tcp/ip网络和服务器建立连接访问数据库。gkd-base api提供了用户应用、实用程序和第三方开发工具三种接入数据库的方式,并提供了两个级别的接口,即gkd-base内部接口gkd-api和gkd-base odbc driver。gkd-api是用户访问数据库的高效调用方式,用户可利用gkd-api实现实时性要求较高的数据库应用,起到比较理想的效果。gkd-base odbc driver是gkd-base开放连接的手段,符合odbc扩展一级。在gkd-base的odbc驱动程序支持下,用户可利用各种第三方开发工具,方便地开发gkd-base数据库应用程序。

gkd-base pl/sql引擎应用模式如图1。pl/sql语句块通过pl/sql编译器编译成语法树形式表示的中间代码,中间代码信息可以保存在dbms的中间代码库中。客户应用程序中的请求由gkd-base预处理器分离成为过程语句部分和sql命令部分。过程语句解释执行器解释执行过程语句的中间代码,sql命令则直接调用gkd-api执行。

根据pl/sql语言兼有过程式语句和sql语句的特点,gkd-base pl/sql引擎把过程式语句和sql语句分开过程。为了降低引擎实现的复杂程度,尽可能地从功能性的角度将整个引擎划分为不同的处理模块,每个处理模块尽可能地降低相互间的耦合程度。其中最主要的划分是将整个引擎划分为前端编译器和后端解释执行器。

前端编译器包括语句预处理、sql语句分析、过程语句分析以及中间代码生成等功能。pl/sql语句块输入后,由语言预处理功能分离成sql语句和过程语句。对于sql语句,由gkd-base sql引擎解析后,建立sql语句结点,进行相应的变量绑定和语法检查,检查无误后产生语法树形式的中间代码。对于过程语句,将语句成分进行语法分析,在分析中把声明的变量和数据类型加入到符号表中,同时也产生语法树形式的中间代码。

后端解释执行器的功能就是对前端编译器生成的中间代码进行解释执行。因此在结构上,解释执行器与编译器对应,也有过程语句执行模块和sql语句执行模块。过程语句解释执行器解释执行过程语句的中间代码,sql命令则直接由sql引擎执行。另外,解释器还包括例外处理模块,负责错误检查和报告。

符号表是一个包含程序中的变量、自定义类型和函数信息的数据库,它是gkd-base pl/sql引擎的核心数据结构。它以一个关键字域(通常是一个符号的名字)为索引,一个关键字域的值对应于库中的一条记录。每条记录,即数据库的一个项目,都对应着一个符号的信息,如变量的类型或

来源:电子技术应用 作者:高朝瑞 熊 伟 陈宏盛 翟玉人

摘要:介绍具有自主知识产权的某安全数据库管理系统gkd-base的pl/sql引擎,基于该引擎研究gkd-base存储函数机制实现的关键技术。设计了函数管理器和执行状态堆栈,通过语法树表示存储函数编译后生成的中间代码,并解决了中间代码的执行问题。最后实现了in、out、inout三种参数模式函数的参数传递机制。

关键词:存储函数 过程式sql语言 pl/sql 函数管理器 执行状态堆栈

gkd-base是一个具有自主知识产权的安全数据库管理系统。经过十几年的发展和试点应用,已经证明该系统是稳定和安全可靠的。但是,随着应用需求向深度和广度的发展,gkd-base在很多方面暴露出不足,如不支持过程式sql语言、不支持存储过程和函数、缺少触发器功能,这都为gkd-base数据库管理系统的进一步推广应用带来了不小的障碍。由于目前数据库管理系统产品大都支持过程式的sql语言,如oracle的pl/sql、sql server的t-sql、postagresql的pl/pgsql等,其中又以oracle的pl/sql使用最为广泛。因此,为使gkd-base适应应用需求的发展,满足数据管理和开发人员的需求,笔者开发了gkd-base pl/sql引擎,进而在引擎的基础上实现了gkd-base存储函数机制。gkd-base pl/sql引擎兼容了oracle pl/sql v2.3语言规范,可以使用变量、类型、表达式、条件和循环、过程和函数等过程式语言中的通用机制进行程序设计,同时也可以使用sql语句进行数据操作。

存储函数是独立存在于表之外的数据库对象,是由用户按照存储函数语言规范编写的经过数据库分析和编译的pl/sql程序,它有输入/输出参数和返回值,可以被其它应用程序调用。存储函数可以避免重复编码,具有更高的可靠性和效率。是数据库管理系统的重要功能扩充。本文在介绍gkd-base pl/sql引擎设计框架的基础上,重点探讨gkd-base存储函数实现的关键技术。

1 gkd-base pl/sql引擎的体系结构

gkd-base采用客户服务器结构,以多线程机制支持客户访问,登录到数据库的用户实际上是运行数据库管理系统映像的一个线程。gkd-base支持tcp/ip协议,客户可以在任务tcp/ip网络和服务器建立连接访问数据库。gkd-base api提供了用户应用、实用程序和第三方开发工具三种接入数据库的方式,并提供了两个级别的接口,即gkd-base内部接口gkd-api和gkd-base odbc driver。gkd-api是用户访问数据库的高效调用方式,用户可利用gkd-api实现实时性要求较高的数据库应用,起到比较理想的效果。gkd-base odbc driver是gkd-base开放连接的手段,符合odbc扩展一级。在gkd-base的odbc驱动程序支持下,用户可利用各种第三方开发工具,方便地开发gkd-base数据库应用程序。

gkd-base pl/sql引擎应用模式如图1。pl/sql语句块通过pl/sql编译器编译成语法树形式表示的中间代码,中间代码信息可以保存在dbms的中间代码库中。客户应用程序中的请求由gkd-base预处理器分离成为过程语句部分和sql命令部分。过程语句解释执行器解释执行过程语句的中间代码,sql命令则直接调用gkd-api执行。

根据pl/sql语言兼有过程式语句和sql语句的特点,gkd-base pl/sql引擎把过程式语句和sql语句分开过程。为了降低引擎实现的复杂程度,尽可能地从功能性的角度将整个引擎划分为不同的处理模块,每个处理模块尽可能地降低相互间的耦合程度。其中最主要的划分是将整个引擎划分为前端编译器和后端解释执行器。

前端编译器包括语句预处理、sql语句分析、过程语句分析以及中间代码生成等功能。pl/sql语句块输入后,由语言预处理功能分离成sql语句和过程语句。对于sql语句,由gkd-base sql引擎解析后,建立sql语句结点,进行相应的变量绑定和语法检查,检查无误后产生语法树形式的中间代码。对于过程语句,将语句成分进行语法分析,在分析中把声明的变量和数据类型加入到符号表中,同时也产生语法树形式的中间代码。

后端解释执行器的功能就是对前端编译器生成的中间代码进行解释执行。因此在结构上,解释执行器与编译器对应,也有过程语句执行模块和sql语句执行模块。过程语句解释执行器解释执行过程语句的中间代码,sql命令则直接由sql引擎执行。另外,解释器还包括例外处理模块,负责错误检查和报告。

符号表是一个包含程序中的变量、自定义类型和函数信息的数据库,它是gkd-base pl/sql引擎的核心数据结构。它以一个关键字域(通常是一个符号的名字)为索引,一个关键字域的值对应于库中的一条记录。每条记录,即数据库的一个项目,都对应着一个符号的信息,如变量的类型或

相关IC型号

热门点击

 

推荐技术资料

耳机的焊接
    整机电路简单,用洞洞板搭线比较方便。EM8621实际采... [详细]
版权所有:51dzw.COM
深圳服务热线:13692101218  13751165337
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!