🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] > [docs.timescale.com](https://docs.timescale.com/) ## 概述 时序数据的特点 - 时间为中心​:数据记录通常都有一个时间戳。 - 只加:数据只能进行添加(插入)。 - 实:最新数据都是关于最近时间段的数据,我们几乎不会更新数据,并且不会回填旧时间段的缺失数据。 - 收集数据的频率和规律并不重要;可以每一毫秒或者每一小时收集一次顺序,也可以定期或者不定期地收集数据 - 可支持 百万每秒的输入 **使用场景** - 监控电脑系统:虚拟机、服务器、容器度量(CPU,内存,网络和磁盘IOPS),服务和应用指标(请求率,请求延迟)。 - 金融交易系统​:古老的证券,新的密码货币,支付,交易活动。 来自工业机器和设备、可穿戴设备、车辆、物理容器、托盘、智能家居消费设备等传感器的数据。 - 事件应用​:用户/客户互动数据点击流、页面、登录、注册等。 - 商业智能:跟踪关键指标和业务的整体健康。 - 环境监测:温度、湿度、压力、pH值、花粉计数、空气流量、一氧化碳(co)、二氧化氮(NO2)、颗粒物(PM10) ## timescaleDb 与其他时序库的区别 timescaleDb 与pgsql 表的结构一致,采用宽表的方式处理, 而其他数据库一般采用窄表 宽表:一个时间存储多个数据类型的信息 窄表: 将每个度量当做单独的实体分开展示,每一个“时间序列”都有各自的时间/值序列集 ## 安装 找到 官网对应的系统[下载 ](https://docs.timescale.com/self-hosted/latest/install/installation-windows/) ### window 1. 把 pgsql的bin 加入到 PATH 中 2. 下载zip包,并解压 3. 用管理员权限执行 `setup.exe`,根据提示完成 4. 重启 pgsql 服务 ## 示例 启动插件 ``` CREATE EXTENSION IF NOT EXISTS timescaledb; ``` 创建一个张时序表,以服务器的状态为例 ``` CREATE TABLE IF NOT EXISTS server_status ( time TIMESTAMP NOT NULL, cpu FLOAT NOT NULL, memory FLOAT NOT NULL, io FLOAT NOT NULL ); // 转为时序表 SELECT create_hypertable('server_status ', 'time'); // 创建数据 INSERT INTO server_status (time, cpu,memory,io) VALUES ('2023-05-18 10:00:00', 12.34,12.12,23.12), ('2023-05-18 10:00:01', 14.34,14.12,25.12), ('2023-05-18 10:00:03', 19.34,17.12,28.12) ``` 查询 ``` // 区间查询 SELECT * FROM server_status WHERE time BETWEEN '2023-05-18 10:00:00' AND '2023-05-18 11:00:00'; // 小于时间 select * from server_status where time < '2023-05-19' select * from server_status where time < '2023-05-18 10:00:02' select * from server_status where time > now() - INTERVAL '2 days' -- 最近两天的时间 ``` ### 时序函数 聚合函数 - avg() - 求平均值 - first() - 根据聚合组中的时间找出最早的值 - last() - 根据任意时间间隔计算桶数据,并在这些时间间隔上计算总量 - shili:求平均5分钟值 ``` SELECT time_bucket('5 minutes', time) AS five_min, avg(cpu) FROM metrics GROUP BY five_min ORDER BY five_min DESC LIMIT 10; ```