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

本文涉及的产品
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
云原生数据库 PolarDB MySQL 版,通用型 2核8GB 50GB
简介:
随着信息技术的发展,传统的关系数据库(如关系型数据库)功能已不能满足当今信息系统中对时态信息处理能力的需求。而时态数据库理论的完善和发展为解决时态信息处理问题提供了一个很好的解决方案。
什么是时态数据库?
区别于传统的关系型数据库(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关键字即可。
CREATE   TABLE  Employee(
ID 
VARCHAR ( 30 NOT   NULL ,
NAME 
VARCHAR ( 50 NOT   NULL )
 
AS  VALIDTIME;
2. 插入一条记录的ATSQL, 需要通过VALIDTIME PERIOD来指定一个时间范围的,其他部分和标准SQL一样
VALIDTIME PERIOD  [ 1981-1985) Insert into Employee values ('112', 'Jack');


3. 记录查询:  查询所有记录,在标准 SQL 前加 VALIDTIME 关键字即可,  查询指定时间段的记录,可以通过 PERIOD 关键字指定时间区间
VALIDTIME   SELECT   *    FROM    Employee;
VALIDTIME PERIOD 
[ 1983-1986)  SELECT * FROM Employee;
VALIDTIME PERIOD [1983-forever) SELECT * FROM Employee;
4. 向员工表里添加人员信息插入记录前后分别如表 3-1和表 3-2所示
VALIDTIME period  [  date "2008-1-1" – now)
Insert 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数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
2月前
|
存储 关系型数据库 数据库
附部署代码|云数据库RDS 全托管 Supabase服务:小白轻松搞定开发AI应用
本文通过一个 Agentic RAG 应用的完整构建流程,展示了如何借助 RDS Supabase 快速搭建具备知识处理与智能决策能力的 AI 应用,展示从数据准备到应用部署的全流程,相较于传统开发模式效率大幅提升。
附部署代码|云数据库RDS 全托管 Supabase服务:小白轻松搞定开发AI应用
|
3月前
|
安全 druid Nacos
0 代码改造实现应用运行时数据库密码无损轮转
本文探讨了敏感数据的安全风险及降低账密泄漏风险的策略。国家颁布的《网络安全二级等保2.0标准》强调了企业数据安全的重要性。文章介绍了Nacos作为配置中心在提升数据库访问安全性方面的应用,并结合阿里云KMS、Druid连接池和Spring Cloud Alibaba社区推出的数据源动态轮转方案。该方案实现了加密配置统一托管、帐密全托管、双层权限管控等功能,将帐密切换时间从数小时优化到一秒,显著提升了安全性和效率。未来,MSE Nacos和KMS将扩展至更多组件如NoSQL、MQ等,提供一站式安全服务,助力AI时代的应用安全。
222 14
|
2月前
|
安全 Java Nacos
0代码改动实现Spring应用数据库帐密自动轮转
Nacos作为国内被广泛使用的配置中心,已经成为应用侧的基础设施产品,近年来安全问题被更多关注,这是中国国内软件行业逐渐迈向成熟的标志,也是必经之路,Nacos提供配置加密存储-运行时轮转的核心安全能力,将在应用安全领域承担更多职责。
|
30天前
|
存储 人工智能 数据库
视图是什么?为什么要用视图呢?数据库视图:定义、特点与应用
本文三桥君深入探讨数据库视图的概念与应用,从定义特点到实际价值全面解析。视图作为虚拟表具备动态更新、简化查询、数据安全等优势,能实现多角度数据展示并保持数据库重构的灵活性。产品专家三桥君还分析了视图与基表关系、创建维护要点及性能影响,强调视图是提升数据库管理效率的重要工具。三桥君通过系统讲解,帮助读者掌握这一常被忽视却功能强大的数据库特性。
247 0
|
11月前
|
存储 Oracle 关系型数据库
Oracle数据库的应用场景有哪些?
【10月更文挑战第15天】Oracle数据库的应用场景有哪些?
785 64
|
3月前
|
SQL 数据库
软考软件评测师——数据库系统应用
本文介绍了关系数据库的基础知识与应用,涵盖候选码定义、自然连接特点、实体间关系(如1:n和m:n)、属性分类(复合、多值与派生属性)以及数据库设计规范。同时详细解析了E-R图转换原则、范式应用(如4NF)及Armstrong公理体系。通过历年真题分析,结合具体场景(如银行信用卡额度、教学管理等),深入探讨了候选键求解、视图操作规范及SQL语句编写技巧。内容旨在帮助读者全面掌握关系数据库理论与实践技能。
|
7月前
|
中间件 关系型数据库 数据库
docker快速部署OS web中间件 数据库 编程应用
通过Docker,可以轻松地部署操作系统、Web中间件、数据库和编程应用。本文详细介绍了使用Docker部署这些组件的基本步骤和命令,展示了如何通过Docker Compose编排多容器应用。希望本文能帮助开发者更高效地使用Docker进行应用部署和管理。
174 19
|
7月前
|
存储 关系型数据库 分布式数据库
PolarDB开源数据库进阶课16 接入PostGIS全功能及应用举例
本文介绍了如何在PolarDB数据库中接入PostGIS插件全功能,实现地理空间数据处理。此外,文章还提供了使用PostGIS生成泰森多边形(Voronoi diagram)的具体示例,帮助用户理解其应用场景及操作方法。
297 1
|
8月前
|
缓存 NoSQL JavaScript
Vue.js应用结合Redis数据库:实践与优化
将Vue.js应用与Redis结合,可以实现高效的数据管理和快速响应的用户体验。通过合理的实践步骤和优化策略,可以充分发挥两者的优势,提高应用的性能和可靠性。希望本文能为您在实际开发中提供有价值的参考。
167 11

热门文章

最新文章