PG数据库新增特性

本文介绍了PG数据库的扩展TimescaleDB的新特性,包括透明自动分区、面向时序数据的SQL接口、Planner扩展和定制化并行查询。重点讲解了time_bucket()函数用于降采样查询,以及first()、last()和histogram()等新聚合函数的应用。此外,还提到了drop_chunks()函数用于数据清理,以实现类似InfluxDB的Retention Policies功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

很久没有写有关时序数据的处理的代码了。今天想要将时序数据按指定的间隔降采样想了很久都没有想出来,在一通的查阅博客之后看见当前pg数据库已经更新了,添加了新特性可以直接运用。
pg数据库拓展TimescaleDB的特性:
1.时序数据表的透明自动分区特性
2.提供了若干面向时序数据应用场景的特殊SQL接口
3.针对时序数据的写入和查询对PostgreSQL的 Planner 进行扩展
4.面向时序数据表的定制化并行查询

TimescaleDB的对外接口就是SQL,它100%地继承了PG所支持的全部SQL特性。除此之外,面向时序数据库的使用场景,它也定制了一些接口供用户在应用中使用,而这些接口都是通过 SQL函数(标准名称为 User-defined Function)予以呈现的。以下列举了一些这类接口的例子:
time_bucket()函数
该函数用于 降采样 查询时使用,通过该函数指定一个时间间隔,从而将时序数据按指定的间隔降采样,并辅以所需的聚合函数从而实现降采样查询。
新增的聚合函数,TimescaleDB提供了下述新的聚合函数
first() 求被聚合的一组数据中的第一个值
last() 求被聚合的一组数据中的最后一个值
histogram() 求被聚合的一组数据中值分布的直方图
例:

SELECT
            time_bucket('1 minutes', data_time) "startDate",
            time_bucket('1 minutes', data_time) + interval '1 minutes' "endDate",
            first(data_value, data_time) "minValue", first(data_time, data_time) "minValueDate",
            last(data_value, data_time) "maxValue" ,last(data_time, data_time) "maxValueDate"
        FROM
            data_realtime
       where 1=1
              group by "startDate"
              ORDER BY "startDate"

drop_chunks()
删除指定时间点之前/之后的数据chunk. 比如删除三个月时间前的所有chunk等等。这个接口可以用来类比 InfluxDB 的 Retention Policies 特性,但是目前TimescaleDB尚未实现自动执行的chunk删除。若需要完整的 Retention Policies 特性,需要使用系统级的定时任务(如 crontab)加上drop_chunks()语句来实现。删除指定时间点之前/之后的数据chunk. 比如删除三个月时间前的所有chunk等等。这个接口可以用来类比 InfluxDB 的 Retention Policies 特性,但是目前TimescaleDB尚未实现自动执行的chunk删除。若需要完整的 Retention Policies 特性,需要使用系统级的定时任务(如 crontab)加上drop_chunks()语句来实现。
例:

SELECT drop_chunks(older_than => interval '3 months', newer_than => interval '4 months', table_name => 'conditions');
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值