简介
时间是自然界无处不在的属性。信息技术的深入发展,对时态信息处理的要求越来越迫切。时态信息处理已经成为许多新一代数据库与信息系统的关键技术,特别是在电子商务、数据仓库、地籍管理系统、土地利用规划系统、地理信息系统中扮演着日益重要的角色。Snodgrass指出,在应用系统中平均每50行代码里就要涉及到一个有关日期或时间操作的语句。
自从20世纪80年代时态数据库TDB(Temporal DataBase)技术产生以来,其理论、模型、查询语言以及标准化都取得了丰硕成果。国内外出现了大量的关于时态数据模型、查询语言和时态理论的文献。尽管时态数据模型的研究已经具有多年的历史,然而其成果仍然局限于模型和原型系统阶段。本文系统地总结了时态数据库技术的发展历程,其研究和应用现状,简单介绍了几类具有代表性的时态数据模型及其标准化、产品化,并对时态数据库应用的设计方法、研究中存在的问题和发展趋势给出了作者的认识1。
时态数据库时态数据库是一种能够记录对象变化历史,即能够维护数据的变化经历的数据库。R.T.Snodgrass给时态数据库的定义是:不仅能够支持用户自定义时间,还能支持其它某种时间关系的数据库。目前时态数据库领域已经形成了专有的术语,并被百科全书收录。在时态数据库中,一般要表达3种基本时间,即用户自定义时间(User-Defined Time)、有效时间(Valid Time)和事务时间(Transaction Time)。用户自定义时间是指用户根据自己的实际需要或理解定义的时间,由用户自己负责解释含义,如员工管理系统中的“员工生日”。有效时间指的是现实世界中一个对象或事件发生的时间,或者该对象在现实世界中为真的时间,它可能是一个时刻或时段。事务时间指的是对一个数据库对象进行操作的时间,是一个事实存储在数据库中的时间,它记录着对数据库修改或更新的各种操作历史。有效时间和事务时间是正交的。比如图书管理系统中,学生借阅图书的时间是有效时间,而将学生借书这件事存储在数据库中的时间就是事务时间。有效时间可以覆盖全部时间范围,从“开始”直到“永久”。有效时间是由系统的具体用户(如图书管理员)给出或由系统给出缺省值。事务时间是由系统本身自动给出的,并且永远不会超过“当前”。
传统的数据库是含有属性和元组的二维数据库。将有效时间维和事务时间维引入到传统数据库中,则形成四维结构。把支持有效时间和事务时间的时态数据模型称作双时态数据模型(Bitemporal Data Model)。双时态数据模型使时态数据的表达清晰易懂,能够真正的在语义上解释用户自定义时间、有效时间和事务时间以及它们相互间的关系,能更好地支持基于时间的数据挖掘(Data Mining)1。
存储时态数据
在 ArcGIS 中,可以使用各种不同格式(如要素类、镶嵌数据集、栅格目录等等)来存储和管理时态数据。选择哪种格式取决于时态数据的属性以及希望如何显示时态数据。
以下是一些使用情境以帮助您决定应使用哪种数据格式来存储时态数据。
移动要素 - 显示海洋哺乳动物或其他生物的点位置,以便了解它们的运动模式。
更改要素的大小或形状 - 了解每个城市的人口增长或了解宗地边界的变化。
更改要素的颜色 - 根据图层符号系统的颜色变化,了解疾病致死率的增长方式。
使用栅格目录或 netCDF 数据检查变化 - 观测海洋温度变化或观测天气模式。
图表中随时间变化的图 - 检查不同地点的臭氧含量或水压变化。
存储时间值
数据的时间值可用固定或不固定的时间间隔内的某个采样时间点来表示。这些时间值存储在单独的属性字段中,并可用于在时间线上的某些特定时间点来显示时态数据。例如,在固定间隔内的不同时间点上采集流量数据。但是闪电或地震数据取决于特定的闪电风暴或地震发生的时间,因此以不固定的间隔进行采集。
时间值还能代表一段持续时间,例如当某个特定事件在一段时间内持续发生时。在这种情况下,时间值将存储在两个字段中,一个字段代表事件的开始时间,一个字段代表事件的结束时间。例如,表示火范围的面要素具有开始和结束时间,分别取决于火势的开始时间和结束时间。
这些时间值可以存储在日期字段、字符串字段或数值字段中。
在 ArcGIS 中使用时态数据
在时间启用图层之后,可在 ArcGIS 中显示时态数据。通过使用图层属性 对话框上的时间选项卡来设置图层的时间属性即可实现数据的显示。设置时态数据的时间属性后,即可使用时间滑块来显示时态数据。还可以将启用时间的图层作为地图服务来使用。2
发展20世纪80年代初,数据库技术的日渐成熟和大容量高速存储设备的发展为时态数据库技术的产生与应用创造了条件。时态数据库的发展历程可以分为3个阶段,即1982年以前的开创期,198~1993年的理论与模型探索阶段,以及1994年以来的应用发展阶段。
1982年,J.Ben.Zvi和J.Clifford分别完成的博士论文是时态数据库开创阶段的标志性成果。J.Ben.Zvi引入了有效时间和事务时间的双时态概念;提出了以时间区间作为字段值,突破了数据库表中字段值只能是数值或字符的概念;提出了时态索引方法。J.Clifford做出了关于历史数据库的开创性工作,提出了历史关系模型HRDM (Historical Relational Data Model)模型;引入了历史关系代数;研究了关系、元组、字段值上加上时态信息的技术细节以及历史关系模型与传统关系模型的兼容性问题。
1982年后,计算机学术界对时态数据库的研究给予了极大的关注。此后10年间,学术界发表了数以千计的论文,提出了上百种时态数据库模型和时态信息处理方法,涌现出了一大批研究学者和专门研究集体。1983年出版了世界上第一本关于时态数据库的著作,是该时期的标志性成果。1984年后,时态数据模型没有新的大的突破,研究重点转向了模型的标准化和产品化。1994年3月,TSQL2的初级版本发布。在产品化方面,到目前为止,仅有的几个时态数据库系统还处于原型和试验阶段,代表性的是TimeDB和TIGER在线学习系统。在国内,时态数据库研究和应用也越来越受到关注,出现了相关的书籍。唐常杰设计实现了对象历史模型Object History Model。与国外相比,国内对时态数据模型以及时态数据库的研究还比较少。主要集中在时态数据库的一般性技术,如:多媒体、地理信息系统等专业信息系统中涉及到的时态信息处理,其它主要为时态数据库理论和模型的阶段性研究1。
分类按其功能分为历史数据库、事务数据库和双时态数据库3。
历史数据库:被管理对象的生命周期称为有效时间(ValidTime),对象的历史由DBMS内部机制完成;
事务数据库:数据库本身被查增删改的时间为事物时间(TransactionTime),其历史由DBMS的内部机制处理;
双时态数据库:既能管理对象的历史,又能管理数据库本身被查增删改的历史。
基本概念时态数据库理论提出了三种基本时间:用户自定义时间、有效时间和事务时间。同时把数据库分为四种类型:快照数据库、回滚数据库、历史数据库和双时态数据库。
用户自定义时间:指用户根据自己的需要或理解定义的时间。时态数据库系统不处理用户自己定义的时间类型。因此,用户自定义时间是和应用相关的,不在时态数据库处理的范围之内。
**有效时间(Valid-Time):**指一个对象在现实世界中发生并保持的时间,即该对象在现实世界中语义为真的时间,包含Valid-From和Valid-To两个值。它可以指示过去、现在和未来。例如,考虑事实“小明从2003年到2007年是大学生”,那么时间区间[2003, 2007]是事实“小明是大学生”的有效时间区间,该事实在该时间区间内为真。有效时间可以是时间点、时间点的集合、时间区间或者时间区间的集合,或者是整个时间域。有效时间由时态数据库系统解释并处理,在查询的过程中对用户透明。用户也可以显式地查询和更新有效时间。
**事务时间(Transaction-Time):**指一个数据库对象发生操作的时间,是一个事实存储在数据库、或者在数据库中发生改变的时间,包含Transaction-From和Transaction-To两个值。当用户对数据库状态进行更改时,会产生各种操作历史,事务时间真实地记录了数据库状态变更的历史。有时也称事务时间为系统时间。
**快照数据库:**快照数据库是反映现实世界某一瞬间情况的数据模型。它记录了特定时刻的数据库状态。快照数据库采用这样的假设:一个存储在数据库中的元组,一定是真实世界中的有效事实。
历史数据库:数据库中被管理对象的生命周期是对象的有效时间,每一个元组记录了数据的一个“历史”状态。历史数据库中没有约束时间的表示方法,可以是时间点的集合、时间区间或者区间集合等形式表示。
**回滚数据库:**数据库中被管理对象的生命周期是事务时间的数据库。它保存了数据库中事务提交、状态演变的历史状态。
**双时态数据库:**数据库中元组包含一个系统支持的有效时间和一个系统支持的事务时间的数据库,称为双时态数据库。双时态数据库具备了快照数据库、历史数据库和回滚数据库的特点,存储了现实世界和数据库系统的变更历史。
**Now:**Now的中文意思是当前时间,是一个时间变元,随着当前时间的变化而变化,记录了随时间变化的信息,它的有效值依赖于当前时间。但在很多应用当中,now值还能表示“过去”和“未来”时间,这就是now语义的研究课题,它对于提高时态系统查询效率具有比较重要的意义。有关now语义的讨论可参见 软件学报 Vol. 16, No.5 (2005) 838-845
数据库模型从1970年G.Wiederhold和J.F.Fries在处理时态信息方面作了最早的尝试以来,近二十年,美国、欧洲等学者及研究集体在时态数据库方面作了大量的研究,共提出了13种时态数据库(TDB)的模型。13个TDB模型从不同的需求、不同的观点出发,各自独立地建立了一套术语、概念、数学模型,并形成了各自独立的理论体系。下面就一些较为趋于统一的术语和概念,以较有特色且较易理解的几个模型为代表进行时态数据库的描述3。
历史关系数据库模型历史关系数据库模型HRDM(History Relational Database Model)是James Clifford等学者于1987年提出的,是时态数据库的先驱模型之一。为了能有效的解决上述的保存快照的时间间隔的选取问题,在表的基础上引入了增加“任职期限”来解决,形成表。属性“任职期限”的值是区间或区间集合,称为元组的有效时间或生命周期。在时态数据库管理系统中,该值由系统管理而不是作为普通字段来进行管理。当一个元组录入关系,则该元组的生命周期开始;当对元组作一个时态删除,则指定一个时刻或取当前时刻作为该元组生命周期的终止点,并不作物理删除。一般而言,时态数据库中的历史不能删除、不能修改,只能追加和查询。通过表1和表2的比较,引入生命周期有如下的优点:减少冗余、提高了准确度,最重要的是由表2可推导出表1,而由表1就不能推出表2。时态数据库中属性被扩展为时态属性,一个时态属性可以是一个普通属性和一个时间区间组成的二元组。生命周期是系统时间域的子集,生命周期经过集合运算后,其值仍是生命周期。
TempSQL模型ShashiK.Gadia于1986年建立了同时性关系模型(HomogeneousRelationalModel)该模型因其实现了查询语言TempSQL而成名。TempSQL是一个类似SQL的时态查询语言,它兼容了SQL的主要功能,能查询被管理对象的历史、数据库本身插删改的历史以及用户和数据库本身出错的历史。TempSQL保持了时态数据库和静态数据库的无缝连接。快照数据库可以看作是TempSQL中时态关系的生命周期缩小为一个时间量子[now,now]时的特例。由于TempSQL扩展时态功能的成功,人们常以TempSQL指代该TDB模型。TempSQL中非关键字属性值可以随时间变化,但关键字不随时间变化。为了模型简单实用,Temp-SQL规定一个元组中各个属性的生命周期一致,称为满足同时性条件。TempSQL中允许时态属性是形如(区间,值)的二元组,例如([1995,1999],“上大学”)其语意是某人上大学的时间是[1995至1999]。在TempSQL中称[1995,1999]为属性值的定义域或生命周期,用双层方括号表示求生命周期运算。如:[[“上大学”]]=[1995,1999]。TempSQL中要求一个元组中各个属性的生命周期一致,称为满足同时性条件的时态元组。
双时态数据模型TQuel是Richard Snodgrass在1985年左右开发的时态查询语言。TQuel建立在双时态数据库模型上,该模型中,对象的生命周期称为有效时间,数据库事务执行时间称为事务时间,并认为这两个时间轴是正交、互为独立的。该模型建立了完备、复杂的理论,为TQuel语言制订了详细的句法规范,在理论上较深入研究了时态闭包、完全性、有效时间的不确定性、时态查询优化、时态约束,研究了TQuel和元组演算的语义关系,并得出一些较深刻的定理。TQuel是Quel语言的时态扩展,Quel语言作为元组语言的具体实现,在关系数据库理论和系统研究上占有重要地位。
时态数据库管理系统TDBMS基本组成传统数据库管理系统(DBMS)具有支持时间和日期的数据类型,但不能直接支持和管理时态数据,关于时态方面的操作需要由另行编写的应用程序完成。时态数据库管理系统(TDBMS)具有提供时态数据操作和支持时态数据管理的基本功能。 一个TDBMS需要具有下述子系统:
时态数据定义子系统 用来定义(创建、取消和修改)各种时态数据。时态数据操纵子系统 用来控制时态数据的各种基本操作。时态数据查询子系统 用来查询各类时态数据并且提供时态语义的支持。时态约束子系统 用来支持数据完整性过程中的各类时间关联与制约,例如被参照表中主键有效时间期间变化时参照表中外键的变化等。该子系统的基本功能是保证时态数据的一致性。
TimeDBTimeDB由A. Steiner于1998年开发的一个时态数据库管理系统 最新版本是2.2版。TimeDB是传统数据库管理系统的前端软件,用户使用ATSQL2语句描述应用中时态操作,然后由TimeDB转换后形成标准SQL语句,这些标准SQL语句传输到后台关系数据库中进行实际数据的操作。TimeDB初步实现了时态查询、时态更新、时态视图和部分时态完整性约束等基本时态功能,同时也兼容非时态数据操作。 TimeDB 1.0版本由Andreas使用SICStus Prolog语言开发,运行在SWI Prolog环境中。TimeDB 2.0版本使用Java语言开发,具有平台无关特征;基于JDBC访问数据库,可以在IBM Cloudscape、Oracle、Sybase等多种数据库管理系统之上使用;具有较友好的用户界面;优化了辅助表创建过程;具有本地调用接口TDBCI,可供Java应用程序调用以执行ATSQL2语句。 TimeDB 2.1版本开始使用Java SDK 1.4版本,支持Cloudscape 10; TimeDB 2.2版本加入了对Oracle 10g的支持。
TempDBTempDB是由汤庸教授领导的时态数据库研究小组于2002年开发研制,目前最新版本2.1版。作为国内首个支持时态数据管理的TDBMS,TempDB在逻辑上使用双时态数据模型,使用ATSQL2语言,支持电子政务、电子商务、决策支持等信息处理系统中的时态应用;同时,TempDB在技术上基于关系数据库管理系统MySQL平台、采用JAVA语言进行底层开发,具有较强的可移植性以及部署方便。 相对TimeDB,而TempDB能支持基于Now语义复杂操作,支持不确定时态语义查询;TempDB同时实现了运行归并和更新归并两种,这样不会出现时间戳相邻而用户定义属性完全相同的(未可归并)情形;TempDB能支持基于Now语义复杂操作,支持不确定时态语义查询。此外,TempDB还提供统一的图形化界面供用户输入语句、查看语句执行结果和中间结果,以及检测语句执行时的可能出错信息。