本文介绍Lindorm时序引擎中的Database概念以及相关的功能。
Database的概念
每个运行中的Lindorm时序引擎实例都管理着一个或多个数据库(Database),且各数据库之间的数据相互隔离。同时,每个数据库还包含若干个时序表。结合名词解释,可以将时序引擎的数据层级归纳为下图:
当Lindorm时序引擎实例需存储不相关且彼此隔离的项目数据时,建议将不同项目的数据分别存入独立的数据库,并同步配置对应的访问控制策略。如果想要跨数据库访问,您需要具备目标数据库的操作权限。
管理Database
时序引擎支持用户通过SQL对Database进行以下管理操作:
操作 | 说明 | SQL语法参考 |
新建 | 在时序引擎中创建一个新的Database。 说明 新建的Database需要单独为指定的用户赋权,用户并不会默认具有访问权限。 | |
删除 | 删除已有的Database。 | |
修改属性 | 修改已有Database的属性,包括冷热分界线、TTL等。 | |
查询属性 | 查看已有Database的结构。 |
管理Database生命周期
Database是时序表的集合,您可以根据业务需求将拥有相同业务背景的时序表保存在一起,从而实现数据隔离。另一方面,Lindorm时序引擎的一系列功能也都是以Database为粒度的。包括以下功能:
通过SQL设置冷热分离策略
时序引擎支持以Database为单位设置冷热分界线,系统将根据规则归档冷数据。
通过SQL设置数据保留策略(TTL)
时序引擎支持以Database为单位设置数据的存活时间(Time To Live,简称TTL)。当TTL被设置后,时序数据的时间戳距当前的时间差超过了TTL的时间,则这些数据将被视作过期数据,会被时序引擎清除掉。
支持通过SQL语句CREATE DATABASE在创建Database时设置TTL,也支持通过控制台设置TTL。
通过控制台管理Database生命周期
Lindorm也支持通过控制台的数据库管理界面上设置Database的冷热分界线以及数据保留策略。操作界面如下图所示:
时序数据的时间戳一般分成两种概念:
事件时间:时序数据对应的事件真实发生时的时间。时序数据元素说明中提及的时序数据模型的时间戳即是事件时间。
入库时间:时序数据写入数据库的时间。
冷热分离和数据保留策略的设置都是基于事件时间,不支持基于入库时间设置。
同时配置了冷热分界线和TTL时,若已归档的冷数据时间戳超过TTL设定的存活时间,系统也会自动触发清理机制来清理这部分数据。
如果数据的时间戳超过了TTL范围,那这部分数据仍可以成功写入,但无法被查询到。
常见问题
更多常见问题请参见时序引擎常见问题。
数据写入成功但无法查询到是什么原因?
请检查是否设置了数据有效期TTL。如果写入数据的时间超过TTL,则该数据写入后会被清理,导致查询结果为空。
冷数据归档和TTL清理数据为什么会滞后?
时序引擎中的冷数据归档和TTL清理数据是通过Compaction任务异步执行的,因此操作可能不会立即生效。同时,如果Compaction队列存在较多任务,则清理任务可能需要排队等待执行。