1、实 验 报 告题 目: 如何在时态数据库中增加索引学生姓名: 肖猷杰_ 学 号: 04370082_ 时态数据库不仅可以实现传统数据库对数据的存储、管理等功能,同时将数据的时态信息也纳入数据库的管理范围,对外提供一个一致、高效的时态数据处理平台供用户使用。然而主流的数据库管理系统都不支持时态查询语言的操作,因此在传统的处理跟时间相关的业务逻辑应用当中,对于每一个应用程序,程序员都必须将关于时间处理的业务逻辑部分跟应用程序的其他部分集成在一起,其结构如图 1-1所示。由于这些时间相关的业务逻辑通常具有很高的相似性,这样做就会导致程序的结构比较臃肿,功能重用性低。另外当需要对这些时间相关的业务逻辑
2、部分进行修改时,往往要对每一个相关的部分进行修改,工作量很大,而且容易出错。如果将与时间相关的业务逻辑部分抽取出来,然后在传统的 RDBMS与应用程序之间插入一个时态数据库中间件层,就可以有效地解决以上的问题。新的应用程序系统结构如图 1-2所示。在传统数据库的应用已经非常普及的情况下,时态数据库的研究应该以其为基础,而不应与其脱离,在其基础上逐步加入时态信息处理机制。事实上,在短期内,人们还无法取代现有数据库系统而开发出全新的时态数据库的。利用现有的数据库系统,并与第三方开发的时态信息处理中间件结合是一个比较好的解决方案。时态中间件将时态 SQL语言转换成标准的 SQL语言,然后将标准的 S
3、QL语言交给底层的DBMS处理。关系数据库管理系统数据库文件应用程序 1时态处理模块 1应用程序 2时态处理模块 2应用程序 n时态处理模块 n图 1-1 传统的处理时间逻辑的应用系统结构图关系数据库管理系统数据库文件应用程序 1 应用程序 2 应用程序 n图 1-2 添加时态数据库中间件后的应用体系结构图时态中间件系统即使是当前最有代表性的时态数据库产品 TimeDB,还有很多需要完善的地方。中山大学数据库与协同实验室结合时态数据库理论,特别是其中的时态关系代数和编译原理的基本思想,实现了一个时态数据库中间件 TempDB,为时态数据库理论研究和时态信息处理相关的应用开发提供了一个有力的工具
4、。TempDB中间件对 TimeDB进行了如下各方面的改进:系统与后台 DBMS职责划分不明造成效率低下,TimeDB 系统可移植性不高,缺乏多用户并发操作的支持。本实验报告基于 TempDB的研究成果,在此基础上再进行理论研究。以当前时态数据库研究领域中被忽视了的时态数据索引为切入点,研究了时态数据索引的实现机制及其对时态 SQL执行效率的影响。第 1章 时态查询语言的语法分析1.1 ATSQL2与 SQLATSQL2(Applied Temporal SQL 2)是在 SQL3 规范中添加时态支持的时态查询语言,于 1996 年获得 ANSI 通过。它定义了时态数据查询语句、时态数据修改语
5、句、时态数据定义语句、时态约束和断言的语法和语义。ATSQL2 作为 SQL 语言的扩展,首先必须考虑两种语言的兼容性。SQL3 语言必须是 ATSQL2 的子集,每一个 SQL3语句在 ATSQL2 中必须具有相同的语义。其次,ATSQL2 汇集了众多前期时态查询语言的特点,拥有支持时态完整性的查询语言,同时支持时态数据库对有效时间和事务时间的描述,即这是一门支持双时态查询的语言。关于 ATSQL2 的深入分析及其完整 BNF 定义可以参见更多文献。另外需要说明的是,时态数据中间件 TempDB 采用的语言并不是标准的 ATSQL2 语言,而是作者在 ATSQL2 基础上进行修改剪裁后得到的
6、更加严谨、简洁的语言,其完整的 BNF语法定义参见附录一。1.2时态 SQL语句的转化及执行过程在当前版本的 TempDB采用的 ATSQL2语言修改版本中,ATSQL2 语言包括时态数据定义语言(Temporal DDL) 、时态数据操纵语言( Temporal DML)和时态数据查询语言(Temporal Query) 。接下来的三小节将分别介绍 TempDB对这三种不同用途的语句的转化及执行过程。1.2.1 时态 DDL时态 DDL语句转换模块主要处理四种子语句,即创建表格(CREATE TABLE) 、创建视图(CREATE VIEW) 、删除表格(DROP TABLE) 、删除视图(
7、DROP VIEW) 。其中删除表格和删除视图的部分并不需要太多与时态相关的处理,而创建视图的工作又是创建表格和数据查询两部分的结合。于是 TempDB对时态 DDL的处理集中在创建时态表格的部分,以下是时态表格创建语句实例:1、 时态表格创建语句2、 转换后的标准 SQL语句可以看到,在时态 SQL语句中使用了“AS VALIDTIME”来指定创建一张时态表格,反映在后台关系型数据库中会增加两个时间列用以存储有效时间,并将用户指定的逻辑主键和两个有效时间列一同设置成为联合主键。1.2.2 时态 DML在当前版本的 TempDB采用的 ATSQL2语言修改版本中,时态 DML包括时态插入语言(
8、INSERT INTO)和时态删除语言(DELETE FROM)两个部分的子语句。在时态语义下,对数据表格的插入和删除具有比传统非时态语义下的插入和删除更加丰富的语义,主要原因在于时态插入和时态删除必须基于有效时间来进行,由此产生更为复杂的元组分裂、归并等操作。具体来说,时态数据表格中的每一个元组都有一段有效时间区间与之对应,而在时态插入与时态删除语句中也分别带有欲插入/删除元组的有效时间限制。于是,一旦发生时态插入,有可能由于插入的元组信息正好填补了原先某个描述主体没有的有效时间区间而引起归并操作。一旦发生时态删除,有可能由于要求删除的部分为某一个元组的一部分有效时间区间而引起分裂操作。这些
9、操作的发生,判断依据就是著名的 Allen的 13种时间区间关系。由有效时间区间之间复杂的交叠关系,造成了时态插入和时态删除具体处理流程上的不同。CREATE TABLE em (id VARCHAR(20) PRIMARY KEY,name VARCHAR(20),address VARCHAR(20), salary INTEGER, age INTEGER, band INTEGER) AS VALIDTIME;CREATE TABLE em (id VARCHAR(20), name VARCHAR(20),address VARCHAR(20), salary INTEGER, ag
10、e INTEGER, band INTEGERvts_timeDB DATETIME,vtb_timeDB DATETIME,PRIMARY KEY(ID, vts_timedb, vte_timeDB) ;本试验报告简单列举 2个实例来说明时态插入和时态删除语句与普通 SQL插入和删除语句的不同。1、 时态插入用例a、 时态数据插入语句b、 转换后的标准 SQL语句c、 执行该语句前后数据库表格的情况时态数据插入前时态数据插入后图 1-1 引起时态归并操作的时态数据插入执行结果d、 用例解释此用例演示的是造成时态归并的时态插入操作,即插入的元组与其他已存在的元组构成了重叠或相邻的时态关系。运
11、行该语句时,TempDB 会先执行 SELECT查询语句取出数据库中已存在的所有 id为 007的元组,然后比较待插入元组与其他已存在的相关元组的有效时间关系,最后生成相应的一条或多条标准 SQL语句来更新后台数据库,使之符合时态插入的语义。2、时态删除用例a、时态数据删除语句VALIDTIME PERIOD DATE “2006-09-30“ - DATE “2007-08-31“ )INSERT INTO test VALUES(007);SELECT * FROM test where id=007 order by vts_timedb , vte_timedb;delete from
12、 test where id=007 and vts_timedb=2006-01-01 00:00:00.0and vte_timedb=1905-08-11 00:00:00.0 and vte_timedb=2008-04-29 00:00:00;insert into emvalues ( lengxuezhuihun , lengxuebqj , chenjiadazhai ,1000,18,1,1905-08-11 00:00:00.0,2008-04-29 00:00:00);图 3-3 带索引的时态数据插入操作从图 3-3可以看到,有索引支持的时态 Insert语句执行时间为
13、1秒。2、没有索引支持的时态数据插入由于这个测试用例的时态插入语句和上一个测试用例的时态插入语句除了表名外完全相同,转换后的标准 SQL语句也是如此,因此在这里不再单独列出时态插入语句和转换后的标准 SQL语句。图 3-4 不带索引的时态数据插入操作从图 3-4可以看到,没有索引支持的时态 Insert语句执行时间为 1.203秒,比带索引支持的时态 Insert语句慢了 20%,两者的差异没有时态查询语句那么大。这是因为索引机制只能在底层数据库执行标准 SQL的过程中起作用,对 TempDB执行时态区间转换运算的效率没有影响。3.2.3 时态 Delete 语句测试1、在索引支持下的时态数据
14、删除a、时态删除语句b、转换后的标准 SQL语句分析 TempDB执行过程中产生的日志可以发现,TempDB 首先生成一条 SQL查询语句:从表中取出满足条件的 1条元组记录之后,TempDB 判断出该元组需要进行时态分裂,便将其信息予以保存后删除,替换以两个分裂的元组。这一组扫描及分裂操作涉及较多的标准 SQL语句,本段不再逐条列出。c、运行结果图 3-5 带索引的时态数据删除操作从图 3-5可以看出,有索引支持的时态 Delete语句执行时间为 141毫秒。VALIDTIME PERIOD DATE “1985-12-05“ - DATE “1998-09-01“ )DELETE FROM
15、 em WHERE id=lengxuezhuihun ;select DISTINCT * from em where id=lengxuezhuihun order by vts_timedb, vte_timedb;2、没有索引支持的时态数据删除由于这个测试用例的时态删除语句和上一个测试用例的时态删除语句除了表名外完全相同,转换后的标准 SQL语句也是如此,因此在这里不再单独列出时态删除语句和转换后的标准 SQL语句。图 3-6 不带索引的时态数据删除操作从图 3-6可以看出,没有索引支持的时态 Delete语句执行时间为 860毫秒,是有索引支持的时态 Delete语句执行时间的 6倍。由此可见,索引机制在提高时态数据中间件执行效率方面起到了重要的作用。第 4章 总结本实验从基于当前 TempDB的研究成果,以索引机制作为切入点,扩展了原TempDB所用的 ATSQL2语法定义,初步实现了时态数据中间件对数据库索引机制的支持,并通过实验和对比测试验证了索引机制对时态中间件执行效率的重大改进,为未来实现完整的时态数据库平台和提高时态数据构件的性能进行了有益的探索和技术积累。