一、为什么需要时序数据库?
传统关系型数据库(MySQL、PostgreSQL)擅长处理“事务型”数据:账户余额、订单状态、库存数量……这些数据的特点是“当前值最重要”,历史记录往往只用于审计。
而另一类数据——时序数据(Time-Series Data)——则完全不同:
- 数据量巨大:一条一条地追加,永不更新。
- 查询模式固定:95% 的查询都围绕“最近 N 分钟/小时/天”展开。
- 价值随时间衰减:越旧的数据,查询频率越低,精度要求越低。
如果继续用 MySQL 存每秒 10 万条传感器数据,很快就会遇到:
- 写入吞吐不足;
- 磁盘空间爆炸;
- 聚合查询(AVG、MAX、P99)慢到怀疑人生。
于是,时序数据库(Time-Series Database,TSDB)应运而生。
二、时序数据库的 6 大典型应用场景
1. 物联网(IoT)与工业 4.0
关键词:传感器、PLC、SCADA、数字孪生
- 数据特征:温度、湿度、压力、电流、振动……每秒成千上万条。
- 查询需求:
- 实时仪表盘:最近 5 分钟产线温度曲线;
- 异常检测:过去 1 小时振动值 > 阈值;
- 预测性维护:过去 30 天轴承温度趋势。
- 代表案例:
- 西门子 MindSphere → InfluxDB;
- 特斯拉工厂 → 自研 TSDB;
- 国内某汽车厂 2000 台机床 → TDengine。
代码示例:用 InfluxDB 记录机床主轴温度
-- 建库
CREATE DATABASE factory;
-- 写数据
INSERT spindle_temp,machine=lathe-001 value=65.3 1728720000000000000;
-- 查最近 10 分钟平均温度
SELECT MEAN(value) FROM spindle_temp
WHERE machine='lathe-001'
AND time >= now() - 10m;
2. 运维监控 & APM
关键词:Prometheus、Grafana、SLI/SLO
- 数据特征:CPU、内存、磁盘、网络、延迟、错误率。
- 查询需求:
- 实时告警:CPU > 80% 持续 5 分钟;
- 容量规划:过去 90 天磁盘增长趋势;
- 故障复盘:事故发生时所有指标对齐。
- 代表案例:
- Kubernetes → Prometheus + Thanos;
- 阿里云 ARMS → 自研 TSDB;
- 美团 CAT → 基于 OpenTSDB。
代码示例:PromQL 查询 5 分钟平均 CPU 使用率
100 - (avg by (instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)
3. 金融行情 & 量化交易
关键词:Tick、K 线、撮合、回测
- 数据特征:
- 高频:股票逐笔(Tick)每秒百万级;
- 多维度:价格、成交量、订单簿深度。
- 查询需求:
- 实时行情:最新价、涨跌幅;
- 历史回测:过去 5 年 1 分钟 K 线;
- 合规审计:某笔订单当时的完整订单簿。
- 代表案例:
- 摩根大通 → kdb+/q;
- 国内头部券商 → DolphinDB;
- 加密货币交易所 → TimescaleDB。
代码示例:用 kdb+/q 计算 1 分钟 VWAP
vwap: { (sum size * price) % sum size } by 1 xbar time.minute from trade
4. 车联网 & 自动驾驶
关键词:CAN 总线、GNSS、激光雷达、影子模式
- 数据特征:
- 高并发:10 万辆车 × 1000 信号/秒;
- 多模态:位置、速度、电池、摄像头帧 ID。
- 查询需求:
- 实时车队监控:过去 30 秒所有车辆位置;
- 安全事件:急刹车时前后 10 秒所有信号;
- 模型训练:提取 100 万段变道样本。
- 代表案例:
- 特斯拉 → 自研 TSDB;
- 蔚来、小鹏 → Apache IoTDB;
- 滴滴 → Apache Hudi + 自研索引。
5. 能源 & 公用事业
关键词:智能电网、光伏逆变器、充电桩、碳排
- 数据特征:
- 广域:百万级电表、逆变器、充电桩;
- 周期性:15 分钟/1 小时抄表。
- 查询需求:
- 实时负荷:当前总用电量;
- 线损分析:过去 24 小时每条线路损耗;
- 碳排计算:过去 1 年每度电的 CO₂ 排放。
- 代表案例:
- 国家电网 → 自研 TSDB;
- 特斯拉 Powerwall → InfluxDB;
- 欧洲某虚拟电厂 → TimescaleDB。
6. 电商 & 广告实时报表
关键词:埋点、转化、AB 实验、实时大屏
- 数据特征:
- 高吞吐:双 11 每秒千万级埋点;
- 维度爆炸:用户、商品、渠道、实验组。
- 查询需求:
- 实时 GMV:过去 1 分钟成交额;
- 实验对比:实验组 vs 对照组转化率;
- 漏斗分析:浏览 → 加购 → 支付。
- 代表案例:
- 阿里双 11 → 自研 TSDB(基于 HBase);
- 字节跳动 → Apache Druid;
- 亚马逊广告 → Amazon Timestream。
三、如何选型?一张图总结
| 场景 | 典型产品 | 核心诉求 | 备注 |
|---|---|---|---|
| IoT/工业 | InfluxDB, TDengine | 高压缩、边缘部署 | 支持 MQTT/OPC-UA |
| 运维监控 | Prometheus, VictoriaMetrics | 多维标签、PromQL | 与 K8s 生态深度集成 |
| 金融行情 | kdb+, DolphinDB | 超高频、列式内存 | 支持 q/SQL 混合 |
| 车联网 | IoTDB, TimescaleDB | 地理索引、PB 级 | 支持 GIS 函数 |
| 能源 | TimescaleDB, InfluxDB | 降采样、插值 | 支持阶梯电价计算 |
| 电商报表 | Druid, ClickHouse | 预聚合、倒排索引 | 支持实时 Roll-up |
四、小结
一句话总结:
只要你的数据是“时间戳 + 数值 + 标签”且写多读少、聚合为主,就值得用时序数据库。
从工业传感器到股票 Tick,从汽车 CAN 总线到广告埋点,时序数据库已经成为现代数据栈的“水电煤”。选对 TSDB,你的系统就能在“海量写入”与“实时洞察”之间优雅起舞。
Comments NOTHING