首页 百科知识 时态数据库

时态数据库

时间:2023-10-17 百科知识 版权反馈
【摘要】:由于时态数据库是所有数据的集合体,可以提供任何时刻和时间段的数据,使数据库成为真正意义上的数据库,这是传统数据库无法比拟的。毫无疑问,在时态数据库中时间具有很重要的意义,在时态数据库中有三类时间,分别是用户自定义时间、有效时间和事务时间。在目前的时态数据库中,上述3种时间体系都有着广泛的应用。在双时态数据库中可以避免以前回滚数据库中不能改动以前元组的情况。

10.7.3 时态数据库

现实世界是四维的世界,时间是自然界无所不在的客观属性。但是传统的数据管理系统对时态数据未做专门的处理和对待,而只作为一般的属性值,作为用户定义时间进行存储和管理。传统数据库只反映了一个对象的发展全过程中在某一个时刻的状态(快照),不联系其过去和未来。但是随着数据库与信息技术的深入和发展,对时态信息处理的需求越来越迫切,时态信息处理已经成为许多新一代数据库与信息系统的关键技术。

时态数据库与传统的数据库有着很大的区别,我们首先来看看时态数据库的特征:

(1)动态性。传统数据库对于数据的管理只是保持某个时间上的状态,它是静态的管理。在数据库更新时,其历史数据库就丢失了,因此其不能反映出现实世界的动态过程。而时态数据库对于历史数据仍然保留着,对历史数据也可以进行更新,使系统和现实世界一直保持着全方位的动态交换。

(2)全面性。由于时态数据库是所有数据的集合体,可以提供任何时刻和时间段的数据,使数据库成为真正意义上的数据库,这是传统数据库无法比拟的。

下面对时态数据库中的一些基本概念进行介绍,主要包括3种基本时间和两个时间维以及3种类型的时态数据库等。

一、3种基本时间

毫无疑问,在时态数据库中时间具有很重要的意义,在时态数据库中有三类时间,分别是用户自定义时间、有效时间和事务时间。

(1)用户自定义时间:用户可以根据自己的理解和需要在数据库中定义自己的时间,这称之为用户自定义时间。用户自定义时间系统不需要解释其含义,系统像管理其他属性一样来管理用户自定义时间。

(2)有效时间:所谓有效时间是指数据库中的数据与现实世界保持一致的时间,或者该对象在现实世界中为真的时间。如果一个数据库只支持有效时间则称之为历史数据库(Historical Database),后面将对其进行介绍。有效时间有两个特点:一是有效时间值的含义依赖于具体应用,取值是否有效视具体应用场合而定,即涉及数据约束问题;二是有效时间可以指过去、现在和未来。

(3)事务时间:事务时间是指系统进行各种操作,使得数据库数据状态发生改变的时间。因此其记录的是数据库的历史状态,对应于现在事务或现有数据库状态变迁的历史,所以有时也称事务时间为系统时间(System Time)。通常把支持事务时间的数据库称为回滚数据库,回滚数据库记录数据库的自身变化,沿着事务时间轴记录数据状态,按照事务时间排序,保留了所有状态的演变历史。事务时间有如下特点:事务时间是由系统时钟给出,它独立于应用,用户不能修改事务时间;事务时间是记录系统历史状态的时间,其反映的是数据库实际操作时间,因此不可能指未来。

在目前的时态数据库中,上述3种时间体系都有着广泛的应用。一个时态关系是一个历史状态的序列,每个历史状态能够表示有效时间的完整的历史关系。

二、两个时间维

对于传统关系数据库有两个维,其一是属性维,其二是元组维。时态数据库是在传统数据库的基础上增加了时间维概念,时间维指的是有效时间维和事务时间维,于是时态数据库变成了四维结构。

