本文介绍Lindorm时序引擎中的Database概念以及相关的功能。
Database的概念
每个正在运行的Lindorm时序引擎实例都管理着一个或多个数据库(简称Database)。在各个Database之间,数据会被隔离。每个Database都有若干时序数据表,结合名词解释的描述,我们可以对时序引擎的数据层级归纳为下图所示:
如果一个Lindorm时序引擎实例计划包含不相关的项目数据,在很大程度上,彼此之间是隔离的。那么在这种情况下,建议将它们放到单独的数据库中,并且调整相应的授权和访问控制用户。此外,时序引擎允许用户跨Database访问数据,前提是该用户必须拥有对目标Database的相应操作的权限。
以Database为粒度的时序数据管理功能
Database是时序表的集合,用户可以根据业务需求将拥有相同业务背景的时序表保存在一起,从而实现数据隔离。另一方面,Lindorm时序引擎的一系列功能也都是以Database为粒度提供给用户使用的。包括以下功能:
用户能够以Database为单位设置数据的冷热分界线。
说明关于数据冷热分层的概念,可以参见时序数据的冷温热数据分层。
用户能够以Database为单位设置数据的存活时间(Time To Live,简称TTL)。
当TTL被设置后,时序数据的时间戳距当前的时间差超过了TTL的时间,则这些数据将被视作过期数据,会被时序引擎清除掉。
时序领域的数据的时间戳一般分成两种概念:
事件时间:即时序数据对应的事件真实发生时的时间。时序数据元素说明中提及的时序数据模型的时间戳即是事件时间。
入库时间:即时序数据写入数据库的时间。
上述冷热分界线和TTL的能力都是基于事件时间进行工作。目前不支持基于入库时间设置冷热分界线或TTL。
无论是冷数据归档还是数据到期清理工作,都是通过时序引擎的异步compaction任务执行的,因此,冷数据归档和TTL数据清理可能存在滞后的情况。
对Database既设置了冷热分界线,又设置了TTL的情况下,已归档的冷数据的时间戳如果超过了TTL定义的存活时间,数据也会触发清理。
对于Database设置了TTL的情况下,如果写入数据的时间戳已经超过了TTL的范围。那么写入仍然是可以成功的,但是查询时是查不到这样的数据的。
Database管理
时序引擎支持用户通过SQL对Database进行以下管理操作:
Database的创建
在时序引擎中创建一个新的Database。SQL语法请参见CREATE DATABASE。
说明新建的Database需要单独为指定的用户赋权,用户并不会默认具有访问权限。
Database的删除
在时序引擎中删除一个已有的Database。SQL语法请参见DROP DATABASE。
Database的属性修改
在时序引擎中对一个已有Database的属性进行修改。包括冷热分界线,数据存活期间等。SQL语法请参见ALTER DATABASE。
Database的属性查询
在时序引擎中查看一个已有Database的属性元数据。SQL语法请参见DESCRIBE DATABASE。
在管理控制台上管理Database
在Lindorm实例的管理控制台上也可以对时序引擎的Database进行管理。可以直接在管理控制台的数据库管理界面上设置Database的冷热分界线以及数据保留策略。操作界面如下图所示:
目前在管理控制台上并不支持Database的创建和删除。若需要创建或删除Database,还需使用SQL来操作。