TimescaleDB的对外接口

TimescaleDB的对外接口就是SQL,它100%地继承了PG所支持的全部SQL特性。除此之外,面向时序数据库的使用场景,它也定制了一些接口供用户在应用中使用,而这些接口都是通过 SQL函数(标准名称为 User-defined Function)予以呈现的。以下列举了一些这类接口的例子:

  • time_bucket()函数

    该函数用于 降采样 查询时使用,通过该函数指定一个时间间隔,从而将时序数据按指定的间隔降采样,并辅以所需的聚合函数从而实现降采样查询。一个示例语句如下:

    SELECT time_bucket('5 minutes', time)
      AS five_min, avg(cpu)
      FROM metrics
      GROUP BY five_min
      ORDER BY five_min DESC LIMIT 10;
    

    将数据点按5分钟为单位做降采样求均值

     

  • 新增的聚合函数

    为了提供对时序数据进行多样性地分析查询,TimescaleDB提供了下述新的聚合函数。

    • first() 求被聚合的一组数据中的第一个值
    • last() 求被聚合的一组数据中的最后一个值
    • histogram() 求被聚合的一组数据中值分布的直方图

    注: 新增的聚合函数在非时序场景也可以使用

     

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

    drop_chunks()的示例语句如下。含义是删除conditions表中所有距今三个月之前以及四个月之后的数据分区:

    SELECT drop_chunks(older_than => interval '3 months', newer_than => interval '4 months', table_name => 'conditions');
    

除此之外,TimescaleDB定制的一些接口基本都是方便数据库管理员对元数据进行管理的相关接口,在此就不赘述。包括以上接口在内的定义和示例可参见官方的API文档

posted @ 2022-01-28 10:16  John-Python  阅读(252)  评论(0编辑  收藏  举报