有效时间对于数据库中的元组来说,就是该元组取值为真的时间。我们可以把有效时间的维看成是一个数轴,数轴中的取值可以是从过去的某一时刻起,到现在甚至将来的某一个时间点。元组的有效时间取值就是在这个时间轴上取有限个时间点或有限个时间片段;而对于那种时间不变的属性的元组,它们的有效时间也许在表中没有表现出来,这些元组的有效时间是整个时间轴。对于现在有效的数据的有效时间一般用[开始时间,NOW]表示,就是说这个数据的结束时间还不知道。当这个数据发生改变的时候,应该修改有效时间为[开始时间,结束时间],然后将此记录保存,并增加修改后数据的记录,有限时间为[新数据开始时间,NOW],这样如果数据库一直运行下去,数据的记录会越来越复杂,涉及的时间片段和时间点会越来越多。

事务时间表示相应数据库的更改时间。如果我们用数轴来表示事务时间,数轴是从系统支持的最小的那个时间开始一直无限延伸,事务时间的取值就是这个时间轴上的某个点或者某些点。这和有效时间是不同的,有效时间一般都是时间段,而事务时间则应该是时间点。

三、3种时态数据库

首先介绍前面提到的回滚数据库。回滚数据库实现的是事务时间轴,它按照事务时间进行编址,记录的是每次事务提交之间的数据库状态。

因为回滚数据库仅仅实现的是时间轴,所以回滚数据库有很多明显的不足,主要表现如下:

(1)回滚数据库因为是按照事务时间编址,它记录的是数据库的变化的历史,但是数据库的变化和现实世界的变化不是同步的。在现实世界中元组的某个属性发生了变化,如果在数据库中这个时间点没有发生事务则数据库的状态不改变,现实世界中的变化在数据库中就得不到体现。

(2)因为事务时间是不能修改的,所以过去元组即使有错误也不可能更正。回滚数据库只能修改事务提交之前的数据库状态,对于以前事务时间点的状态是无能为力的。

(3)回滚数据库的冗余太多。回滚数据库要保存事物提交前数据库的状态,但是每次事务提交时相对于前一事务时间之前的数据库状态,发生改变的内容是很小的,仍然需要对整个内容进行重新存储,因此回滚数据库的数据冗余是非常大的。

历史数据库由“历史关系”组成,每一个元组记录了数据库的一个“历史”的状态。历史数据库记录了在有效时间轴上的一系列数据库状态。我们可以认为历史数据库中记录的是现实世界的变化状态。但是因为它实现的仅仅是有效时间轴,所以对于数据库的修改是无法记录的。历史数据库的主要特点是支持有效时间,数据冗余小,结构相对简单。但是也存在一些不足,主要体现在:不支持事务时间,不可以像回滚数据库一样对以前某一个状态进行查询。

双时态数据库是结合回滚数据库和历史数据库两者的优点而设计的一种数据库,它既实现了事务时间轴又实现了有效时间轴。因此,其存储了数据库状态的改变和现实世界的变化过程。双时态数据库由时态关系组成,其时态关系是一个四维结构。其中两维是属性和元组,另外两维是事务时间和有效时间,因此,只要在事务时间中任意截取事务时间点就可以找到相应元组的有效时间段。

在双时态数据库中可以避免以前回滚数据库中不能改动以前元组的情况。在双时态数据库中我们可以在当前时间对以前的事务时间的某个元组的属性和有效时间进行改动。当然对原来的事务时间是没有办法更改的,所以只是在其中增加了一个新的记录,该记录的事务时间是当前时间,记录的内容是更改后的内容。但是双时态数据库是以牺牲大容量的存储空间为代价,因此,对双时态数据库的存储进行优化是以后双时态数据库研究的一个重要工作。

经过多年的发展,现在已经出现多种时态数据模型。对于时态数据库查询语言,TSQL2是当前最具有代表性的,对于时态数据模型比较有代表性的是双时态概念模型BCDM以及其他时态数据库相关的内容,这里就不详细介绍了,有兴趣的读者可以参考相关资料。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