PG數據庫新增特性

很久沒有寫有關時序數據的處理的代碼了。今天想要將時序數據按指定的間隔降採樣想了很久都沒有想出來,在一通的查閱博客之後看見當前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');
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章