数据库时态处理中间件的设计和实现
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
scalarexp
scalarexp not in query
ddltable ddlview drop table drop view
create table identifier(tabledef) create table identifier(ddlquery)
create view identifier(ddlquery)
Design & Realization of Temporal Disposal Middleware for Database
LI Zhenjun,LU Yunting,CHENG Liangyu
(Research Center of Electric and Engineering Software,Zhongshan University,Guangzhou 510275) 【 Abstract】 According to the theory of temporal database,a design idea of realizing temporal dispose by communicated between TDBASE,a temporal
month ’月‘
>
nonsequenced
day ‘日’
<=
validtime scalarexp
‘interval’spanexp
spanexp
hour ‘时’
>=
minute ‘分’ conop
<>
second ‘秒’
=ቤተ መጻሕፍቲ ባይዱ
timeflag queryexp
select selectitemlist from tablenamelist where condexp group by grouplist having condexp
tabledef ddlquery
tableconstraint identifier datetype
colconstraint
(collist) as query
primary key collist
foreign key
图 3图:3 TTDDB ABSAES中E主主要要类类以以及及类类间间消消息息链 接链 接
类的作用是执行合法的 SQL语句,它实现的处理是通过 statement对象调用DBMS执行SQL语句。图中双向箭头表示 各个类之间有相互间方法或者函数的调用。其中我们可以看 到解析器类parase是最重要的类,它在总体上控制着时态处 理SQL语句向数据库管理系统支持的SQL语句的转换,是各 个类联系的枢纽。其他没列举出来的类还包括:常量类( 处
时态应用一
时态应用二
普通应用三
时态 SQL 语句
时态 SQL 语句
TDBASE(时态语句处理中间件)
标准 SQL 语句
标准 SQL 语句
标准 SQL 语句
商业 DBMS(ORACLE)
图 1 中间件 TDBASE
作 者 简 介 :李振军(1979-),男,硕士生,研究方向:网络与工程
软件;陆芸婷,硕士生;成良玉,教授
第30卷 第18期 Vol.30 № 18
计 算 机 工 程 Computer Engineering
2004年9月 September 2004
·软件技术与数据库 ·
文章编号:1000—3428(2004)18 —0081—04
文献标识码:A
中图分类号: TP311.13
数据库时态处理中间件的设计和实现
收 稿 日 期 : 2003-07-28
E-mail: jordanli_flying@hotmail.com
—81—
1.2 TDBASE所支持的时态处理语法 TDBASE支持的语法符合标准时态查询语言规
范。这里值得指出的是:TDBASE所支持的时态处 其他类 理语句只是标准时态查询语言的一个子集。本文把 TDBASE所支持的语法用图2表示。TDBASE把时态
selectitemlist condexp
* columnitem
list
not/and/or confactor
colref ,colref
meets contains
(condexp) scalarexp conop scalarexp scalarexp conop query scalarexp not between scalarexp and
+处理now,forever,beginning等时态数据() +检查timestamp的合法性() +把一个字符串变成日期型date() +把一个字符串变成跨度型span() +分析检查时间跨度的合法性() +拆分时间跨度为起始时间和终止时间()
图中QUERY语句可以表示成“timeflag queryexp”, 其 中timeflag 为斜体字,表示为可选,相当于传统 SQL语法表示中的中括号[];由虚线组成的方框组表
数据库管理系统直接执行的SQL语句,然后交由非时态数据 库管理系统执行。这种方法的好处是当新的时态SQL语句加 入时,数据库管理系统中原有的数据库及其上的应用程序还 可以照常使用,应用程序只需通过TDBASE的接口类就可以 调用TDBASE的服务,而TDBASE通过所选择的商业非时态 数据库管理系统所提供的JDBC接口和其交互信息。从用户 的角度来看,他们面对的是一个能够进行时态处理的数据库 管理系统和其管理下具有时态属性的数据库。TDBASE在实 现上选择使用Oracle作为实现时态处理的数据库管理系统, 用户的时态数据经过转换后都以合法的形式存储在Oracle所 管理的数据库中。中间件TDBASE在实现数据库时态处理中 的地位和作用如图1所示。
接口类TCI
-用户程序接口,通过JDBC接口同DBMS连接
+在数据库上建立基本表() +通过DBMS的合法用户名和密码打开数据库() +调用解析器类分析时态处理语句() +清除初始化时建立的基本表表() +关闭数据库()
数据库校验类DBCHECK
-对数据库已有数据进行检查
+检查数据库的连接状态() +调用运行类run执行建表操作() +调用运行类run执行建视图操作() +检验所建表中是否存在重复的字段() +检验所建表是否重名()
虽然时态数据库在理论上已经被证明其拥有传统数据库 所无法企及的优点:使用具有时态处理机制的数据库对时态 数据的表达清晰易懂,能够真正地在语义上解释用户自定义 时间、有效时间和事务时间以及它们相互间的关系,并且可 以克服传统数据库在时态解析时产生的数据冗余的缺点。但 迄今为止,在实践中还没有人真正实现一个既具有传统数据 库的一般功能(如数据定义、存储、完整性控制等),又能实 现时态处理的完整的时态数据库。也没有出现过能够进行时 态处理的商业数据库管理系统。这就使得时态数据库的理论 得不到实际应用的检验,阻碍了时态数据库的普及和进一步 的发展。本文正是基于这种现状,对能够实现数据库时态处 理功能的中间件的设计和实现进行探讨和分析。
scalarexp
timeflag
QUERY DDL DML CONTROL
identifier.identifier
mydate time eventexp
YYYY/MM/DD-HH:MM:SS now
colref const (scalarexp)
integer float string interval event span
1 TDBASE的设计
1.1 实现时态处理的设计思想 本文探讨的实现数据库时态处理的方法,不是借助一个
完整的时态数据库管理系统(Temporal DBMS)来进行相关的 时态处理。而是在商业非时态数据库管理系统的基础上,实 现一个时态处理应用和非时态数据库管理系统之间的一个通
道,即一个中间件TDBASE。 它能够把具有时态特征的SQL语句转变成为可由非时态
扫描类scanner -对时态处理语句扫描生成一个令牌链表(tokenlist) +返回tokenlist的头令牌(token)()
运行类run -执行合法的sql语句 +通过Statement对象调用DBMS执行sql语句()
示可以在这组语句中任选一组来表示,相当于传统 SQL表 达 中 的 竖 线| 。 比 如 起 始 的 虚 线 方 框 组 : QUERY, DDL, DML, CONTROL就表示一个时态处理 语句可以为QUERY语句,或DDL语句,抑或是DML语句, 又或者可以是CONTROL语句。实线箭头表示一个关键字可 以由箭头指向的部分来表示。比如一个DDL语句可以表示成 为ddltable, ddlview,drop table和drop view中的任意一个。
+调用扫描类scanner生成一个tokenlist() +对各个token进行相应的合法性判断() +调用相关类生对各个token进行相应的转换() +对转换过的token进行重新组装() +调用数据库校验类dbcheck执行转换后的语句() +信息返回以及出错处理()
日历类 calendar
-时态数据同DBMS合法数据的相互转化
disposal middleware,and non-temporal DBMS is offered. The temporal syntax supported by TDBASE and the process of realizing TDBASE are described.
By using the interface offered by TDBASE,user can translate temporal SQL into standard SQL that could be run by non-temporal DBMS in order to realize
李振军,陆芸婷,成良玉
(中山大学电气与工程软件研究中心, 广州 510275) 摘 要 : 根据时态数据库的原理,提出了通过中间件TDBASE和非时态数据库管理系统交互实现时态处理的设计思想,描述了TDBASE所支 持的时态语法和TDBASE的实现过程。用户可以通过TDBASE所提供的接口,把具有时态语义的SQL转换成标准的SQL后交由非时态的数据 库管理系统运行,从而实现了该数据库管理系统的时态处理功能和其管理下的时态数据库。 关 键 词 : 时态处理; TDBASE;时态数据库;数据库管理系统
[time-time)
begin (eventexp) end (eventexp)
eventexp
beginning forever datestring timestampstring
公元1年 公元100万年 ‘YYYY-MM-DD’ ‘YYYY-MM-DD HH:MM:SS’
year ‘年‘
<
a DBMS that can dispose temporal data and several temporal databases managed by it. 【Key words】Temporal dispose;TDBASE;Temporal database;DBMS
时态数据库的产生和发展源于传统数据库的时态危机, 传统的关系数据库无法彻底解决一些时态处理问题:它们虽 然可以通过二维的关系表表示出时间的跨度,但不免造成数 据冗余;又或者使用三维表的方法,定义一个时间维,但这 样又无法准确地划分时间段。于是人们对以往的数据库系统 进行一次改革,把传统的数据库系统中加上时态属性,用它 来表达时态信息,并且对时间有关的问题进行新的定义和操 作。数据库的时态属性实现方法就是建立一个时态数据库模 型,在这个模型上面对时间问题进行定义,可以定义时间区 间,也可以定义时间点,或二者兼而有之。然后对这个模型 进行关系代数的定义和操作,进而可以实现查询语言的定义 或改进。这就形成了一种新的关系型数据库,即时态数据 库,它的出现给解决时态问题带来了曙光。
处理语句分为4 类:QUERY(数据查询) ,DDL( 数 据 定义),DML(数据操作)和CONTROL(控制)。本文对 TDBASE的语法解释的方式没有采用传统的SQL语法 解释方式,而用图表的方法进行解释,力求做到直 观,清晰地表达TDBASE所支持的时态处理语法。如
解析器类 parase
-对语句进行集中分析处理,生成对应的SQL语句
scalarexp not in query
ddltable ddlview drop table drop view
create table identifier(tabledef) create table identifier(ddlquery)
create view identifier(ddlquery)
Design & Realization of Temporal Disposal Middleware for Database
LI Zhenjun,LU Yunting,CHENG Liangyu
(Research Center of Electric and Engineering Software,Zhongshan University,Guangzhou 510275) 【 Abstract】 According to the theory of temporal database,a design idea of realizing temporal dispose by communicated between TDBASE,a temporal
month ’月‘
>
nonsequenced
day ‘日’
<=
validtime scalarexp
‘interval’spanexp
spanexp
hour ‘时’
>=
minute ‘分’ conop
<>
second ‘秒’
=ቤተ መጻሕፍቲ ባይዱ
timeflag queryexp
select selectitemlist from tablenamelist where condexp group by grouplist having condexp
tabledef ddlquery
tableconstraint identifier datetype
colconstraint
(collist) as query
primary key collist
foreign key
图 3图:3 TTDDB ABSAES中E主主要要类类以以及及类类间间消消息息链 接链 接
类的作用是执行合法的 SQL语句,它实现的处理是通过 statement对象调用DBMS执行SQL语句。图中双向箭头表示 各个类之间有相互间方法或者函数的调用。其中我们可以看 到解析器类parase是最重要的类,它在总体上控制着时态处 理SQL语句向数据库管理系统支持的SQL语句的转换,是各 个类联系的枢纽。其他没列举出来的类还包括:常量类( 处
时态应用一
时态应用二
普通应用三
时态 SQL 语句
时态 SQL 语句
TDBASE(时态语句处理中间件)
标准 SQL 语句
标准 SQL 语句
标准 SQL 语句
商业 DBMS(ORACLE)
图 1 中间件 TDBASE
作 者 简 介 :李振军(1979-),男,硕士生,研究方向:网络与工程
软件;陆芸婷,硕士生;成良玉,教授
第30卷 第18期 Vol.30 № 18
计 算 机 工 程 Computer Engineering
2004年9月 September 2004
·软件技术与数据库 ·
文章编号:1000—3428(2004)18 —0081—04
文献标识码:A
中图分类号: TP311.13
数据库时态处理中间件的设计和实现
收 稿 日 期 : 2003-07-28
E-mail: jordanli_flying@hotmail.com
—81—
1.2 TDBASE所支持的时态处理语法 TDBASE支持的语法符合标准时态查询语言规
范。这里值得指出的是:TDBASE所支持的时态处 其他类 理语句只是标准时态查询语言的一个子集。本文把 TDBASE所支持的语法用图2表示。TDBASE把时态
selectitemlist condexp
* columnitem
list
not/and/or confactor
colref ,colref
meets contains
(condexp) scalarexp conop scalarexp scalarexp conop query scalarexp not between scalarexp and
+处理now,forever,beginning等时态数据() +检查timestamp的合法性() +把一个字符串变成日期型date() +把一个字符串变成跨度型span() +分析检查时间跨度的合法性() +拆分时间跨度为起始时间和终止时间()
图中QUERY语句可以表示成“timeflag queryexp”, 其 中timeflag 为斜体字,表示为可选,相当于传统 SQL语法表示中的中括号[];由虚线组成的方框组表
数据库管理系统直接执行的SQL语句,然后交由非时态数据 库管理系统执行。这种方法的好处是当新的时态SQL语句加 入时,数据库管理系统中原有的数据库及其上的应用程序还 可以照常使用,应用程序只需通过TDBASE的接口类就可以 调用TDBASE的服务,而TDBASE通过所选择的商业非时态 数据库管理系统所提供的JDBC接口和其交互信息。从用户 的角度来看,他们面对的是一个能够进行时态处理的数据库 管理系统和其管理下具有时态属性的数据库。TDBASE在实 现上选择使用Oracle作为实现时态处理的数据库管理系统, 用户的时态数据经过转换后都以合法的形式存储在Oracle所 管理的数据库中。中间件TDBASE在实现数据库时态处理中 的地位和作用如图1所示。
接口类TCI
-用户程序接口,通过JDBC接口同DBMS连接
+在数据库上建立基本表() +通过DBMS的合法用户名和密码打开数据库() +调用解析器类分析时态处理语句() +清除初始化时建立的基本表表() +关闭数据库()
数据库校验类DBCHECK
-对数据库已有数据进行检查
+检查数据库的连接状态() +调用运行类run执行建表操作() +调用运行类run执行建视图操作() +检验所建表中是否存在重复的字段() +检验所建表是否重名()
虽然时态数据库在理论上已经被证明其拥有传统数据库 所无法企及的优点:使用具有时态处理机制的数据库对时态 数据的表达清晰易懂,能够真正地在语义上解释用户自定义 时间、有效时间和事务时间以及它们相互间的关系,并且可 以克服传统数据库在时态解析时产生的数据冗余的缺点。但 迄今为止,在实践中还没有人真正实现一个既具有传统数据 库的一般功能(如数据定义、存储、完整性控制等),又能实 现时态处理的完整的时态数据库。也没有出现过能够进行时 态处理的商业数据库管理系统。这就使得时态数据库的理论 得不到实际应用的检验,阻碍了时态数据库的普及和进一步 的发展。本文正是基于这种现状,对能够实现数据库时态处 理功能的中间件的设计和实现进行探讨和分析。
scalarexp
timeflag
QUERY DDL DML CONTROL
identifier.identifier
mydate time eventexp
YYYY/MM/DD-HH:MM:SS now
colref const (scalarexp)
integer float string interval event span
1 TDBASE的设计
1.1 实现时态处理的设计思想 本文探讨的实现数据库时态处理的方法,不是借助一个
完整的时态数据库管理系统(Temporal DBMS)来进行相关的 时态处理。而是在商业非时态数据库管理系统的基础上,实 现一个时态处理应用和非时态数据库管理系统之间的一个通
道,即一个中间件TDBASE。 它能够把具有时态特征的SQL语句转变成为可由非时态
扫描类scanner -对时态处理语句扫描生成一个令牌链表(tokenlist) +返回tokenlist的头令牌(token)()
运行类run -执行合法的sql语句 +通过Statement对象调用DBMS执行sql语句()
示可以在这组语句中任选一组来表示,相当于传统 SQL表 达 中 的 竖 线| 。 比 如 起 始 的 虚 线 方 框 组 : QUERY, DDL, DML, CONTROL就表示一个时态处理 语句可以为QUERY语句,或DDL语句,抑或是DML语句, 又或者可以是CONTROL语句。实线箭头表示一个关键字可 以由箭头指向的部分来表示。比如一个DDL语句可以表示成 为ddltable, ddlview,drop table和drop view中的任意一个。
+调用扫描类scanner生成一个tokenlist() +对各个token进行相应的合法性判断() +调用相关类生对各个token进行相应的转换() +对转换过的token进行重新组装() +调用数据库校验类dbcheck执行转换后的语句() +信息返回以及出错处理()
日历类 calendar
-时态数据同DBMS合法数据的相互转化
disposal middleware,and non-temporal DBMS is offered. The temporal syntax supported by TDBASE and the process of realizing TDBASE are described.
By using the interface offered by TDBASE,user can translate temporal SQL into standard SQL that could be run by non-temporal DBMS in order to realize
李振军,陆芸婷,成良玉
(中山大学电气与工程软件研究中心, 广州 510275) 摘 要 : 根据时态数据库的原理,提出了通过中间件TDBASE和非时态数据库管理系统交互实现时态处理的设计思想,描述了TDBASE所支 持的时态语法和TDBASE的实现过程。用户可以通过TDBASE所提供的接口,把具有时态语义的SQL转换成标准的SQL后交由非时态的数据 库管理系统运行,从而实现了该数据库管理系统的时态处理功能和其管理下的时态数据库。 关 键 词 : 时态处理; TDBASE;时态数据库;数据库管理系统
[time-time)
begin (eventexp) end (eventexp)
eventexp
beginning forever datestring timestampstring
公元1年 公元100万年 ‘YYYY-MM-DD’ ‘YYYY-MM-DD HH:MM:SS’
year ‘年‘
<
a DBMS that can dispose temporal data and several temporal databases managed by it. 【Key words】Temporal dispose;TDBASE;Temporal database;DBMS
时态数据库的产生和发展源于传统数据库的时态危机, 传统的关系数据库无法彻底解决一些时态处理问题:它们虽 然可以通过二维的关系表表示出时间的跨度,但不免造成数 据冗余;又或者使用三维表的方法,定义一个时间维,但这 样又无法准确地划分时间段。于是人们对以往的数据库系统 进行一次改革,把传统的数据库系统中加上时态属性,用它 来表达时态信息,并且对时间有关的问题进行新的定义和操 作。数据库的时态属性实现方法就是建立一个时态数据库模 型,在这个模型上面对时间问题进行定义,可以定义时间区 间,也可以定义时间点,或二者兼而有之。然后对这个模型 进行关系代数的定义和操作,进而可以实现查询语言的定义 或改进。这就形成了一种新的关系型数据库,即时态数据 库,它的出现给解决时态问题带来了曙光。
处理语句分为4 类:QUERY(数据查询) ,DDL( 数 据 定义),DML(数据操作)和CONTROL(控制)。本文对 TDBASE的语法解释的方式没有采用传统的SQL语法 解释方式,而用图表的方法进行解释,力求做到直 观,清晰地表达TDBASE所支持的时态处理语法。如
解析器类 parase
-对语句进行集中分析处理,生成对应的SQL语句