当前位置: 首页 > news >正文

时序数据库全景指南:从场景选型到内核拆解

1. 什么是时序数据

时序数据(Time-Series Data) 是在时间上连续产生、且带有时间戳的观测值序列,典型特征:

维度描述
高并发写百万点/秒,追加为主
写多读少90 % 查询是降采样或聚合
时效性越新越热,旧数据价值递减
多维标签每条点带大量 tag(设备、区域、指标名)

示例:
cpu.usage{host=web01,region=bj} 2025-08-27 14:00:00 42.3


2. 时序数据库 vs 通用数据库

对比项时序数据库MySQL/PostgreSQL
存储模型列式 + 时间分区B+Tree 行存
写入方式LSM 追加随机写 + WAL
索引倒排 + 时间线B+Tree 复合索引
聚合算子预计算、降采样实时 GROUP BY
压缩比5–15×1–2×
单节点吞吐200–500 万点/秒1–5 万点/秒

3. 适用场景与真实案例

行业场景规模示例
物联网工业传感器、车联网某车企 2000 万车机 × 100 指标/秒
金融股票 Tick、风控日志某券商 2 亿条/日
DevOpsK8s 监控、APM某电商 50 万 Pod 指标/10 s
能源光伏逆变器、电网 PMU国家电网 60 TB/年
智慧城市环境监测、灯杆数据深圳 30 万设备/5 s

4. 产品地图

4.1 开源

名称语言特点
InfluxDBGoTSM 引擎,Flux 查询,集群版闭源
TimescaleDBC/PostgreSQL扩展形式,SQL 完全兼容
VictoriaMetricsGo单二进制、PromQL、S3 冷存
OpenTSDBJava基于 HBase,PB 级
IoTDBJava面向工业场景,树形元数据
TDengineC超级表,边云同步

4.2 商业 & 云托管

  • AWS TimestreamAzure Data ExplorerGoogle Cloud Bigtable + MDS
  • InfluxDB CloudTimescale CloudKdb+(高频交易)

5. 核心功能清单

功能说明示例
高吞吐写入HTTP/Line ProtocolInfluxDB curl -XPOST /write
多维标签任意键值对索引cpu,host=web01,region=bj
降采样自动 RollupCREATE CONTINUOUS QUERY
数据保留策略TTL + 分层7 d 原始 / 1 y 5 min 均值
SQL & PromQL多语言查询SELECT mean(value) FROM cpu GROUP BY time(1m)
插值 & 外推线性、前值填充FILL(previous)
订阅 & 告警Webhook、Kafkakapacitor / vmalert
数据压缩Gorilla、Delta-of-Delta1.2 byte/point
水平扩展Sharding、ReplicationVictoriaMetrics VMCluster

6. 技术原理六层拆解

6.1 数据模型

┌---------┬-----------┬----------┐
│ timestamp  │  value(float/int) │  tags(map[string]string) │
└---------┴-----------┴----------┘
  • Series Key = measurement + tag set(字典序)
  • Point = Series Key + timestamp + value

6.2 写入路径

Client → Line Protocol → HTTP → WAL → MemTable → Immutable → SSTable(TSM/Chunk)
  • WAL 顺序写,刷盘前宕机可重放
  • MemTable 按 Series+Time 排序,刷盘后生成只读块

6.3 存储格式(以 InfluxDB TSM 为例)

┌-------┬--------┬--------┐
│ Header │ Index Block │ Data Block │
└-------┴--------┴--------┘
  • Index Block:Series → Offset 映射,二分查找
  • Data Block:列式存储,timestamp & value 分开压缩
    • 时间戳:Delta-Delta + RLE
    • float:XOR (Gorilla)
    • string:Snappy

6.4 倒排索引

  • Tag → SeriesID List(类似 ES)
  • 支持 AND / OR / NOT 组合
  • 内存结构:Roaring Bitmap 压缩
  • 持久化:TSI 文件,重启 mmap 恢复

6.5 查询执行

