GeminiDB Influx在同一数据保留策略(Retention Policy,简称RP,包含数据保留时长,备份个数等信息)里实现了冷热数据分离,系统会根据RP中用户设置的冷热数据分界线自动将符合转冷条件的热数据归档到冷存储中。
背景
在海量大数据场景下,时序数据冷热分明,即随着时间推移历史的时序数据被查询和分析的概率越低,同时因为这些数据占用量比较大,降低这部分冷数据的存储容量将会极大的节省企业的成本。GeminiDB Influx提供了冷热分离功能,使用低成本的介质存储冷数据,并通过极简配置就能极大的降低存储成本。
GeminiDB Influx对数据的冷热分离是基于RP的,用户首先需要在RP中设置冷热数据分界线,系统会自动根据此冷热设置将相应的冷数据归档到冷存储中。冷数据访问和普通访问没有任何差异,对用户而言是完全透明的,在查询的过程中,系统会根据查询条件中的时间范围(TimeRange)自动地从热数据区或冷数据区查询数据。
原理简介
用户在RP中配置热数据的保存时长。数据在写入时先保存在热存储上,GeminiDB Influx根据数据中的时间戳判断数据的冷热,如果数据的时间戳在热数据保存时长之内,则是热数据,如果是保存时长之前的数据,则是冷数据,系统自动归档到冷存储上。
图1 原理图
基本使用
- 设置冷热时间分界线
GeminiDB Influx冷热数据时间分界线设置就是设置RP中的WARM DURATION,在WARM DURATION之前的数据属于冷数据。
设置WARM DURATION的具体操作方法如下:
//在db名为mydb上创建名为myrp的RP,显示指定WARM DURATION为6d,表示6天前的数据是冷数据。
create retention policy myrp on mydb duration 30d replication 1 warm duration 6d shard duration 3d
//在db名为mydb上创建名为myrp的RP,没有指定WARM DURATION,表示没有冷数据。
create retention policy myrp on mydb duration 30d replication 1 shard duration 3d
//创建名为mydb的db,并带有名为myrp的RP,显示指定WARM DURATION为3d,表示3天前的数据是冷数据。
create database mydb with duration 6d warm duration 3d name myrp
//修改WARM DURATION为7d,表示7天前的数据是冷数据。
alter retention policy myrp on mydb warm duration 7d
- 数据写入
冷热数据的写入方式完全一致,数据在写入时会先保存在热存储中。随着时间推移,如果热存储中的数据时间戳超过了设置的WARM DURATION,系统会自动将这部分数据归档到冷存储中。此过程完全对用户透明。
- 数据查询
冷热数据的查询方式完全一致。数据在查询时,系统会根据查询语句中的TimeRange条件自动查询热存储或冷存储。此过程完全对用户透明。查询冷存储数据的响应会比查询热存储数据的响应有所延迟。
- 查看冷热数据状态
> show shards
name: _internal
id database retention_policy shard_group start_time end_time expiry_time owners tier
-- -------- ---------------- ----------- ---------- -------- ----------- ------ ----
1 _internal monitor 1 2021-06-29T00:00:00Z 2021-06-30T00:00:00Z 2021-07-07T00:00:00Z 4 warm
2 _internal monitor 1 2021-06-29T00:00:00Z 2021-06-30T00:00:00Z 2021-07-07T00:00:00Z 5 warm
3 _internal monitor 1 2021-06-29T00:00:00Z 2021-06-30T00:00:00Z 2021-07-07T00:00:00Z 7 warm
4 _internal monitor 1 2021-06-29T00:00:00Z 2021-06-30T00:00:00Z 2021-07-07T00:00:00Z 6 warm
name: hsdb
id database retention_policy shard_group start_time end_time expiry_time owners tier
-- -------- ---------------- ----------- ---------- -------- ----------- ------ ----
5 hsdb myrp 2 2019-08-12T00:00:00Z 2019-08-19T00:00:00Z 2019-08-19T00:00:00Z 4 cold
6 hsdb myrp 2 2019-08-12T00:00:00Z 2019-08-19T00:00:00Z 2019-08-19T00:00:00Z 5 moving
7 hsdb myrp 2 2019-08-12T00:00:00Z 2019-08-19T00:00:00Z 2019-08-19T00:00:00Z 6 warm
8 hsdb myrp 2 2019-08-12T00:00:00Z 2019-08-19T00:00:00Z 2019-08-19T00:00:00Z 7 cold
如果tier是cold,表示当前shard是冷数据。
如果tier是warm,表示当前shard是热数据。
如果tier是moving,表示当前shard正在热数据变成冷数据的过程中。
热数据变成冷数据的过程只涉及shard中的TSM文件从热存储转移到冷存储,shard的其他文件不涉及移动,仍然保存在热存储中。