--- title: "时序数据库" type: concept aliases: [Time Series Database, TSDB, 时序数据, 时间序列数据库] tags: [database, monitoring, time-series, storage] date: 2025-11-11 --- # 时序数据库 ## Overview 时序数据库(Time Series Database,TSDB)是一种专门为带时间戳的数据点序列设计的数据库类型,适用于监控指标、传感器数据、金融行情等场景。与传统关系型数据库相比,TSDB 针对高写入吞吐、时间范围查询、聚合分析做了专门优化,是现代可观测性系统的核心基础设施。 ## Core Properties - **时间戳主键**:每条记录以时间戳为核心标识 - **高写入吞吐**:支持每秒百万级数据点写入 - **时间范围查询**:高效的范围扫描和聚合 - **数据降采样**:自动压缩历史数据(high-resolution → low-resolution) - **保留策略**:按时间自动过期旧数据(Retention Policy) ## Key Operations | 操作 | 说明 | 示例 | |------|------|------| | 插入 | 写入带时间戳的数据点 | `metric{labels} value timestamp` | | 查询 | 时间范围检索 | `WHERE time > t1 AND time < t2` | | 聚合 | 按时间窗口聚合 | `rate(metric[5m])`、`avg_over_time(metric[1h])` | | 降采样 | 降低历史数据精度 | 1s → 1m → 1h → 1d | | 内插 | 估算缺失数据点 | 线性内插、Previous Forward Fill | ## Data Model ``` Metric Name: node_cpu_seconds_total Labels: {cpu="0", host="server1", mode="user"} Data Points: (timestamp=1700000000, value=1234.56), (timestamp=1700000015, value=1235.10), ... ``` ## Leading TSDB Solutions | 产品 | 特点 | 适用场景 | |------|------|----------| | [[Prometheus]] TSDB | 单实例设计,简约高效 | 单节点/小规模监控 | | [[VictoriaMetrics]] | PromQL 兼容,长期存储 | 中小型集群 | | InfluxDB | Telegraf 生态丰富 | IoT/传感器 | | TimescaleDB | PostgreSQL 扩展 | 需要 SQL 的场景 | | QuestDB | 高性能,SQL 接口 | 金融高频数据 | | Thanos | Prometheus 长期存储 | 多租户/大规模 | | Grafana Mimir | Grafana 官方后端 | 企业级监控 | ## Related Entities - [[Prometheus]] — 核心 TSDB 实现 - [[VictoriaMetrics]] — Prometheus 兼容替代方案 ## Related Concepts - [[Exporter]] — TSDB 的数据来源 - [[PromQL]] — TSDB 查询语言 - [[Prometheus告警规则]] — 基于 TSDB 数据的告警 - [[System Monitoring]] — 上游应用领域 - [[Centralized Logging]] — 互补的可观测性数据(日志/追踪)