1. Parse → Logical Plan
2. 根据 time range 过滤 Chunk
3. 根据 tag 过滤 Series
4. 并行扫描 → 预聚合
5. Merge → 排序 → 返回
  • 预聚合(Continuous Aggregate)
    CREATE MATERIALIZED VIEW ... WITH (timescaledb.continuous)
    每 1 min 自动更新 1 min 均值,查询直接命中物化表。

6.6 压缩与降采样

  • Gorilla:1.37 byte/point(官方论文)
  • ZSTD:适合字符串 tag
  • 降级策略
    原始 1 s → 5 min 均值 → 1 h 均值 → 1 d 均值 → 归档 S3 → Glacier

7. 性能调优与最佳实践

维度建议
模式设计控制 tag 值基数 < 100 k,避免高基数 tag
数据保留使用 RP + 分区表,历史数据 detach 到对象存储
写入批量 5k–10k 点 / req,开启 gzip 压缩
查询使用预聚合、避免 SELECT * 原始数据
资源内存 ≥ 倒排索引大小,SSD 存放热数据
监控Prometheus + Grafana:
  • influxdb_disk_bytes
  • vms_memory_usage
  • query_duration_seconds |

案例:某直播公司

  • 800 万 Series、200 万点/秒
  • 单机 InfluxDB → 改为 VictoriaMetrics Cluster(3 存储 + 2 插入 + 2 查询)
  • QPS ↑ 5×,磁盘 ↓ 60 %,P99 查询延迟从 2 s → 120 ms。

8. 未来趋势与总结

  1. Serverless + 对象存储:冷热分层到极致(Snowflake 模式)
  2. AI4DB:自适应压缩、索引推荐
  3. 流批一体:Flink + 时序库 → 实时降采样、异常检测
  4. 边缘协同:TDengine / IoTDB 边云同步,断网缓存
  5. 统一协议:OpenTelemetry、Arrow Flight SQL 成为事实标准

一句话总结

时序数据库用“顺序写、列式存、倒排索引、压缩算法、预聚合”五板斧,把“时间”这一维度变成了最大的性能红利;在 IoT、监控、金融等高并发场景,它是让“数据产生价值”的加速器,而不是简单的“又一个数据库”。

http://www.dtcms.com/a/353492.html

相关文章:

  • Linux(十九)——CPU、I/O、网络与内核参数调优指南
  • 字库原理 GB2312-80
  • rk3588开发板最新kernel6.1下载(RK3588SDK源码下载)和环境搭建
  • 基于结构化码本的分层DNN框架用于高效语音增强
  • 第18章|变量:把数据装进“盒子”的正确方式
  • 【STM32】将 FreeRTOS移植到STM32F103RCT6 详细流程
  • 【开发配置】GitLab CR(Code Review)规则配置清单
  • 论文翻译:BRILLM: BRAIN-INSPIRED LARGE LANGUAGE MODEL
  • 在Excel和WPS表格中通过查找替换对单元格批量强制换行
  • 【C++】map 容器的使用
  • 论文阅读:Gorilla: Large Language Model Connected with Massive APIs
  • Python基础:PyMySQL
  • 音视频开发学习路线梳理(附 GitHub 仓库)
  • 达梦数据库-控制文件 (二)
  • FPGA开发流程
  • 一键搭建开发环境:制作bash shell脚本
  • Apple Silicon Mac 上解决 Docker 平台不匹配和 QEMU 段错误问题
  • 腾讯云服务器重启卡住:原因分析与底层原理详解
  • AI-调查研究-62-机器人 机械臂五大应用场景详解:从焊接到手术,从农田到太空
  • Knife4j 文档展示异常的小坑
  • GBDT(Gradient Boosting Decision Tree,梯度提升决策树)总结梳理
  • 如何设置 Lustre 文件系统并在其上运行 PostgreSQL
  • 设计模式9-责任链模式
  • UDC否定响应码学习
  • 未成功:使用 Nginx 搭建代理服务器(正向代理 HTTPS 网站)
  • 《StarRocks、Doris、ClickHouse 深度对比:三大 OLAP 引擎的优劣与应用场景》
  • go的实现arp客户端
  • 《方法论》--笛卡尔
  • 【学习笔记】非异步安全函数(禁止在信号处理中调用)
  • 雷卯针对香橙派Orange Pi 4开发板防雷防静电方案