主动数据库读书笔记

更新时间:2023-09-13 19:56:01 阅读量: 教学研究 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

主动数据库

一、产生背景

主动数据库是相对传统数据库的被动性而言的。在传统数据库中,当用户要对数据库中的数据进行存取时,只能通过执行相应的数据库命令或应用程序来实现。数据库本身不会根据数据库的状态主动做些什么,因而是被动的。

然而在许多实际应用领域中,例如计算机集成制造系统,管理信息系统,办公自动化中常常希望数据库系统在紧急情况下能够根据数据库的当前状态,主动、适时地作出反应,执行某些操作,向用户提供某些信息。例如,前面提到的仓库管理系统就是这样。这类应用的特点是事件驱动数据库操作以及要求数据库系统支持涉及时间方面的约束条件。为此,人们在传统数据库的基础上,结合人工智能技术研制和开发了主动数据库。

二、概念定义

所谓的主动数据库,是指在没有用户干预的情况下,能够主动地对系统内部或外部所产生的事件作出反应的数据库。

近年来,一些商品化的数据库管理系统,纷纷引进了所谓的“触发器(Trigger)”和“规则(Rule)”概念。主动数据库系统是一种能根据各种事件的发生或环境的变化主动给用户提供相应信息服务的数据库系统,支持事件—条件—动作规则,通过事件监视器监视诸如数据库事务、时间事件、外部信号等事件的发生,执行规定的动作,使得数据库能提供主动服务的功能。

主动数据库的一个突出的思想是让数据库系统具有各种主动进行服务的功能,并以一种统一而方便的机制来实现各种主动性需求。实现主动数据库系统有许多需要解决关键的问题,这些问题包括实现有效的事件监视器,有效的规则表示和执行机制,数据库中的事件描述、运算和复合,以及在主动数据库中的有效事务处理机制等

三、研究动态

1. 会议:“主动数据库”这个术语由M. Morgenstern在1983年的第九届国

际超大型数据库学术会议(VLDB)上提出以来,多次国际会议中都对主动数据库系统进行过专题讨论。目前有关主动数据库的研究结果仍时有报道,国际数据库顶级会议VLDB2006仍将主动数据库作为重要兴趣主题。

- 1 -

2. 论文:许多研究小组和包括IBM在内的多家机构都提交了有关主动数据库

技术的论文,Dayal U.、Dennis R.、Gehani N.H.等先后提交了有关主动数据库和规则库融入数据库的论文,也相继构造了一些主动数据库系统的模型和原型。围绕主动数据库的具体实现模式和方法,研究者发表的论文,如为了简化ECA规则提出了S_T(Situation_Trigger)模型,为解决超长时间事务提出了事务调度的模型,为解决大量规则增长提出的预测主动数据库规则的静态分析技术等等。

3. 项目:关于主动数据库管理系统的研究有下列几个较有影响力的项目,他

们大多是在关系数据库系统(RDBMS)或面向对象数据库系统(OODBMS)的基础上进行扩充而增加主动性功能的。

(1)ETM 是德国卡什鲁研究所(FZI Karisruhe)在一个面向对象数据库CAD OODBMS中为了完整性控制而设计的一个“事件一动作触发器”

(2)Postgres 系统是由加州大学伯克莱分校(UC Berkley)在一个关系型数据库管理系统的基础上扩充“条件—动作库”后形成的系统。其实现始于1986年,后来经历了几次主要的版本更新。POSTGRES引入了可自动触发的规则机制,支持三类规则ALWAYS、ONCE、NEVER,并且已经在许多研究或实际的应用中得到了应用。

(3)Alert是IBM公司设计的,可以把一个被动的DBMS变换成一个主动DBMS的一种分层的体系结构,Starburst就是采用这种结构由关系型DBMS作较小的修改和扩充而成的。Alert系统同样由IBM公司设计,是一个由PDBMS转化的ADBMS,触发事件可以是数据库的增加、删除和修改操作也可以是用户定义的操作。

在国内,对主动数据库技术的研究起步较晚,将主动数据库技术应用于实际系统的也比较少,但已经有了将面向对象数据库和主动数据库技术结合运用在社会保险信息系统的尝试。国内已经实现的主动数据库模型有华中科技大学的ARTS-1系统。

四、触发器技术

1.标准SQL中的主动数据库功能:

SQL3引入了触发器的功能,从而在公共的标准上实现了对主动数据的支持。 触发器是按照事件(Event)-条件(Condition)-动作(Action)的规则定义的。在SQL3触发器中,触发的事件仅限于数据更新操作,不支持数据查询操作。每一种触发器操作有3种可能的触发时间,他们是BEFORE、AFTER和INSTEAD OF,BEFORE为事件前触发,AFTER为事件后触发,INSTEAD OF表示触发器执行某项操作,而不是触发这个触发器的操作。

- 2 -

2.在商业DBMS中的触发器:

(1) IBM DB2

在DB2的触发器中,被触发的SQL语句可以包含DB2函数和用户自定义函数。用户自定义函数使用C/C++语言编写的,除用于一般的SQL数据控制操作,还可以允许触发器执行非SQL操作类型。

(2) Oracle

触发的动作部分在PL/SQL语句块中,可以包含各种声明和调用外部过程,但不包含数据定义语句或事务控制语句。

3.触发器的使用:

虽然各个RDBMS的触发器语法都有些差异,但总体结构都是依照ECA规则定义的。下面我们按照标准的SQL3语法来举几个例子说明触发器的使用。

