568
技術社區[雲棲]
PostgreSQL數據保留窗口功能的使用
標簽
PostgreSQL , 保留窗口 , ttl , stream , continuous view , pipelinedb
背景
類似mongodb的rotate collate(設置表的上限容量、上限記錄數,持續寫入,自動覆蓋最老的記錄),PostgreSQL通過pipelinedb也能實現類似的功能。
此類功能非常適合日誌數據,無需維護成本,持續寫入,自動覆蓋最老的記錄。
pipelinedb計劃會在2017-07月份轉換為postgresql插件,屆時使用會更加便利。
如果不使用pipelinedb的cv ttl功能,直接使用postgresql的話,可以使用PostgreSQL 10的worker process,設置刪除任務,自動調度,刪除記錄,效果也是一樣的。
pipelinedb cv ttl例子
創建一個流(定義數據的格式)
CREATE STREAM s1 (id int, info text, crt_time timestamp default now());
創建cv ttl,例如根據crt_time字段,保留1分鍾。
CREATE CONTINUOUS VIEW cv1 WITH (ttl = '1 min', ttl_column = 'crt_time') AS
SELECT id,info,crt_time FROM s1;
激活cv
activate cv1;
測試
寫入數據
pipeline=# insert into s1 values (1,'test',now());
INSERT 0 1
查看數據
pipeline=# select * from cv1;
id | info | crt_time
----+------+----------------------------
1 | test | 2017-06-12 17:11:45.774904
(1 row)
1分鍾後查看數據,自動被刪除。
修改ttl,保留10秒
pipeline=# select set_ttl('cv1', '10 second', 'crt_time');
set_ttl
---------
(10,3)
(1 row)
重新測試,數據寫入10秒後,自動刪除。
參考
https://docs.pipelinedb.com/continuous-views.html
《PostgreSQL 10.0 preview 功能增強 - 後台運行(pg_background)》
最後更新:2017-06-13 02:32:06