【SQL开源代码栏目提醒】:本文主要为网学会员提供“GKDBase+PLSQL引擎若干关键技术研究与实现 - 编程语言”,希望对需要GKDBase+PLSQL引擎若干关键技术研究与实现 - 编程语言网友有所帮助,学习一下!
国防科学技术大学 硕士学位论文GKD-Base PL/
SQL引擎若干关键技术研究与实现 别:硕士 专业:信息与通信工程 指导教师:景宁 20051101 国防科学技术人学研究生院工学硕士学位论文 摘 要 随着计算机在军事领域中越来越广泛的应用,信息已经成为高技术条件下取得战争胜利的重要因素。
数据库管理系统是信息系统的核心,承担羞信息的存储和管理使命,它在信息化作战中扮演着越来越重要的角色。
GKD—Base是我国具有自主知识产权的一个安全数据库管理系统,它与国际上主流的数据库管理系统还有很大的差距,许多功能无法实现,迫切需要对其进行功能扩展和升级。
本课题目的在于解决GKD—Base功能扩展所需的关键技术。
本文对PL/SQL引擎的若干关键技术进行了研究和探讨。
论文从PL/SQL引擎的总体框架设计开始,讨论了编译器和执行器的基本结构。
重点介绍了PL/SQL编译器中符号表结构,该结构采用堆栈和数组,不仅可以获得良好的查找效率,还可方便地解决PL/SQL嵌套块结构中变量的可见性问题。
在此基础上,论文详细地论述了触发器实现技术,包括触发器的理论模型,触发器点火机制,级联触发和终止性等一系列相关问题,给出了与数据库内核紧密耦合的触发器实现机制、详细数据结构及实现算法.如对字典信息的优化访问、行级触发器所涉及到的新值与旧值数据处理结构等。
为提高系统效率,设计了触发器管理器机制。
论文最后讨论了面向对象的解析机制。
论述了与对象机制类似的包机制和记录机制的解析,并在此基础上依据类和对象(类的实例化)解析的特点,设计了类管理器,实现了对象机制的解析。
针对函数重载和类继承机制引起的多态性给出了解决方案。
论文中所讨论的技术已经在GKD—Base PL/SQL引擎中得到实现,该系统目前已能稳定运行,并与Oracle的PL/sQL进行了大量的对比测试,结果正确,能保证与Oracle基本兼容。
关键词:数据库系统,PL/SQL语言,触发器,终止性,面向对象解析机制 第1页 国防科学技术大学研究生院工学硕士学位论文 ABSTRACT With the wide application of computer m military’infomlation become impo咖tin hi曲一tech war enVironment. As the kemel of infomlation system,D酏abaseMaIlagement Systcm(DBMS)is charged wim infonnation storage蛆d management柚dis playing more aJld more imponant role in infomation waL oKD-B解e is a nativeSecurity Database Management System. Compared winl commercial DBMS,GKD—Base has many limitatioIlS for lack of some important fIlnctions.n needsextending and upgrade.This project is imended to solve tlle key technique iIlGKD-Base’s劬ction extending. nlis paper focuses on the research and implememation ofseveml key techniques inPL/SQL engine.Starting fmm the design of PL/SQL engine’s architectIlre,也is p印erdiscusses me basic s帆ctⅥe of compiler妣d executoL In me PL,SQL compiler,wcdesigned a special symbols table,which used stack and amy da协structums.ThestnlctlIre of symbols table suppo 国防科学技术大学研究生院工学硕士学位论文 表目录表2.1 Oracle PL/sQL各版本及其主要特性…..……………………8表3.1 DML触发器类型。
。
…。
..…,.……………。
.……………,。
28表3.2 DML触发器数据字典………….…一………….…….…..33 第“i页 国防科学技术大学研究生院1:学硕士学位论文 图目录图2.1 PL/SQL编译执行流程…….…….…图2.2 GKD—Base PL/SQL引擎结构….……..图2.3 Lex与Yacc的结合方式…….……..图2.4记录内存模型…..………….……图2.5符号结构....…….…..…………图2.6 newx内存模型转换图……...……..图2.7符号表内存模型………………。
…图2.8名字堆栈弹栈、压栈示意图….….....图2.9名字堆栈查找流程………。
………。
图2.10名字堆栈与符号表的指针存储模型……图2.11执行树的调用结构…...……….....图3.1视图的歧义....……….….……..图3.2 GKD—Base数据库触发器的实现框架..…图3.3 GKD—Base数据库触发链的设计………图3.4触发器管理器的结构.....………....图3.5级联触发器………...….……....图3.6 DML触发器试验结果图示..….……..图3.7 Instead—Of触发器实验结果图示…….图4.1雇员类的组成.…….………….…图4.2包的预编译的词法扫描流程图..……..图4.3包的预编译流程图….………….………………………图4.4包管理器的结构…………..………………..…………图4.5 记录的层次嵌套.………….………………....….……图4.6类管理器的结构.………...……...….……...………..图4.7对象类型与对象实例的关系...……….………..…………图4.8用键表法实现函数多态性的符号表结构……。
…………。
.。
.。
.. 心n坫墙憾坞娉扰俎挖∞四娩盯虬北钙们钉弱融 盱鼹鹎 第iv页 独创性声明 本人声明所里交的学位论文是我本人在导师指导下进行的研究工作及取得的研究成果.尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表和撰写过的研究成果,也不包含为获得国防科学技术大学或其它教育机构的学位或证书而使用过的材料.与我一同工作的同志对本研究所做的任何贡献均巳在论文中作了明确的说明并表示谢意. 学位论文题目: gK堡塑§§Q!LZ5Qk§I塞羞王羞笪拔盎珏荭盏塞理 学位论文作者签名: l盘,!!垦 甚期:江。
弋年lL一月f日 学位论文版权使用授权书 本人完全了解国防科学技术大学有关保留、使用学位论文的规定.本人授权国 学位论文题目: QK贮照!!£LZ§QL到整羞土差缝拉丕鲤究盏塞理 学位论文作者签名: l釜!耋 日期:凇r年12.月f日 作者指导教师签名:二l;至 日期:奶年段月/日 国防科学技术大学研究生院工学硕士学位论文 第一章绪论 §1.1课题背景及来源 自从人类迈入新世纪的大门,信息化已经引发了新一轮的革命。
在军事领域,最突出的进展是发展出崭新的信息战理论,这是信息化对国防现代化具有时代特征的影响。
以信息技术为核心的现代化科技把先进的技术与完善的军事学说及与之相适应的军事组织结合起来,形成了使武器发挥最大作用的真正的军事技术革命。
信息化进程大大增强了收集、处理和近于实时传送信号的能力;信息技术与常规精确打击能力相结合。
将深刻影响到进攻和防御军事行动实施:在军事演习方面,信息技术拓展了高级模拟的范围,提高了演习、训练系统的设计、测试及战术发展能力。
可以毫不夸张地说,信息技术为武器装备的新发展提供了空前的机遇,引发了一场涉及整个军事领域的军事技术革命。
在经济领域,当代国际经济和社会发展竞争日益激烈,正在大力进行信息化建设的社会对信息基础设施的建设和信息资源的开发,对信息服务的快捷性、准确性、全面性,特别是对信息的安全稳定性都提出了越来越高的要求。
在信息资源开发和信息服务领域中,国际竞争、市场争夺与相互渗透也日趋激烈,信息对抗成为世界各国特别是发达国家尤为关心的问题。
数据库管理系统作为几乎所有信息系统的核心部件,它在信息化建设中扮演的角色和起到的作用是其它任何软件所不能替代的。
数据库管理系统满足了人们对爆炸增长的信息处理的要求,不仅可以有效地管理数据,还提供了以前管理方法不具有的其它功能,如数据共享、数据独立性、数据结构化以及数据保护功能等,此外还减少了数据冗余,提供了有效性检查以及故障恢复。
数据库管理系统的出现是计算机应用的一个里程碑,它使得计算机应用从科学计算为主转向以数据处理为主,从而极大地推动了信息化进程的步伐。
自上个世纪六十年代后期到现在的三十余年中,数据库技术经历了30多年的发展演变,已经取得了辉煌的成就,发展成了一门内容丰富的学科,几乎蕴涵了所有的计算机软件科学领域。
目前,国外商业数据库管理系统以关系型数据库为主导产品,技术比较成熟,占有主导地位的关系型数据库管理系统有0racle、SQLSERVER、DB2、SYBAsE、INFOMIx等。
除此之外,当今最先进的
开源自由软件数据库管理系统PostgreSQL作为一个相当稳定可靠的数据库管理系统也受到越来越多的重视。
这些数据库管理系统紧跟技术前进的步伐,能够针对各个应用领域提供 第1页 国防科学技术人学研究生院:_l:=学硕士学位论文完善产品技术支持和系统的解决方案,占据了国内外数据库管理系统市场的绝大部分江山。
由于起步的早晚不同,国内的数据库技术的研究主要是面向一些特殊领域,实现一些专用的数掘库软件,如地理信息系统软件、cAD软件等。
因为没有一个成熟的数据库管理系统作基础,这些专用数据库的研究也受到了不同程度的限制。
尤其是在军队中,我们还没有一套完善的、能够应用于高安全性军事应用的数据库管理系统软件,很多重要的信息系统和作战指挥系统仍然建立在国外商用数据库管理系统(如Oracle、DB2等)产品基础之上。
这些应用给我军的信息安全带来了严重的威胁,与我军在未来军事斗争中的需求是极不相称的。
因此,开发出具有自主知识产权的国产军用安全数据库管理系统,打破国外关键技术的垄断和控制,对促进我国的信息化的建设发展、保障国家的安全具有十分重要的意义。
在这种情况下,国内一些研究机构在国家支持下开发了达梦、金仓、OScAR、GKD—Base、0penBase等国产数据库管理系统。
其中GKD—Base在安全数据库管理方面已经取得接入认证、角色定义、数据存储加密、数据传输加密等成果,达到B2级安全水平,正逐步推广应用于军队、政府的一些机要部门。
GKD—Base数据库管理系统作为我军具有自主知识产权的第一个安全数据库管理系统,经过十数年的发展和试点应用,已经被证明是一套稳定和安全可靠的数据库管理系统。
但是,随着应用需求和数据库技术向深度和广度的发展,GKD—Base数据库管理系统在很多方面都暴露出了不足,如不支持PL/SQL语言、不支持存储过程、没有主键/外键约束、缺少触发器功能以及对一些新应用(如多媒体、数字地图等空间数据、时态数据等)的支持能力等,对于进一步推广使用造成很大的障碍,同时也不利于系统本身功能的扩展。
GKD—Base数据库管理系统迫切需要进行功能扩展以满足更复杂和新型应用的需求,实现GKD—Base的过程式SQL、存储过程、触发器功能,能够构造对象类型和方法;在此基础上对GKD—Base继续完善和优化,使之一方面能够满足指挥、机要部门的协同工作支持,另一方面也能通过与地理信息系统相结合,实现空间完整性约束的维护等战场指挥控制功能,进一步加强我军在作战指挥、同常办公等方面信息安全的力度,从而具有更为广阔应用前景。
§1.2国内外当前研究现状 sQL(structured Query Language)是于1974年由IBM的San Jose研究实验室定义的关系数据库查询语言,它经历了一系列的演变,自1979年首次进入商业应用以来,SQL被很多公司作为大型机和小型机环境下的关系数据库语言标准。
第2页 国防科学技术大学研究生院:L学硕士学位论文 1988年ANsI和IS0公布了sQL语言标准,使得数据库应用进一步向标准化发展…。
sQL语言建立在集合理论上,从整体上看,它提供了一阶谓词演算的查询功能,并且结合有如分组、聚集函数等运算。
sQL语言在关系(表)上操作数据,提供了一致的语句来定义、显示和修改关系(表)中的数据。
相对于其他数据操作语言而 言,它含有数量很少的命令语句如select、insert、update、grant等;其实,每个命令语句都可能包含上百行某种过程语言的
代码。
用户通过简单的语句就可以完成复杂的查询,这是基于sQL的关系数据库得以流行的一个主要因素01。
sQL的优点有益于所有的数据库用户,包括应用程序员、数据库管理员、管理者和最终的用户。
这也是被关系数据库供应商和最终用户所广泛地接受的理由。
不过SQL的优点也正是它的缺点,它是面向最终用户的,而不是面向数据库程序员的。
虽然对于关系数据库的程序员而言,SqL的出现绝对是个巨大的惊喜,它可以让程序员从繁重枯燥的编程中解脱出来,用一种简单而优雅的
代码来实现强大的功能,但是在实际的使用过程中,关于数据库的编程任务并不只有纯数据操作这一项,程序员可能要面对许许多多的其他任务,用计算机解决任何问题都要有算法的支持.而SQL缺少最起码的算法描述能力,它远不是通用的编程语言。
因此,SQL语言与过程式语言相结合,已成为数据库发展的一个趋势,SQL99为此也日I入了PSM(Persistent Stored Modules)…。
sQL与过程语言的结合,目前使用下面四种技术: ●嵌入式sQL,其中sQL语句嵌入到宿主语言中。
比如c或c0BOL。
●SQL模块,在DBMS中编译SQL语句,并从宿主语言中调用它。
·调用层接口,或cLI,它包含被调用的函数,它们将SQL语句传递到DBMS, 及从DBMs中检索结果。
●过程化的SQL语言。
对于这些选择,大多数主要的吩Ms支持CLI和嵌入式SQL,但是他们使用比较复杂,难以广泛推广应用。
而过程化sQL语言,可以定义常嚣和变量,可以调用数掘库查询.可以使用结构化语句(各种控制结构),具有块结构等:更进一步,还可以定义过程,使用例外处理捕获运行时的错误,创建存储子程序等。
总之,过程化sQL语言综合了sQL语言的数据处理能力和过程化语言的过程处理能力,是一种高性能、可移植的事务处理语言。
正受到越来越广泛的重视和应用。
当前流行的各种数据库管理系统为了融合s钆语言强大的集合数据处理能力和第三代语言(3GL)灵活的过程处理能力,都针对自身的数据库管理系统开发出了过程式sQL语言,如0racle的PL/sQL“1,SQL Server和syBase的Transact—SQL”1,DB2的sQL procedur81 language%PostgresQL的PL/pgsQL‘”等。
其中以0racle的PL/SQL最具代表性。
第3页 国防科学技术人学研究生院工学硕士学位论文 PL/SQL是Oracle公司推出的一种过程式数据库编程语言,它将SQL语言的关系数据处理能力和过程式语言的过程结构控制能力结合在一起,可以使用变量、类型、表达式、条件和循环、过程和函数等过程式语言中的通用机制来进行程序设计,同时也可以使用SQL语句进行关系数据操作。
作为过程式编程语言,PL/SQL的语言’成分和设计思想主要体现在语言结构设计、数据类型设计、表达式设计、sQL语言成分设计、游标设计、过程与函数语言成分设计、包及异常处理机制设计等方面。
GKD—Base数据库管理系统自身具有兼容sQL89标准的SQL引擎,能够为用户提供一个统一、简单、有效的数据库访问接口,可以实现对数据库的各种操作。
但是sQL语言缺乏对算法的描述能力,难以胜任复杂的程序设计。
因此,根据当前应用需要和GKD—Base自身的情况,我们以Oracle为原型,对GKD—Base自身的PL/SQL引擎进行了研究开发。
经过项目组两年多以来的努力,已经开发出了比较完备的PL/SQL引擎,并在此基础上支持游标常量、变量游标、参数化游标、存储过程、存储函数以及包机制等。
但其对触发器的支持还很有限,对面向对象机制几乎不支持。
当前比较成熟的数据库产品都能提供对触发器和面向对象机制的支持。
如:Oracle、Ms SQL Server、DB2等。
在这一点上,Oracle提供了DML触发器来对基本表进行操作、以及Instead—Of视图触发器来对由基本表导出的视图进行操作,能够实现强大的触发器功能。
从0racle 8开始,面向对象的机制也得到了很好的支持。
§1.3本文的主要研究内容及技术 本文所进行的研究工作以我们目前承担的“安全数据库管理系统GKD—Base功能扩展”为原型,实现GKD—Base的过程SQL、存储过程、包机制、游标机制、触发器机制、面向课题为基础。
该课题的目的在于解决GKD—Base功能扩展所需的关键技术,以Oracle对象机制以及对应的异常处理等功能。
本文首先对GKD—BasePL/sQL引擎的整体设计和一些关键技术的实现进行了研究,同时对国外主流数据库管理系统相关功能进行了了解和分析比较,对
开源数据库系统PostgresQL的源
代码进行了系统分析和跟踪调试,在此基础上针对GKD—Base制定了触发器机制和面向对象机制的实现的技术方案,基本实现了GKD—Base的触发器功能和对象解析机制。
l、 GKD.Base PL/sOL引擎整体设计及关键技术研究 PL/sQL引擎的基本功能是将用户用PL/SQL语言编写的程序通过编译器中词法 第4页 国防科学技术大学研究生院工学硕士学位论文 分析程序、语法分析程序进行解析,生成中间
代码交由解释执行器对其解释执行,最后将执行结果返回给用户。
如果在分析阶段或解释执行阶段发现错误,则向用户报告错误号及相应的错误信息,以便用户排错。
本文对GKD—Base PL/sQL引擎整体结构的设计进行了系统分析,并针对引擎实现中的关键技术——符号表的设计与管理、PL/sQL源程序的编译方法和解释执行器的设计实现进行了详细说明。
2、 触发器机制的设计实现 触发器是指可以启动其它机构的设施,一个触发器可以是一个事件,该事件可以促成其它事件或一系列事件的产生;通过数据库系统中的触发器机制,无需用户干涉,系统就能够对内部和外部产生的事件自动做出反应。
触发器的实现主要遵循sQL99规范。
触发器实现的关键问题主要包括触发器理论的模型、事件检测、触发器条件判决以及触发器的创建、存储和调用的算法等。
主要包括DML触发器和Instead—Of视图触发器。
3、 面向对象机制的解析 本文在介绍GKD—Base PL/SOL引擎设计框架的基础上,针对GKD—Base PL/sQL引擎编译器的体系结构,从词法分析和语法分析的角度提出了~套解析和标识Oracle PL/sQL程序中对象机制的解决方案,并依据这套解析机制,在GKD—Base中引入了面向对象的机制。
本文通过对多种数据库触发器机制和面向对象的解析机制的实现方式进行分析比较,深入研究了PostgresQL内核源
代码,根据G}£D.Base自身的情况制定了触发器和面向对象解析机制的实现方案,并实现了数据库DML触发器和Irlstcad.Of触发器的功能,以及面向对象的解析功能。
§1.4论文组织结构 全文共分五章。
第一章为绪论。
介绍了当前信息化建设对当今国家安全、经济建设的影响以及数据库管理系统在信息化系统中所起的重要;同时介绍了当前国内外数据库发展状况以及我国自主丌发的安全数据库管理系统GKD—Base,对我国开发安全稳定自主数据库并扩展其功能的迫切需求进行了阐述:最后介绍了论文的研究内容以及取得的成果。
第二章介绍了GKD—Base PL/sQL引擎整体结构和实现技术。
首先对PL/SQL语言进行了简单介绍;然后对PL/sQL引擎的整体结构进行了说明,阐明了PL/SQL引擎的整体设计思想;最后分别介绍了PL/SQL引擎编译器和解释执行器实现的一 第5页 国防科学技术大学研究生院工学硕士学位论文 第二章 GKD.Base PL/SQL引擎整体设计与关键技术研究 过程化sQL语言‘可以定义常量和变量,可以调用数据库查询,可以使用结构化语句(各种控制结构),具有块结构等;更进一步,还可以定义过程,使用例外处理捕获运行时的错误,创建存储子程序等。
总之,过程化SQL语言综合了SQL语言的数据处理能力和过程化语言的过程处理能力,是一种高性能、可移植的事务处理语言,正受到越来越广泛的重视和应用。
当前流行的各种数据库管理系统为了融合sQL语言‘强大的集合数据处理能力和第三代语言(3GL)灵活的过程处理能力,都针对自身的数据库管理系统开发出了过程式sqL语言,其中以0racle的PL/SQL最具代表性。
§2.1 PL/SQL语言介绍 PL/sQL是0racle公司推出的一种过程式数 国防科学技术大学研究生院1:学硕士学位论文 Oracle PL/sQL版本,0racle9i的相应版本为PL/SQL9.0。
表2.1列出了Oracle PL/sQL各版本及其主要特性。
表2.1 OracIe PusOL各版本及其主要特性 0racle PL/SQL 添加或者更改的特性 版本 版本 6 1.0 初始版本 7.0 2.O 子程序(过程、函数、包和触发器)、用户定 义复合类型(表和记录)、明MS一0UTPUT、 DBllIS—PIPE等 7.I 2.1 用户定义的子类型、在SQL语句中使用用户定 义的函数、通过DBMS—SQL可以使用动态SQL 7.2 2.2 游标变量、用户定义的受限类型、使用 DBMs—JOB包调度PL/SQL批处理 7.3 2,3 对游标变量的增强、使用UTL—FILE可以进行 文件I/0处理、PL/SQL表属性和记录表、以 被编译方式存储的触发器 8.O 8.0 对象.
上一篇:
EJB实体Bean动态数据源绑定
下一篇:
中小企业财务战略选择的探讨