在学生课程管理数据库中,有如下三个表 {

学生表:Student(Sno, Sname, Ssex, Sdept, Sage)

}

课程表:Course(Cno, Cname, Ccredit) 选修表:SC(Sno, Cno, Grade) {

SC表的INSERT操作 Student表的DELETE操作 Course表的DELETE操作 SC表UPDATE(Sno, Cno)操作 Course表UPDATE(Cno)操作 Student表UPDATE(Sno)操作

}

通过分析,不难得出共有如下六种操作会影响到引用的完整性:

一个典型的例子就是实视图的更新,实视图是由基表导出的表,作为一个实在的表存储在数据库中。恰当使用实视图可以提高查询速度,但在基表更新时,要保证实视图要及时刷新。

假设我们要对“计算机”系的学生成绩表CSCourse创建一个实视图,则可以由下面的语句创建:

SELECT Sname, Cno, Grade FROM Student, SC

WHERE Student.Sno = SC.Sno AND Sdept=’计算机’;

通过分析,可以得出下列的操作影响CSCourse的值:

Student表DELETE操作,且删除元组中有院系为计算机系的元组

- 3 -

Student表INSERT操作,且删除元组中有院系为计算机系的元组 Student表UPDATE(SName, Sno, Sdept)操作 SC表DELETE操作 SC表INSERT操作 SC表UPDATE操作

4.触发器的优点:

(1)安全性:基于数据库的值使用户具有操作数据库的某种权利。具体表现在:一是可以基于时间限制用户的操作,例如不允许下班后和节假日修改数据库数据;二是可以基于数据库中的数据限制用户的操作,例如不允许股票的价格的升幅一次超过10%。

(2)审计:可以跟踪用户对数据库的操作。表现在:一审计用户操作数据库的语句;二把用户对数据库的更新写入审计表。

(3)实现复杂的非标准的数据库相关完整性规则

1.在修改或删除时级联修改或删除其它表中与之匹配的行。 2.在修改或删除时把其它表中与之匹配的行设成NULL值。 3.在修改或删除时把其它表中与之匹配的行级联设成缺省值。 4. 触发器能够拒绝或回滚那些破坏相关完整性的变化,取消试图进行数据更新的事务

五、体系结构

在功能上,一个主动数据库系统(ADBS)由一个传统数据库系统(DBS)和一个事件驱动的知识库(简称事件库EB)及其相应的事件监视器(EM)组成,用公式表示为:ADBS=DBS+EB+EM

主动数据库管理系统与一般数据库管理系统在结构上的区别主要在于它除了有一个传统的关系型被动的数据库外,还添加了一个事件驱动的事件库和一个和多个事件监视器,监视器处于运行系统当中,主动并实时检测各种事件的发生,然后自动地根据发生的事件和条件按照一定的规则触发并执行所需动作。主动数据库管理系统的体系结构可用图1表示。图中实线表示控制连接,虚线表示数据连接。主要的区别是新增加事件监视和执行模块,它与规则库、数据库、数据字典乃至总控模块都有数据交换关系。

六、主动规则

主动数据库系统对DBMS的基本要求是能处理下列的规则:

- 4 -

{

WHENEVER <事件> IF <条件> THEN <动作>

}

即当发生某一事件(Event)时,如果满足给定条件(Condition),则执行相应的动作(Action),这种规则称为ECA规则(Event- Condition –Action的缩写)。主动数据库通过这样一种事件驱动的“事件-条件-动作”规则来表示数据库中的主动知识。

七、实现

实现上动数据库系统可有以下几种实现途径:

(1)改造的途径:最简单的实现方案就是在原有数据库管理系统的基础上进行改造。为此只需在原有数据库管理系统之外增加一个能经常有机会(例如具有较高的运行优先级)运行的事件监视器即可。此时,事件库是统一的一个库,由用户预先设置好,在应用程序运行的同时,由事件监视器来监视事件的发生,并根据事件库中所示自动执行相应的动作或动作序列。

(2)嵌入主动程序设计语言的途径:这种方法把一般程序设计语言改造成一种主动程序设计语言,数据库操作嵌入在其中执行。这种途径已由主动程序设计语言将事件库分成块,分布在各个近程或对象(当采用面向对象范式时)中,运行效率可望大大提高。

(3)重新设计主动数据库程序设计语言的途径:按上节所述.重新设计主动数据库程序设计语言来将数据的定义、操作、维护和管理功能与应用程序彻底融合在一起,这自然也是—条可取的途径。这就彻底地解决了所谓“阻抗不匹配”问题。

八、存在问题

从上面的一些主动数据库介绍来看,主动数据库的一个突出思想是让数据库系统具有各种主动进行服务的功能,并以一种统一而方便的机制来实现各种主动性需求。目前,这种机制主要通过将一些规则预先嵌入数据库系统的方法来实现。系统中提供一个自动“监视”模块,它主动地不时检查着这些规则中包含的各种事件是否己发生,一旦发现某事件发生时,就主动触发执行某个动作。不过,已经实现这些带主动功能的数据库管理系统中仍存在一些缺陷,目前还有一些技术问题等待解决:

(1) 触发事件的指明方式局限性很大,不能提供用户一种自由构造和设置自己所需事件的机制,更没有从简单事件构造复杂事件的能力。

- 5 -

本文来源:https://www.bwwdw.com/article/8uhh.html

Top