


下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 数据库触发器机制的设计与实现 唐 扬 熊 伟 陈宏盛 景 时间:2008年10月16日 字 体: 大 中 小 关键词: 摘要:关键词: PL/SQL引擎 Rete网络 双Hash结构 触发器数据库管理系统作为信息系统的核心
2、部件,在信息化时代所充当的角色是其它任何软件所不能替代的。当前数据库应用的一个普遍要求是数据库管理系统能够在一些数据库相关事件发生时触发预先定义的操作,实现信息管理的自动化,因此引进了触发器机制。触发器可以增强引用完整性,加强复杂业务的规则,或者监控数据库的变动,并执行一定的数据操作。触发器机制实现主要涉及触发事件的检测以及触发条件的判决等关键技术问题,以及对触发器的编译存储和调用执行等具体操作。本文以国产数据库管理系统GKD-Base为原型,在兼容Oracle 规范的PL/SQL引擎基础上,提出一套解决方案,对触发器的关键技术问题进行了探讨,并设计实现了数据库的触发器机制,扩展了数据库管理系
3、统GKD-Base的功能。1 GKD-Base PL/SQL 引擎2 触发器实现的关键问题触发器定义了当某些数据库相关事件发生时数据库应采取的动作。触发器可增强引用完整性,加强复杂业务的规则,或者监控数据库的变动,其实现主要涉及到触发事件的检测以及触发条件的判决等关键技术问题。2.1 触发器的事件检测机制这里,变迁表分为两种类型:NEW和OLD,分别对应于触发器行级别操作中的NEW值和OLD值。变迁表中存储了事件类型、当前数据表以及事件作用的元组。系统可以通过这个驻留内存的双HASH链表实现数据库变迁的快速定位和跟踪处理。2.2 触发器的条件判决机制触发器的条件判决机制是触发器的核心,根据SQ
4、L99标准的定义,可以将触发器分为前触发、约束判定和后触发三种类型。这三种类型触发器的判决顺序策略如图2。触发器的条件评估是影响触发器机制的最关键因素。在数据库环境中,大多数数据修改行为只能影响数据库的一小部分内容,因此没必要每次都从头开始评估触发器规则条件,Rete和TREAT网络等增量条件评估方法已经被证明是触发器条件评估(Condition Evaluation)的有效处理手段。以Rete网络为例(图3),它是一个左深度二叉树,其基本元素包括:根结点:根结点接收插入/删除(+/-)记号(tokens),并将其传递给每一个后继结点;t-const结点:记号到达这些结点后,将根据该结点上的条
5、件谓词进行判决,那些通过测试的记号将继续传播下去,没有通过测试的记号则被丢弃掉;-存储结点:通过t-const结点测试的记号将存储到这个结点中,存储在-存储结点中的每一个记号都将同时被传递给该结点的后继结点;AND(连接)结点:这些结点有两个输入,到达其中任意一个输入结点的记号都要通过AND结点进行测试,看它是否需要与另外一个输入进行连接操作。如果是,则连接两个输入的记号对,将它们合并成一个组合记号后再传递给后继的-存储结点;-存储结点:存储连接结点的输出,并将输出同时传递给后继结点;P-结点(规则结点):+记号到达这里表明应该唤醒一个与该记号相关联的规则实例;-记号到达这里表明与其中的标签对
6、象相关联的已经进入待执行队列的规则实例应该被删除。Rete网络只支持两路连接,对于一个有多个关系参与的规则定义,不同的连接顺序可以得到不同的Rete网络,根据数据字典信息可以选择最优的执行顺序。图3是对应于规则条件“A.color =“BULE”AND A.x B.x AND B.x C.x”的Rete网络示意图。3 触发器实现算法触发器的具体实现可以分为触发器创建和调用,此外还包括触发器的修改、删除等操作。其中触发器的创建包括触发器的编译与存储操作,触发器的调用包括对触发器事件的检测和触发器动作的执行。3.1创建触发器3.2 触发器的调用触发器的调用首先要从外存中读取触发器的信息,并写入内存
7、相应的数据结构中。触发器的内存形式是为了更方便地进行触发器约束条件的检查而设立的。为了在触发事件发生时,能立即判断当前被处理对象是否满足触发约束条件,通过调用PL/SQL引擎编译器将外存中存放触发器约束源代码转换为其内存表示,存放在相应触发器的内存结构中。在触发器被调用前,系统将被同一触发事件所触发的所有活跃的触发器组织成四条链,如图4。根据这个数据结构,触发器调用算法如下:(1)将与触发事件相关的触发器按类型分别记入SB、SA、RB和RA四条链中;如没有某种类型的触发器,则相应链置空。(2)如SB不为空,则转SB链触发操作算法。(3)如RB不为空,则转RB链触发操作算法。(4)对当前数据对象
8、进行触发事件所规定的DML操作。(5)如RA不为空,则转RA链触发操作算法。(6)判断触发事件所作用的数据记录是否都被处理完毕,如是,转(7);否则,取出下一条记录作为当前的数据对象,转(3)。(7)如SA不为空,则转SA链触发操作算法。(8)释放所占的资源,结束触发器调用的处理。对给定触发器链操作算法如下:(1)根据触发器调用算法检测,当前触发器链不为空,取链首触发器。(2)将待处理数据对象的相关信息代入触发条件判断,如果条件为真,转(3);否则转(4)。(3)启动一个PL/SQL解释执行器,对当前触发器动作链中所记录的动作进行解释执行。(4)取链中下一个触发器为链首,判断是否为空,如是,转(5);否则转(1)。(5)完成当前触发器链操作,返回触发器调用算法继续
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《高等教育管理培训课件:领导力与战略创新》
- 《经济发展及其驱动因素》课件
- 吉林银行笔试题库及答案
- 同弧所对圆周角定理课件
- 常见皮肤病饮食调护方法课件
- 《微软案例分析》课件
- 《张华食品营养学》课件
- 带质量物体在重力场中的运动课件
- 《现代汽车智能导航系统》课件
- 《迷人的课件世界》
- 《课程理论-课程的基础、原理与问题》施良方
- 晕血晕针的应急预案
- 导航信号抗干扰
- 桌面推演应急演练方案脚本
- 外墙合同范本(2篇)
- 总体取值规律的估计教学设计 高一下学期数学人教A版(2019)必修第二册
- 城市轨道交通车辆制动系统(高职)教学课件
- ISO9001-ISO14001-ISO45001三体系内部审核检查表
- 《中药种植技术》课件-第八章 药用植物病虫害及其防治
- JT∕T 1477-2023 系列2集装箱 角件
- 2024年湖南省岳阳市初中学业水平考试适应性测试化学试卷(二)
评论
0/150
提交评论