时态数据库的应用介绍(1)

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
简介:
随着信息技术的发展,传统的关系数据库(如关系型数据库)功能已不能满足当今信息系统中对时态信息处理能力的需求。而时态数据库理论的完善和发展为解决时态信息处理问题提供了一个很好的解决方案。
什么是时态数据库?
区别于传统的关系型数据库(RDBMS),时态数据库(Temporal Database)主要用于记录那些随着时间而变化的值的历史,而这些历史值对应用领域而言又是重要的,这类应用有:金融、保险、预订系统、决策支持系统等。
目前时态数据库还没有像如Oracle、SQL Server等大型关系数据库那样的产品。在当前时态数据库技术尚未完全成熟的现状下,DBMS提供商不会轻易把时态处理功能引入现有的DBMS中,因此,利用成熟的RDBMS数据库,建立时态数据库的中间件,在现阶段是一个较好的选择,因此就应运而生TimeDB和TempDB了。
国外的TimeDB(
http://www.timeconsult.com/Software/Software.html)是一种结合关系型数据库来实现时间数据库应用的技术,它支持时态数据库脚本:ATSQL2 [SBJS96a,SBJS96b,SBJS98]。它可以认为是关系数据库的一个前端,把时态数据库语句转换为关系型数据库的脚本进行执行,它的运用场景如下所示。
TimeDBArchiture.jpg
国内的TempDB也是一种类似的技术应用,支持ATSQL2,和TimeDB类似,都是基于目前非常成熟的关系型数据库基础上的应用。
时态数据库中间件不改变现有商业DBMS的结构和功能,而是作为一个上层构件添加到商业DBMS之上,应用程序之下,形成一个中间层结构。这个中间层结构能处理时态结构化查询语言(ATSQL2),把它转换成下层DBMS能理解的标准SQL语言(如P-SQL)并在商业DBMS中执行。

时态数据库理论的基本概念
时态数据库理论提出了三种基本时间:用户自定义时间、有效时间和事务时间。同时把数据库分为四种类型:快照数据库、回滚数据库、历史数据库和双时态数据库。
时态数据库理论提出了三种基本时间:用户自定义时间、有效时间和事务时间。同时把数据库分为四种类型:快照数据库、回滚数据库、历史数据库和双时态数据库。
  用户自定义时间:指用户根据自己的需要或理解定义的时间。时态数据库系统不处理用户自己定义的时间类型。因此,用户自定义时间是和应用相关的,不在时态数据库处理的范围之内。
  有效时间(Valid-Time):指一个对象在现实世界中发生并保持的时间,即该对象在现实世界中语义为真的时间,包含Valid-From和Valid-To两个值。它可以指示过去、现在和未来。例如,考虑事实“小明从2003年到2007年是大学生”,那么时间区间[2003, 2007]是事实“小明是大学生”的有效时间区间,该事实在该时间区间内为真。有效时间可以是时间点、时间点的集合、时间区间或者时间区间的集合,或者是整个时间域。有效时间由时态数据库系统解释并处理,在查询的过程中对用户透明。用户也可以显式地查询和更新有效时间。
  事务时间(Transaction-Time):指一个数据库对象发生操作的时间,是一个事实存储在数据库、或者在数据库中发生改变的时间,包含Transaction-From和Transaction-To两个值。当用户对数据库状态进行更改时,会产生各种操作历史,事务时间真实地记录了数据库状态变更的历史。有时也称事务时间为系统时间。
  快照数据库:快照数据库是反映现实世界某一瞬间情况的数据模型。它记录了特定时刻的数据库状态。快照数据库采用这样的假设:一个存储在数据库中的元组,一定是真实世界中的有效事实。
 历史数据库:数据库中被管理对象的生命周期是对象的有效时间,每一个元组记录了数据的一个“历史”状态。历史数据库中没有约束时间的表示方法,可以是时间点的集合、时间区间或者区间集合等形式表示。
 回滚数据库:数据库中被管理对象的生命周期是事务时间的数据库。它保存了数据库中事务提交、状态演变的历史状态。
 双时态数据库:数据库中元组包含一个系统支持的有效时间和一个系统支持的事务时间的数据库,称为双时态数据库。双时态数据库具备了快照数据库、历史数据库和回滚数据库的特点,存储了现实世界和数据库系统的变更历史。
  Now:Now的中文意思是当前时间,是一个时间变元,随着当前时间的变化而变化,记录了随时间变化的信息,它的有效值依赖于当前时间。

时态数据库脚本ATSQL的使用
时态数据处理构件根据ATSQL2的语法引入了Now、Beginning和Forever三个变元。Beginning和Forever分别表示时态数据处理构件所能表示的时间起点和终点。Now表示当前时间。每次执行操作时必须使Now绑定到一个固定的值(操作执行的当前时间),这样后继操作才能正常进行。在下面的ATSQL2中表示的这几个单词是具有具体的含义的。
ATSQL2的数据定义语句包括以下几项功能:创建表、创建视图、删除表、删除视图。
ATSQL2语言和普通SQL语句一样,使用“create table”关键字创建数据库表,关键字“as validtime”用于指示系统创建具有有效时间支持的数据库表。

1. 创建员工表Employee, 是在标准的创建表SQL结尾,加入AS VALIDTIME关键字即可。
None.gif CREATE   TABLE  Employee(
None.gifID 
VARCHAR ( 30 NOT   NULL ,
None.gifNAME 
VARCHAR ( 50 NOT   NULL )
None.gif 
AS  VALIDTIME;
2. 插入一条记录的ATSQL, 需要通过VALIDTIME PERIOD来指定一个时间范围的,其他部分和标准SQL一样
None.gif VALIDTIME PERIOD  [ 1981-1985) Insert into Employee values ('112', 'Jack');
None.gif


3. 记录查询:  查询所有记录,在标准 SQL 前加 VALIDTIME 关键字即可,  查询指定时间段的记录,可以通过 PERIOD 关键字指定时间区间
None.gif VALIDTIME   SELECT   *    FROM    Employee;
None.gifVALIDTIME PERIOD 
[ 1983-1986)  SELECT * FROM Employee;
None.gifVALIDTIME PERIOD [1983-forever) SELECT * FROM Employee;
4. 向员工表里添加人员信息插入记录前后分别如表 3-1和表 3-2所示
None.gif VALIDTIME period  [  date "2008-1-1" – now)
None.gifInsert into Staff Values ( 132202, 'Zhang Jinning', '信息部');
ATSQL2.JPG

5. 为employee表创建一个视图,该视图包含所有1999-9-9前离职的工人信息,其中VALIDTIME(R)表示取元组R的有效时间区间:
Create view employee_v as 
Validtime select * from employee 
Where VALIDTIME(employee) before date "1999-9-9";

6. 删除员工表的ATSQL和一般的SQL语句一样,如下
DROP TABLE Employee;

几个查询相关的概念
快照查询:查询当前时刻的数据库状态。对于非时态表(快照数据库),快照查询是一种向上兼容的查询方式,可以查询非时态数据库的数据。对于时态表(历史数据库或回滚数据库),快照查询截取当前数据库状态,返回当前状态下的查询结果。

顺序查询:顺序查询是一种时态查询,通过关键字VALIDTIME或者TRANSACTIONTIME指示系统执行哪个时间维(有效时间维、事务时间维,或者两个维度)的时态查询。在这种查询中系统运用时态代数操作自动处理元组的时间戳(有效时间、事务时间,或两者的结合)。

非顺序查询:执行非顺序查询时,系统不再根据时态代数操作解释时间戳,只是把有效时间和事务时间当作普通的用户定义属性对待。非顺序查询适合特殊的查询需求,例如查询条件涉及状态的变化的查询。
时态归并:时态归并是作用于时态数据库的一种重构操作[23] 。归并把具有相同属性值并且时间戳相邻或重叠的元组合并成一个元组,归并的过程保持时态数据库的状态不被改变。

时态数据的变元
时态数据处理构件根据ATSQL2的语法引入了Now、Beginning和Forever三个变元。Beginning和Forever分别表示时态数据处理构件所能表示的时间起点和终点。Now表示当前时间。每次执行操作时必须使Now绑定到一个固定的值(操作执行的当前时间),这样后继操作才能正常进行。
时态数据处理构件使用重写底层比较过程的方法绑定Now的语义。它把Now、Beginning和Forever分别用以下三个具体的时间值表示:
Now = ‘9999-01-01 00:00:00’;
Beginning = ‘1000-01-01 00:00:00’;
Forever = ‘9999-12-31 23:59:59’.
因为使用了特殊值表示这三个变元,一方面使得时态数据处理构件能处理的时间范围比原商业数据库能处理的时间范围小,另一方面使得原商业数据库底层对时间类型数据的比较算子有了新的意义。例如,如果当前时间是2007年12月1日,考虑“2009-1-1>Now”的意义时,应当先把Now替换为2008-07-18,比较结果为真。
在TimeDB中Now只是当前时间的别名。在时态插入语句的执行过程中,Now作为一个标记被替换为语句执行的当前时间。
注:本文部分内容引用了黄永钊的《时态数据处理构件的性能优化研究与实现》
本文转自博客园伍华聪的博客,原文链接:时态数据库的应用介绍(1),如需转载请自行联系原博主。


相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
5天前
|
前端开发 Java Go
新一代数据库技术的崛起与应用前景
本文探讨了新一代数据库技术在不同领域的崛起和应用前景。通过对前端、后端、Java、Python、C、PHP、Go等多种类型的技术进行分析,我们揭示了新一代数据库技术的优势和特点,并展望了其在未来的发展趋势。本文旨在为读者全面了解新一代数据库技术提供参考和指导。
|
7天前
|
存储 人工智能 多模数据库
数据库技术前沿:探索其发展趋势与应用
一、引言 数据库技术作为现代信息技术体系中的关键一环,不仅为企业和组织提供了高效、安全的数据存储和管理手段,还在大数据、云计算、人工智能等前沿领域发挥着重要作用
|
7天前
|
SQL 存储 关系型数据库
数据库技术前沿:深入理解、广泛应用与未来创新
一、引言 数据库技术作为信息技术领域的核心之一,为企业和组织提供了高效、可靠的数据存储、管理和查询功能
|
7天前
|
SQL 存储 多模数据库
数据库技术探索:原理、应用与未来发展趋势
一、引言 数据库技术作为信息时代的基石,已经深入到社会的各个角落
|
2天前
|
存储 安全 关系型数据库
安全开发-PHP应用&留言板功能&超全局变量&数据库操作&第三方插件引用&后台模块&Session&Cookie&Token&身份验证&唯一性
安全开发-PHP应用&留言板功能&超全局变量&数据库操作&第三方插件引用&后台模块&Session&Cookie&Token&身份验证&唯一性
|
6天前
|
监控 安全 关系型数据库
精通MySQL:数据库核心技术与应用实践
h3> 一、引言 MySQL作为开源关系型数据库管理系统的佼佼者,凭借其出色的性能、灵活性和稳定性,成为许多企业和开发者的首选
|
7天前
|
存储 人工智能 NoSQL
探索数据库技术的奥秘:从基础架构到前沿应用
一、引言 在数字化时代,数据库技术作为信息管理的基石,已经渗透到我们生活的方方面面
|
7天前
|
存储 SQL NoSQL
探索数据库技术的奥秘:从核心原理到行业应用
一、引言 数据库技术是现代信息科技的核心组成部分,它为我们提供了一种高效、可靠的方式来存储、检索和管理数据
|
7天前
|
存储 人工智能 NoSQL
探索数据库技术的奥秘:原理、应用与前沿发展
一、引言 数据库技术作为现代信息技术的核心支柱之一,已经深入到各个行业与领域,成为数据处理与存储的不可或缺的工具
|
7天前
|
存储 SQL NoSQL
探索数据库技术的奥秘:原理、应用与前沿进展
一、引言 数据库技术作为现代信息技术的核心组成部分,承载着数据存储、检索、管理和分析的重要任务

热门文章

最新文章