暂无图片
暂无图片
2
暂无图片
暂无图片
暂无图片

【学习笔记】超融合时序数据库Uqbar---时序数据保留策略

原创 哇哈哈 2022-12-16
555

时序数据保留策略

Uqbar支持用户自定义时序数据保留策略 (Retention Policy),如过期时间、时间分片粒度。时序数据库保留策略归属于某个数据库,一个数据库下可以定义多个保留策略并指定其中一个为数据库的默认策略。如果创建时序表时未指定保留策略,则使用所属数据库的默认保留策略。


创建时序数据保留策略

Uqbar支持在数据库下创建时序数据保留策略,策略内容包括:

  1. 数据保存时长,超出保留时长的数据会自动删除;

  2. 时序数据按时间分片粒度,时序数据按照分片进行删除;

  3. 保留策略的chunkGroupDuartion需要对齐。

语法描述

CREATE TIMESERIES POLICY [ IF NOT EXISTS ] policy_name WITH (option = value, [...] )

Copy

其中option包含:

  • duration:时序数据保留时间,超出这个时间的历史数据自动删除,删除以Chunk Group粒度为单位。取值范围 >= 1h。特殊值0表示数据永久保留,此时时间单位支持second、minute、hour、day、week、month、year。

  • chunkGroupDuration:指定时序表的Chunk Group时间跨度,不支持设为特殊值0。

    如果未指定本参数,系统自动根据duration参数设置合适的Chunk Group Duration参数,规则如下

    • duration < 2天,chunkGroupDuration设置为1小时。chunkGroup 时间对齐到一小时,即chunkGroup的起止时间应该是整点,如 '2020-07-10 00:00:00'、'2020-07-10 01:00:00',而不会出现 '2020-07-10 00:10:00'、'2020-07-10 00:10:10' 这样的时间点。
    • duration <= 6个月,chunkGroupDuration设置为1天。chunkGroup对齐到天,如 '2020-07-10 00:00:00'、'2020-07-11 00:00:00';
    • duration > 6个月,chunkGroupDuration设置为7天。chunkGroup对齐到周,即chunkGroup的起始时间对齐到当周的周一。
    • duration > 3 年,chunkGroupDuration设置为 1个月。chunkGroup对齐到月,即chunkGroup的起始时间对齐到当月的一号。

duration和chunkGroupDuration数字部分的上限为231

数据库初始化时会创建默认策略,默认数据表的策略名为'infinity',其设置为chunkGroupDuration='1 month', duration='0s'。Interval为0时,查询展示结果显示为'00:00:00',表示永久保存。

约束

  • 策略名不能与已存在的策略名相同。

  • duration不能小于chunkGroupDuration。

  • duration必须指定,chunkGroupDuration如未指定则按照规则生成。

  • duration和chunkGroupDuration只能使用'数字+时间单位'的方式。如果用户输入的数字不是整数,会对其向上取整,例如1.2 week会取整为2 weeks。

  • duration和chunkGroupDuration不能是负数,duration和chunkGroupDuration支持设置的最小时间长度为1 hour(非0且小于1 hour的时间向上取整后为1 hour)。

  • duration和chunkGroupDuration支持设置的单位包括:小时(hour)、天(day)、周(week)、月(month)、年(year),不支持其他时间单位。

  • duration和chunkGroupDuration只支持到double类型能表示的精度。

  • 每种时间单位的取值范围限制如下:

    单位下限上限
    0296533
    03558399
    015250284
    0106751991
    小时02147483647

示例

Uqbar=# CREATE TIMESERIES POLICY policy_test WITH (duration = '2 years', chunkGroupDuration='7 days');
CREATE POLICY

Copy


修改时序数据保留策略

修改已创建的时序数据保留策略。

语法描述

ALTER TIMESERIES POLICY [IF EXISTS] policy_name actions

Copy

其中action包含:

  • RENAME TO policy_name

  • SET ( option = value, [...] )

其中option包含:

  • { duration, chunkGroupDuration }

约束

  • 默认策略可以改名,也可以改option;

  • 被时序表使用的策略也可以被修改;

  • duration和chunkGroupDuration需要满足创建时序保留策略时的约束。

示例

Uqbar=# ALTER TIMESERIES POLICY policy_test SET( chunkGroupDuration='1 month');
ALTER POLICY
Uqbar=# ALTER TIMESERIES POLICY policy_test RENAME TO policy_1;
ALTER POLICY

Copy


删除时序数据保留策略

删除已创建的保留策略,删除时如果时序策略正在被时序表使用,那么删除操作失败。

语法描述

DROP TIMESERIES POLICY [IF EXISTS] policy_name

Copy

可以用于删除一个或多个timeseries policy。

如果没有IF EXISTS选项,且被删除的策略列表中中有不存在的策略,则执行报错,给出对应的错误提示,不执行任何策略的删除。

如果含有IF EXISTS选项,且被删除的策略列表中有不存在的策略,则执行跳过不存在的策略,并给出对应的提示信息,存在的策略执行删除操作。

约束

  • 如果对应的保留策略被时序表使用,无法删除。

  • 不能删除默认策略。

示例

Uqbar=# DROP TIMESERIES POLICY policy1;
DROP POLICY

Copy


设置默认策略

系统为每个数据库提供一个默认策略,用户也可以重新设置某个策略为默认策略,创建时序表时如果未指定具体策略,则使用所属数据库的默认保留策略。

语法描述

ALTER TIMESERIES POLICY policy_name DEFAULT;

Copy

示例

Uqbar=# ALTER TIMESERIES POLICY policy1 DEFAULT;
ALTER TIMESERIES POLICY

Copy


查看所有策略

支持查看指定数据库下的所有保留策略。timeseries_views这个schema下提供了policies视图,供用户查看所有时序表策略。

视图属性参见timeseries_views.policies

语法描述

SELECT * FROM timeseries_views.policies;

Copy

示例

Uqbar=# SELECT * FROM timeseries_views.policies;
     policyname       |   ttl       |  duration  |  default
--------------------------------+----------------+----------------+--------------
 default_policy       |  infinity   |  7 days    |   t
 policy_test          |   2 years   |  7 days    |   f

(2 rows)
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论