时序数据库三国杀:QuestDB / InfluxDB 3 / TimescaleDB 深度横评

时序数据库三国杀:QuestDB 10.0 / InfluxDB 3 / TimescaleDB 2.30 深度横评,选型选错加班三年

面试官问你 TSDB 怎么选型,把这篇甩给他。

三款时序数据库扒皮对比:250+ 行对比表格、官方基准数据逐条标注立场、8 大场景决策树,看完直接拍板。

开篇先泼三盆冷水

如果你正在为时序数据库选型,下面三句话可能比任何教程都值钱:

第一,没有最好的时序数据库,只有最适合你团队的时序数据库。金融 tick 场景跑到飞起的引擎,拿到运维监控场景可能水土不服;监控圈封神的老牌,塞进量化团队可能被延迟按在地上摩擦。

第二,厂商基准测试谁发的谁赢,这是行业公开的秘密。QuestDB 官方口径说自己写入比 InfluxDB 3 快十几倍到三十几倍,InfluxData 官方口径说自己单节点写入是别人的几十倍------两个数字都是真的,因为测试的人、调的参数、跑的负载全都不一样。本文引用每一个数字都会标注是谁测的、什么口径、什么局限。

第三,2026 年这三款产品都已经不是你记忆里的样子了。QuestDB 到了 10.0,搞出了二进制列式协议 QWP 和 Live Views;InfluxDB 抛弃 Go 用 Rust 整个重写成了 3.x,架构变成存算分离的云原生形态;TimescaleDB 公司改名叫 TigerData,Hypercore 行列双模已经成熟到 2.30。拿着三年前的老印象选型,等于拿清朝地图导航。

这篇不做入门科普------三款产品各自的入门教程满天飞,不重复造轮子。本文只干一件事:用对比矩阵、基准数据和场景决策,帮你把选型这事儿一次拍清楚

版本口径先钉死,后文所有对比都基于这三个版本,别拿 1.x、2.x 的老黄历说事:

产品 本文基准版本 发布时间 开发语言 核心协议/接口
QuestDB 10.0.1(10.0.0 于 8 月 6 日 GA,10.0.1 于 8 月 24 日维护发布) 2026-08 零 GC Java + C++/Rust 热路径 QWP(10.0 新)、PGWire、ILP、REST
InfluxDB 3.8(Core 与 Enterprise 同步) 2026 年上半年 Rust(FDAP 栈) Flight、HTTP、ILP
TimescaleDB 2.30.0 2026-09 C(PostgreSQL 扩展) PostgreSQL 协议全家桶

第一章 三大 TSDB 基因溯源:伦敦交易桌、旧金山监控栈、纽约 Postgres 教派

选型先看基因。数据库这东西和人一样,童年经历决定一生性格------为金融 tick 生的引擎和为运维监控生的引擎,骨头里就是两种动物。

1.1 三家出身档案

维度 QuestDB InfluxDB TimescaleDB
创始公司 QuestDB(伦敦) InfluxData(旧金山,现主打 InfluxDB 3 产品线) TigerData(纽约,原 Timescale Inc.,已更名)
项目起源 2014 年前后,创始人 Vlad Ilyushchenko 在投行做交易系统,受 kdb+ 启发但嫌它贵且闭源 2013 年,Paul Dix 等做监控指标存储,源自 LevelDB/RocksDB 上的自研尝试 2017 年前后,Ajay Kulkarni、Michael Freedman 认为时序不需要新数据库,Postgres 扩展就够了
起家场景 金融市场数据:tick、逐笔成交、订单簿、OHLC 基础设施与应用监控:DevOps 指标、服务器 CPU/内存、容器遥测 通用关系型负载里的时序部分:监控 + 业务事件 + IoT 混合
设计信仰 单机极致性能,用 SIMD 和向量化把硬件榨干,简单到一个二进制就能跑 时序专用模型(measurement/tag/field),TIG 栈生态包围,云原生存算分离 不发明新轮子,站在 PostgreSQL 肩膀上,SQL 全家桶一个不少
早期技术栈 零 GC Java + C++,自研列存引擎 Go,自研 TSM 存储 + TSI 索引(v1/v2) C,PostgreSQL 扩展形式,hypertable 抽象
当前技术栈 零 GC Java 核心 + C++/Rust 热路径 Rust 全量重写(v3,IOx 项目演化),FDAP:Flight + DataFusion + Arrow + Parquet 仍是 PostgreSQL 扩展,Hypercore 行列双模
标杆客户叙事 空客(每日数十亿点机队监控)、BTG Pactual(拉美投行毫秒级行情 API)、OKX(加密交易) 全球大量监控/SRE 团队,Telegraf 400+ 采集插件生态 Tiger Cloud 上千家客户,Postgres 用户平滑承接时序负载
一句话性格 性能狂人、工程师文化、闷头冲数字 生态老炮、监控正统、云化最激进 保守稳健、关系型原教旨、团队学习成本最低

1.2 设计哲学的根本分歧

三家的分歧本质上是三个问题的三种答案:时序数据库到底该不该是独立物种?该不该有自己的查询语言?该不该绑定云?

哲学命题 QuestDB 的回答 InfluxDB 的回答 TimescaleDB 的回答
时序库是不是独立物种? 是,但接口要向标准 SQL 靠拢 是,值得有专用数据模型和专用协议 不是,Postgres 就能干,扩展一下足够
要不要专用查询语言? 不要,SQL 加时序扩展(ASOF、SAMPLE BY) 早期要(InfluxQL、Flux),3 代回归 SQL 但保留 InfluxQL 不要,标准 SQL 加 time_bucket 等函数
数据模型 关系表 + designated timestamp + SYMBOL measurement/tag/field/time 的监控模型 标准关系表 + hypertable
分布式优先还是单机优先? 单机做到极致,集群交给 Enterprise 3 代原生按存算分离云架构设计 单机 + PostgreSQL 流复制生态,多节点已放弃
开放格式立场 Parquet/Iceberg/Arrow 全面拥抱,反锁定 Parquet/Arrow 原生,FDAP 本身就是开放栈 依托 Postgres 生态,列存也开放
对新手的态度 一个二进制、9000 端口控制台,60 秒上手 一条命令装好,Core 定位近期数据引擎 会 Postgres 就会 Timescale,零学习

1.3 三条进化路线时间轴

时间节点 QuestDB InfluxDB TimescaleDB
2013-2015 内部原型期,对标 kdb+ 2013 年项目启动,v0.x 基于 LevelDB ------
2016-2018 2019 年开源并切换 Apache 2.0 v1.0 发布,TICK 栈(Telegraf/Influx/Chronograf/Kapacitor)成监控标配 2017-2018 发布,hypertable 抽象成型
2019-2021 ILP 协议、SQL 控制台、列存成熟 v2.0 转向 Flux 语言与bucket 模型,争议较大 压缩、连续聚合、多节点(2.0)陆续上线
2022-2024 WAL、乱序 O3 写入、ASOF/WINDOW JOIN IOx(Rust 重写)项目推进,v3 架构公开 2.13 宣布多节点弃用、2.14 移除;转向单机+云
2025 9.x 系列:LATERAL JOIN、UNNEST、统计窗口、WAL 提交批量化 InfluxDB 3 Core/Enterprise 发布,Rust + FDAP GA Hypercore 行列双模(2.18+)、列存向量化、bloom filter
2026 10.0(8 月):QWP 二进制协议、Live Views、原生数组、DECIMAL、TIMESTAMP_NS;Enterprise 4.0 3.8:systemd 服务管理、TOML 配置、Helm chart beta、Ask AI 自定义指令 2.30(9 月):DeferredChunkAppend 让 last-point 从线性变常数、压缩并发 DML、自定义 toaster

避坑指南:选型时第一件事不是看性能榜单,而是问自己"团队基因是什么"。团队全是写 Postgres 的后端,硬上 InfluxDB 的 tag/field 模型会全员阵痛;团队全是 SRE 监控出身,TimescaleDB 的关系范式反而觉得啰嗦。基因不合,再好的数字也救不回来。

加分点:聊选型时能说出"QuestDB 出身交易桌、Influx 出身机房、Timescale 出身 Postgres",并点出"出身决定了它们各自优化的第一指标是延迟、生态吞吐和关系完整性",立刻显得做过功课。

面试考点:高频题------"时序数据库和普通关系库的本质差异在哪?"标准答案要点:写入特征(append-only、时间有序、高吞吐)、查询特征(范围扫描+聚合+最新值)、数据生命周期(冷热分明、可降采样/过期)、schema 特征(维度多、基数敏感)。三家分别用列存+分区、TSM/Parquet+tag 索引、hypertable+chunk 来回应这四个特征。

第二章 架构三路线:单机极致派 vs 存算分离云原生派 vs Postgres 扩展派

如果把三家的架构画在一张图上,你会看到三种完全不同的世界观。这一章是全文最硬核的部分,因为架构决定了一切上层建筑的天花板。

2.1 架构总览对比大表

架构维度 QuestDB InfluxDB 3 TimescaleDB
基本形态 存算耦合的单机引擎,Enterprise 提供副本/高可用 存算分离的云原生架构,组件全无状态 PostgreSQL 扩展,单实例为主
写入路径 ILP/QWP/PGWire → WAL 预写日志 → 原生列分区(append-only) Router/Ingester 接收 → 内存缓冲 → Parquet 文件落对象存储 PG 协议写入 → 行存 chunk(热)→ 后台压缩转列存(冷)
查询路径 SQL 引擎直接扫内存映射列文件,SIMD 并行 Querier 无状态节点,查 Catalog 定位文件,DataFusion/Arrow 执行 Postgres 执行器 + 时序优化,chunk 裁剪 + 列存向量化
后台整理 WAL apply、分区提交、乱序 O3 归并 Compactor 持续合并小文件为大 Parquet 压缩策略、chunk 合并、连续聚合刷新
元数据管理 表/分区元数据本地管理 独立 Catalog(元数据服务) PostgreSQL 系统目录 + hypertable 元表
持久化介质 本地磁盘为主,Enterprise 自动分层 Parquet 到对象存储 原生对象存储(S3/GCS/Azure Blob),磁盘可选 本地/块存储,云版支持对象存储分层
状态归属 节点有状态(数据在本地) 计算节点全无状态,状态全在对象存储+Catalog 节点有状态(PG 数据目录)
弹性扩缩 单机纵向扩展;Enterprise 读副本横向 计算层秒级扩缩,存储无限 纵向为主,读副本走 PG 流复制
部署最小单元 单二进制/单容器 Core 单进程(内嵌组件),Enterprise 可拆分布式角色 一个装了扩展的 Postgres 实例
架构关键词 WAL、列分区、内存映射、向量化 Router、Ingester、Querier、Compactor、Catalog、Parquet hypertable、chunk、Hypercore、行存列存双模

2.2 写入链路拆解对比

环节 QuestDB InfluxDB 3 TimescaleDB
接收协议 QWP(10.0 新,二进制列式 over WebSocket)、ILP 文本、PGWire、REST ILP 行协议、HTTP、Flight、gRPC PostgreSQL 协议(COPY/INSERT)
协议效率 QWP 列式二进制+压缩,官方称单行比 ILP 小 3-4 倍、单连接可达千万级行/秒 ILP 文本协议生态成熟,3 代服务端用 Rust 重写解析 COPY 批量加载是 PG 生态最快路径,单行走 INSERT 慢
写入先落哪 WAL(并行预写日志,默认持久化) Ingester 内存缓冲,快速可查 WAL(PG 自带)+ 行存 chunk
持久化时机 WAL 刷盘即 durable,随后异步 apply 为列存 内存中即可查,后台 flush 为 Parquet 事务提交即 durable,压缩异步
乱序处理 O3(out-of-order)引擎,乱序数据归并进已有分区 WAL 缓冲 + Compactor 合并,容忍乱序窗口 chunk 关闭前可自由写,关闭后压缩;过旧 chunk 写入代价高
批量/背压 客户端批量缓冲,QWP 客户端支持本地磁盘 store-and-forward 批量写入推荐,组件间反压靠对象存储解耦 COPY 批量、pgloader 批量;单条插入性能一般
去重/幂等 内置去重与 exactly-once 语义支持 按 series+时间戳覆盖语义 依赖 PG 约束/唯一索引,需自己设计

2.3 存储引擎与文件格式

存储维度 QuestDB InfluxDB 3 TimescaleDB
热数据格式 原生列式分区(内存映射文件) Ingester 内存 Arrow 记录批次 行存 chunk(Postgres 堆表)
冷数据格式 Apache Parquet(Enterprise 自动分层,开源可手动 ALTER 转换) Apache Parquet(原生落地格式,Compactor 持续合并) Hypercore 列存(自有压缩列式格式)
开放格式程度 Parquet/Iceberg/Arrow 明确支持,数据可直接被 Spark/DuckDB/Polars 读 Parquet/Arrow 原生,FDAP 全栈开放 列存为 Timescale 自有格式;行存是标准 PG 表
分区方式 按时间分区(可按天/小时等),分区内列文件 按表+时间分区为 Parquet 文件,Catalog 管理 hypertable 按时间切 chunk(默认自适应),可加空间维度
索引机制 SYMBOL 列字典编码,9.4 起新增 posting/covering 索引;时间有序天然裁剪 Parquet row-group 统计 + 元数据缓存,Last Value Cache PG 索引全家桶(B-tree 等)+ 压缩 chunk 稀疏索引(min-max/bloom)
更新删除 时序场景少更新;支持但非强项 支持行级删除(3 代补齐),重写部分文件 原生 UPDATE/DELETE(PG 事务),2.27 bloom filter 加速最高 160 倍
内存管理 零 GC Java,内存随工作集增长而非全量数据 Rust 无 GC,热数据内存缓存 PG 共享缓冲池,成熟可调

2.4 三种架构的取舍逻辑

如果你最在意...... 三家适配度 原因
单节点把硬件榨到极限 QuestDB ★★★★★ 存算耦合零网络跳数,SIMD + 内存映射,单机峰值官方口径 8.59M 行/秒(ILP)/19M 行/秒(QWP)
云上弹性、存算独立扩缩 InfluxDB 3 ★★★★★ 计算节点无状态,存储甩给 S3,扩容就是加进程
和现有 Postgres 运维体系统一 TimescaleDB ★★★★★ 就是个 Postgres 扩展,备份、监控、连接池全复用
跨机房/多活写入 InfluxDB 3 Enterprise / QuestDB Enterprise 各有方案 社区版 Timescale 多节点已移除(2.13 为最后版本,2.14 起不支持)
运维简单度 QuestDB / Influx Core 单进程都简单 QuestDB 单二进制;Influx Core 一条命令;Timescale 要会管 Postgres
存储成本随数据量线性可控 InfluxDB 3 ★★★★★ 对象存储单价最低,Parquet 压缩
事务/外键/复杂关系 TimescaleDB ★★★★★ 完整 ACID,另外两家时序定位不主打这个

2.5 三种架构的运维心智模型

架构差异最终会沉淀为运维同学每天面对的心智模型,这一点比架构图更影响真实成本。

运维日常 QuestDB 的心智模型 InfluxDB 3 的心智模型 TimescaleDB 的心智模型
数据在哪 本机磁盘上的目录,看得见摸得着 对象存储的桶里,计算节点本地几乎不存 PG 数据目录,和普通数据库一样
扩容动作 换更大的机器或加 Enterprise 副本 加计算进程,存储自动涨 升实例规格或加流复制从库
故障直觉 进程挂了看本机日志和 WAL 先判断是计算节点、Catalog 还是对象存储的问题 当成 Postgres 故障排查,DBA 经验直接用
监控指标 写入速率、WAL 积压、分区数 组件队列、Parquet 文件数、对象存储请求量 PG 常规指标(连接数、WAL、缓冲命中率)+ chunk 统计
备份直觉 文件/卷快照 对象存储自身持久度 + Catalog 备份 pg_basebackup + WAL 归档,路径最熟

一句话概括三种心智:QuestDB 是"管好一台超强机器",InfluxDB 3 是"管好一群无状态工人和他们身后的仓库",TimescaleDB 是"管好一个你本来就会管的 Postgres"。组织里现成的运维能力长在哪种模型上,往往比纸面性能更能决定长期幸福感。

避坑指南

  1. 别把 InfluxDB 3 的"无状态组件"理解成"部署简单"------Core 单进程确实简单,但 Enterprise 的 Router/Ingester/Querier/Compactor/Catalog 拆开是一整套分布式系统,运维门槛不低。
  2. 别在 TimescaleDB 关闭的 chunk 上指望高频乱序写入------chunk 压缩后进列存,写入路径变重,乱序迟到数据要靠 recompression/回填策略兜。
  3. QuestDB 社区版是单机哲学,别期待开箱即用的自动分片集群,高可用和副本在 Enterprise。

加分点:能一句话总结三家架构------"QuestDB 是把单机当数据库机器来造,InfluxDB 3 是把数据库拆成跑在对象存储上的无状态服务,TimescaleDB 是给 Postgres 装上时序涡轮"。

面试考点:"存算耦合和存算分离各自的利弊?"------耦合:网络跳数少、延迟低、一致性简单,但扩缩容要搬数据;分离:弹性好、存储便宜、组件独立升级,但查询要经过对象存储网络、冷查询延迟高、依赖 Catalog 可用性。QuestDB 选前者换极致延迟,Influx 3 选后者换云弹性,Timescale 借 PG 生态走中间路线。

第三章 数据模型与 Schema:关系表、tag/field 与 hypertable 的三国语言

数据模型是开发者每天要面对的东西。架构再先进,写数据时别扭不别扭、查数据时顺不顺手,才是体感差异最大的地方。

3.1 数据模型核心对照

模型维度 QuestDB InfluxDB 3 TimescaleDB
基本单位 关系表(table),必须有 designated timestamp(指定时间戳列) measurement(度量),逻辑上类似表 标准关系表,转为 hypertable
时间列 建表时指定 timestamp 列为 designated timestamp 每行自带 time(纳秒精度) 建 hypertable 时指定 time 列
维度列 SYMBOL 类型(字典编码字符串,类似枚举),用于高频过滤/分组 tag(标签,带索引的维度,字符串键值对) 普通列,任意 PG 类型,靠 B-tree/稀疏索引
指标列 数值列(double/long/timestamp/boolean 等),10.0 新增 DECIMAL、TIMESTAMP_NS field(字段,数值/字符串/bool,不参与索引) 任意 PG 数值类型
多值写入 一张表可含任意多指标列,一次写入多列 一个 measurement 可带多个 field,天然多值 一张表任意多列
表间关系 无外键,靠 ASOF/LT JOIN 在查询时关联 无 JOIN 传统(3 代 DataFusion 增强跨表 JOIN 但非强项) 完整外键、JOIN、事务
数组类型 10.0 原生 ARRAY(含订单簿场景的二维数组) 支持多值字段 PG 数组类型完整支持
schema 变更 流式写入中可动态加列,"on the fly" 隐式 schema,新 tag/field 自动发现 标准 ALTER TABLE,加列方便但类型严格

3.2 schema-on-write vs schema-on-read vs 严格 schema

立场 QuestDB InfluxDB 3 TimescaleDB
schema 哲学 偏 schema-on-write:表结构显式定义,但写入时可自动扩展新列 schema-on-read 友好:无需预定义,tag/field 写入即自动发现 严格 schema:标准 DDL,类型约束强
新字段接入成本 低,写入带新列可自动加 极低,埋点直接加 field/tag 即可 中,需 DDL 变更(但 PG 的 ALTER 很轻)
类型安全 中高,SYMBOL 与数值类型明确 中,field 类型随数据推断,同名 field 类型冲突要小心 高,PG 强类型,脏数据进不来
适合的数据治理 中,结构清晰即可 弱治理快迭代(监控埋点风格) 强治理、合规、审计场景
典型坑 SYMBOL 滥用会撑大字典 同名 field 类型漂移、tag 基数失控 把高基数字段误当维度乱建索引

3.3 标签/维度建模思路差异

建模问题 QuestDB 的做法 InfluxDB 3 的做法 TimescaleDB 的做法
设备 ID 放哪 SYMBOL 列,字典编码+索引 tag(device_id=xxx) 普通文本/UUID 列,建索引或用 UUIDv7
高基维度(如 trace_id) 可用 SYMBOL 但需评估字典大小 3 代架构已无硬上限(v1 TSI 时代的噩梦结束) 随便放,关系模型无 tag 概念
维度组合爆炸 列存按列过滤,组合不膨胀存储 series 概念在 3 代被打散到 Parquet,基数压力大幅缓解 行数增长而已,无 series 膨胀概念
维度更新(设备改名) SYMBOL 可改字典 tag 值不可变语义,改名等于新 series 标准 UPDATE,或维度表 JOIN
维度表/事实表 无维度表概念,宽表为主 无,宽 measurement 经典星型/雪花建模完全支持,维度表外键关联
枚举值管理 SYMBOL 即枚举,自动建字典 无专门枚举 PG ENUM 或查找表

3.4 同一个 IoT 场景三种建模范式

场景元素 QuestDB 建模 InfluxDB 3 建模 TimescaleDB 建模
传感器读数 表 readings,ts 为 designated timestamp,sensor_id 为 SYMBOL,temp/humidity 为数值列 measurement=readings,tag:sensor_id、site、region;field:temp、humidity hypertable readings,列 ts/sensor_id/temp/humidity,sensor_id 可外键到 devices 表
设备元数据 冗余进宽表或单独表 ASOF JOIN 作为 tag 冗余写入 devices 维度表,JOIN 查询
新增指标 写入带新列自动扩展 直接加 field ALTER TABLE 加列
按站点聚合 WHERE site='xxx'(SYMBOL 过滤)+ SAMPLE BY WHERE site='xxx'(tag 过滤)+ GROUP BY time WHERE + time_bucket 聚合
关联设备维保记录 ASOF JOIN 最近的维保事件 跨 measurement JOIN 弱,需侧路 标准 JOIN 维保单,事务保证

避坑指南

  1. InfluxDB 老用户迁移到 3 代最容易犯的错:用 v1/v2 的"tag 必须低基数"思维自我设限。3 代基于 Parquet/Arrow 的架构已经拆掉了 TSI 倒排索引的基数天花板,但高基数 tag 仍会影响压缩和扫描效率,该放 field 的别硬塞 tag。
  2. QuestDB 的 SYMBOL 不是免费午餐:它是字典编码,适合重复值高的维度(设备 ID、交易标的);把近唯一值(请求 ID)放 SYMBOL 等于字典里几乎一行一码,白付编码开销。
  3. TimescaleDB 用户别把时序表当纯日志表堆------hypertable + chunk 时间间隔要按查询粒度调,chunk 太大压缩和裁剪失效,太小元数据爆炸。

加分点:能指出"三家数据模型其实是三种监控文化的投射"------Influx 的 tag/field 来自 metrics 埋点世界(标签索引+指标值),QuestDB 的 SYMBOL+关系表来自金融行情世界(标的字典+多列报价),Timescale 的 hypertable 来自关系世界(一切皆表)。

面试考点:"为什么时序库普遍用列式存储?"------时序查询的典型模式是"选少数几列、扫大范围时间、做聚合",列存只读取需要的列、同列数据类型一致压缩率高、天然适合 SIMD 向量化。三家热/冷存储都是列式(QuestDB 原生列+Parquet、Influx Parquet、Timescale Hypercore 列存),区别只在热数据层:Timescale 的最近 chunk 还是行存以换取快速写入和更新。

第四章 写入性能对决:8.59M rows/sec 是谁的口径?

写入是时序库的入场券。监控、IoT、行情这三类场景的共同特点是:写不进去一切白搭 。这一章把三家官方和第三方的基准数字摊开讲,但先记住一句话:所有厂商基准都是营销材料的一部分,要看就看口径和测试方法

4.1 TSBS 基准三方数据(标注立场)

TSBS(Time Series Benchmark Suite)是时序领域最常被引用的基准工具,源自 Timescale 团队早年发起,后被各家广泛使用。但注意:同一个 TSBS,不同人选的负载、硬件、参数完全不同

基准项 QuestDB 官方口径(2026-08,TSBS DevOps,AWS r8a.8xlarge,32 vCPU/256GB) InfluxDB 3 官方口径 Timescale 官方/历史口径
峰值写入 8.59M rows/sec(ILP、10 万 hosts、32 workers);10.0 QWP 网络写入自测 19M rows/sec 官方主打"millions writes per second"量级,Rust 重写后较 v2 大幅提升 官方披露单机可处理约 200 万 inserts/sec(单节点持续优化后)
同场对比 ClickHouse 1.75M rows/sec(同场实测,QuestDB 博客口径) ------ ------
相对 InfluxDB 3 Core QuestDB 官方称写入快 12-36 倍(不同 hosts 规模) Influx 官方未在同口径下确认该数字 ------
相对 TimescaleDB QuestDB 官方称写入快 6-13 倍 ------ 未在同口径确认;Timescale 强调 COPY 批量与持续优化
last-point 查询 官方口径 1.7ms(对比对象约 20.5ms) 官方主打 sub-10ms,Last Value Cache 加速最新值 2.30 DeferredChunkAppend 后 last-point 从随 chunk 数线性增长降为常数级(最新 chunk 命中时)
复杂聚合查询 QuestDB 官方称比 Influx 3 Core 快 43-418 倍(single/double groupby 等)、比 Timescale 快 16-20 倍(另有博客称复杂查询最高 72 倍) 3.10 官方称单序列查找、实时遥测、元数据查询显著提速 官方强调列存向量化后常见查询数量级提升(历史口径 10x 常见查询)

必须说清楚的基准局限

局限点 说明
谁测谁赢 QuestDB 的数字出自 QuestDB 博客与仓库,Influx 的数字出自 InfluxData 官网,双方都没有在对方调优过的环境里复测
版本漂移 QuestDB 同场对比用的是 9.3.3(2026-08),对手版本与调优参数未必是对方最优配置;Influx 3 仍在快速迭代(3.8→3.10 持续提速)
负载选择 TSBS DevOps(cpu-only)偏监控负载;IoT 负载多了地理位置等维度;金融 tick 负载(高基数+多列)TSBS 覆盖不到
持久化设置 QuestDB 口径明确是"两边都开默认持久化",但各家 durability 默认值含义不同(WAL 刷盘频率、内存缓冲窗口)
网络协议 QuestDB 的 19M 是 QWP 二进制口径,8.59M 是 ILP 文本口径,两者不能直接比;老对比文章都是 ILP 时代数据
硬件利用 r8a.8xlarge 是 32 vCPU 大机器,小规格实例上相对差距会缩小

一句话:QuestDB 在它自己选定的战场上确实是写入性能的天花板级别选手,金融级单机吞吐无人质疑;但"快 418 倍"这种数字出现在生产选型 PPT 里时,请务必在自己的负载、自己的机器、自己的调优下复测。

4.2 协议效率对比

协议维度 QuestDB InfluxDB 3 TimescaleDB
主力写入协议 QWP(10.0 新,二进制列式 over WebSocket,复用 9000 端口);ILP 兼容保留 ILP 行协议(文本,生态最广);Flight/HTTP PostgreSQL COPY(二进制/文本批量);INSERT
线上编码 QWP 列式+帧压缩,官方称典型行体积比 ILP 小 3-4 倍 ILP 文本 key=value,3 代部分类型二进制优化 COPY 二进制模式高效,单条 INSERT 走事务较重
单连接吞吐 QWP 官方称单连接可达数千万行/秒(流水线化) 批量写入下高吞吐,官方称单机每秒百万级写入 COPY 批量可达百万级行/秒级(取决于磁盘)
生态复用 ILP 兼容 Telegraf 等既有采集器;QWP 需新客户端(Java/Python/Go/C-C++/Rust/.NET 已重写,Node 待跟进) ILP 生态最大,400+ Telegraf 插件直连 任何 PG 驱动/ORM 都能写,生态天然最大
客户端高可用 QWP 客户端内置多主机 failover、本地磁盘 store-and-forward,官方称 RPO 接近 0 客户端侧重试,Enterprise 多写 PG 生态连接池+ Patroni 切换

4.3 乱序写入三家方案

乱序能力 QuestDB(O3) InfluxDB 3(WAL/Compactor) TimescaleDB(chunk 生命周期)
乱序容忍 O3 引擎自动将迟到数据归并进历史分区,按时间戳排序 Ingester WAL 缓冲窗口内容忍乱序,落盘后 Compactor 合并 chunk 未关闭(默认自适应区间,如 7 天内)随便写
很老的数据迟到 仍可写入,O3 归并有代价 可写,触发已落盘文件的合并重写 压缩后的旧 chunk 写入代价高,需 recompression/去压缩
去重 内置去重语义,同时间戳同维度可覆盖/忽略 series+时间戳覆盖语义 靠唯一约束/ON CONFLICT 自行处理
建议姿势 乱序在合理窗口内随意,极端迟到监控 O3 开销 调大/调小缓冲窗口权衡可见性与合并成本 迟到数据尽量在 chunk 关闭压缩前到达;历史回灌走批量 COPY

4.4 批量、背压与客户端机制

机制 QuestDB InfluxDB 3 TimescaleDB
推荐批量大小 客户端 sender 自动缓冲,QWP 客户端按帧压缩批量发送 官方客户端批量 buffer,按行数/时间 flush COPY 为批量而生;INSERT 建议攒批
背压来源 客户端本地队列+磁盘 offload,网络抖动不阻塞业务线程 组件间靠对象存储解耦,Ingester 内存满则 flush PG 连接数/WAL 刷盘/锁竞争
断网保护 QWP store-and-forward:本地磁盘缓冲,恢复后续传,RPO≈0 客户端重试;服务端缓冲期内数据在内存 客户端/连接池重试;数据靠 PG WAL
写入可见性 WAL 提交后即可查(提交批量化在 9.x 优化) 写入 Ingester 即可查(秒级内),不等落盘 事务提交即可查,强一致
exactly-once 协议层去重+幂等支持 覆盖语义近似幂等 事务+唯一约束可实现严格幂等

4.5 写入场景适配速查

写入特征 更占优的一方 理由
单机极致吞吐、金融 tick 洪峰 QuestDB 零 GC + 列存 + QWP 二进制,官方口径吞吐最高
海量监控指标、弹性上云 InfluxDB 3 存算分离、对象存储缓冲、Telegraf 生态
事务性写入+关系数据混写 TimescaleDB ACID、外键、COPY 批量,业务库直接承接时序
边缘设备、断网续传 QuestDB(QWP 客户端 disk offload)/ Influx Core(轻量单进程) 两者都有客户端/部署侧缓冲方案
高频乱序+迟到回灌 QuestDB O3 体验最省心;Influx 窗口内 OK;Timescale 需 chunk 策略配合 O3 为乱序原生设计

避坑指南

  1. 压测时三家的"批量大小、持久化级别、压缩开关、并发连接数"必须拉齐再比,否则比的是配置不是引擎。见过太多团队拿 Influx 单条 INSERT 对 QuestDB 批量 QWP,然后惊呼百倍差距------那是测试事故不是性能事实。
  2. InfluxDB 3 Core 定位是"近期数据引擎",长程历史查询能力在 Enterprise,压测长窗口聚合前先确认版本能力边界。
  3. TimescaleDB 别用逐条 INSERT 灌数据,COPY 和批量 insert 差一个数量级;连接池也别开几百个,PG 是进程模型。

加分点:谈写入性能时主动给基准"拆台"------指出 QuestDB 8.59M 是 ILP 口径、19M 是 QWP 口径、对手版本与调优未对齐,并能说出"我们在自己负载上复测的数字才作数",这种态度在评审会上最有说服力。

面试考点:"时序库写远多于读,写入路径做了哪些优化?"要点:追加写(append-only)不改历史、批量提交摊薄 fsync 成本、列存编码压缩写放大、WAL 先落盘保证持久性再异步整理、内存映射零拷贝、协议层二进制化减少序列化(QWP/Flight)、客户端缓冲削峰。QuestDB 的 O3 去重归并、Influx 的 Compactor 合并、Timescale 的 chunk 压缩分别代表三种"写时快、整理解耦"的工程范式。

第五章 查询性能对决:last-point、时间聚合与时序 JOIN 的三种解法

写入决定你能不能上车,查询决定你坐车舒不舒服。时序查询有几类经典动作:取最新值、按时间桶聚合、两条时间线按时间对齐 JOIN、补齐空桶、窗口函数。三家解法差异极大。

5.1 查询执行引擎对比

执行维度 QuestDB InfluxDB 3 TimescaleDB
执行引擎 自研并行向量化引擎,SIMD 指令、JIT 过滤,全核并行 Apache DataFusion(Rust)+ Arrow 列式执行 PostgreSQL 执行器 + 列存向量化管道(2.27+ 持续增强)
向量化程度 原生 SIMD,热路径 C++/Rust,零 GC Arrow 批处理向量化,DataFusion 生态 列存压缩块上的向量化聚合/过滤,行存走 PG 原生
并行模型 跨分区/列并行,全核利用 DataFusion 并行执行,无状态 Querier 水平扩 PG 并行查询(单节点多核),并行度受 PG 模型约束
热数据查询 内存映射列文件,亚毫秒~毫秒级 内存缓存热数据,官方 sub-10ms 近期查询 未压缩 chunk 在缓冲池,快;压缩 chunk 需解压
冷数据查询 Parquet 冷存(Enterprise 自动分层),同 SQL 可查 对象存储 Parquet,长程查询靠 Enterprise,冷启动有 I/O 延迟 本地/云存储,压缩 chunk 稀疏索引裁剪减少 I/O
结果回传 QWP Arrow IPC 列式流出,官方自测 220M rows/sec、首批 32ms Flight/Arrow 列式回传 PG 协议行式回传,大结果集序列化开销相对高

5.2 经典时序查询能力矩阵

查询能力 QuestDB InfluxDB 3 TimescaleDB
最新值(last-point) LATEST ON 语法,官方 TSBS 口径 1.7ms Last Value Cache,官方 sub-10ms 2.30 DeferredChunkAppend + FIRST/LAST 稀疏索引,命中最新 chunk 时常数级
时间桶聚合 SAMPLE BY(按时间分桶+FILL 填值),9.x 起并行化 FILL DATE_BIN + GROUP BY(SQL);InfluxQL 的 GROUP BY time() time_bucket() + 连续聚合;time_bucket_gapfill 补空桶
空桶补齐 FILL(PREV/NULL/常量/线性),9.x 跨列 FILL(PREV) gapfill 能力(SQL 窗口/函数侧) time_bucket_gapfill + locf/插值,成熟好用
时序对齐 JOIN ASOF JOIN(按最近时间对齐)、LT JOIN(前值连接)、HORIZON JOIN、WINDOW JOIN、LATERAL(9.3.5+) DataFusion JOIN 能力增强中,时序对齐需手写窗口逻辑 标准 JOIN 全家桶 + LATERAL,ASOF 语义需自己用窗口函数拼
窗口函数 9.3.5 起补齐统计窗口函数,10.0 Live Views 增量维护窗口结果 DataFusion 支持标准窗口函数 PG 窗口函数全家桶,最全
物化/持续聚合 物化视图(聚合)+ Live Views(10.0,窗口结果毫秒级增量刷新) 插件/Processing Engine 侧实现,Core 无内建连续聚合 连续聚合(continuous aggregate)成熟,2.23 起刷新默认分批
子查询/CTE 支持,持续完善 DataFusion 支持 CTE/子查询 完整支持,PG 水准
降采样策略 SAMPLE BY 即时聚合 + 物化视图 保留策略+降采样靠任务/插件 连续聚合 + 压缩 + 保留策略自动化
实时仪表盘 Live Views 增量刷新,为 Grafana/图表场景定制 内存热查 + 缓存 连续聚合物化,刷新粒度可调

5.3 时序 JOIN:三家差距最大的地方

时序 JOIN 是金融和复杂事件处理的灵魂------"这笔成交发生时,最近的买一卖一报价是多少"这种问题,本质是两条时间线按时间对齐。

JOIN 场景 QuestDB InfluxDB 3 TimescaleDB
成交对齐最近报价(ASOF 语义) 原生 ASOF JOIN,一等公民 无原生 ASOF,窗口函数手写 无原生 ASOF,LATERAL + 窗口函数可实现
多标的批量对齐 ASOF JOIN 配合 PARTITION 语义 需复杂 SQL 拼 LATERAL 子查询,写法较长
区间内事件关联 WINDOW JOIN / HORIZON JOIN DataFusion 区间 JOIN 发展中 标准 SQL 区间条件 JOIN,灵活但需手写
与维度表关联 关系表可 JOIN,但无外键 跨表 JOIN 弱,监控场景少用 外键+任意 JOIN,最强
订单簿分析 二维数组+金融函数原生支持 不主打 可以做但要自己建模

一句话总结:时序专用 JOIN 表达力 QuestDB 最强(金融基因),通用关系 JOIN 能力 TimescaleDB 最强(PG 基因),InfluxDB 3 在 DataFusion 上快速补齐但监控基因决定它对 JOIN 的需求本来就低

5.4 基准查询数据(同样标注口径)

查询基准 QuestDB 官方口径 InfluxDB 官方口径 Timescale 官方口径
last-point 1.7ms(TSBS,对比约 20.5ms) sub-10ms(Last Value Cache) 2.30 后命中最新 chunk 为常数级,不再随 chunk 数线性增长
single-groupby 官方称比 Influx 3 Core 快最高 448 倍(部分博客口径) 3.10 称单序列/元数据查询显著提速 官方称列存向量化带来数量级提升
double-groupby 官方称比 Influx 3 Core 快最高 43 倍 持续优化中 列存聚合管道受益
大结果集导出 QWP 流式 220M rows/sec 到 Arrow、5 亿行 2.3 秒(官方自测) Arrow Flight 列式传输 PG 协议导出,超大数据集建议走 Parquet/外部表
冷数据长程 Enterprise 分层 Parquet,同 SQL Enterprise 长程查询定位,对象存储 I/O 决定下限 压缩 chunk + 稀疏索引裁剪,本地盘稳定

老规矩:QuestDB 的倍数出自 QuestDB 自家 TSBS(2026-08,9.3.3 同场),Influx 的提速说法出自 InfluxData 自家 3.10 发布材料,Timescale 的提升出自 TigerData 发布说明。三方从未在一份互相认可调优的报告里同台过

5.5 查询场景适配速查

查询需求 首选 理由
毫秒级最新值大屏 QuestDB / Influx 3 LATEST ON 与 LVC 都是为此而生
金融行情对齐、订单簿 QuestDB ASOF/LT/HORIZON/WINDOW + 二维数组
复杂报表+关系 JOIN+存储过程 TimescaleDB 完整 PG SQL,BI 工具零适配
监控 PromQL 风格聚合 InfluxDB 3 监控生态语义最自然,SQL+InfluxQL 双轨
超大规模时间桶扫描 QuestDB(本地列存)/ Influx 3(云弹性) 看你要单机延迟还是云规模
实时增量指标看板 QuestDB 10.0 Live Views / Timescale 连续聚合 两者都有物化增量方案,Influx Core 需侧路

避坑指南

  1. 别用 OLTP 思维写时序查询------深分页(超大 OFFSET)、逐行 JOIN、无时间范围的全表扫,三家都会教你做人。时序查询必须带时间范围谓词。
  2. InfluxDB 3 Core 上做复杂跨表 JOIN 前先查 DataFusion 版本支持度,监控型查询它很爽,分析型重 JOIN 不是它的主场。
  3. TimescaleDB 压缩后的数据上做高频点更新要留意解压/重压缩成本;2.27 的 bloom filter 加速 UPDATE/DELETE 最高 160 倍,但仍不如行存自由。

加分点:讨论查询性能时区分"热查延迟"与"冷查吞吐"------QuestDB 热查亚毫秒是内存映射的红利,Influx 3 冷查要付对象存储 I/O,Timescale 靠稀疏索引在压缩数据上裁剪 I/O。能说出"延迟敏感看热路径、成本敏感看冷路径"就到位了。

面试考点:"last-point 查询为什么难、三家怎么解?"------难在每张 series 要取最新一行,朴素写法是全表排序分组。QuestDB 用 LATEST ON 配合时间有序存储直接定位;Influx 3 用 Last Value Cache 内存缓存最新值;Timescale 2.30 用 DeferredChunkAppend 延迟展开 chunk + FIRST/LAST 稀疏索引,命中最新 chunk 时从线性扫描变常数。这是"存储有序性 + 元数据索引 + 缓存"三种思路的典型对照。

第六章 SQL 兼容性光谱:完整 PG、类 PG 方言与 DataFusion 新势力

SQL 兼容性决定了你能复用多少现成的人才、工具和代码。这一章对有 BI、ORM、报表团队的组织尤其关键。

6.1 三方 SQL 方言光谱

兼容性维度 QuestDB InfluxDB 3 TimescaleDB
方言定位 类 PostgreSQL 方言 + 时序扩展,不是完整 PG ANSI SQL(DataFusion 实现)+ InfluxQL 兼容层;Flux 已弱化 完整 PostgreSQL 方言,PG 能写的它都能写
存储过程/函数 无 PL/pgSQL 这类完整过程语言 插件体系(Python Processing Engine)扩展逻辑 PL/pgSQL、PL/Python、PL/Perl 全支持
触发器 不支持 不支持(插件触发侧路) 完整支持
外键/约束 无外键 无外键 完整外键、级联、CHECK、唯一约束
窗口函数 9.3.5 起补齐统计窗口 DataFusion 标准窗口 PG 全量窗口函数
CTE/子查询 支持 支持(DataFusion) 完整支持,含递归 CTE
事务 写入事务语义有限(时序追加为主) 无传统多语句事务 完整 ACID 事务
用户自定义类型/函数 时序函数库丰富 可扩展函数 PG 扩展生态全可装(PostGIS、pgvector 等)
时序语法糖 SAMPLE BY、LATEST ON、ASOF/LT/WINDOW/HORIZON JOIN、FILL date_bin、gapfill 函数;InfluxQL 时代的 GROUP BY time time_bucket、time_bucket_gapfill、first/last、histogram
历史遗留语言 InfluxQL 仍可用,Flux 弱化/维护态 无包袱

6.2 标准 SQL 特性覆盖对照

特性 QuestDB InfluxDB 3 TimescaleDB
SELECT/JOIN/GROUP BY/ORDER BY ✅(方言细节有差异) ✅(DataFusion) ✅(完整 PG)
窗口函数 ✅(9.3.5+)
CTE(WITH) ✅ 含递归
子查询/相关子查询 ✅(部分复杂形式看 DataFusion 版本)
UNION/INTERSECT/EXCEPT ✅(10.0 有序 UNION ALL 可流式执行)
PIVOT/UNPIVOT PIVOT 语法(兼容 SQL Server/PG 风格差异) 有限 ✅(crosstab 等生态)
JSON 处理 JSON 函数 + UNNEST(9.3.5) DataFusion JSON 函数 PG JSONB 全家桶,最强
数组 10.0 原生 ARRAY(含二维) 多值/数组支持 PG 数组完整
地理空间 有限 有限 可装 PostGIS,最强
全文检索 不主打 不主打 PG 全文检索 + 生态扩展
向量检索 不主打 生态侧 可装 pgvector,AI 场景直接混查

6.3 BI / ORM / 工具对接难度

对接对象 QuestDB InfluxDB 3 TimescaleDB
Grafana 官方专用数据源插件,时序语义深度支持 官方插件,监控场景老牌支持 PG 数据源直连,官方也有插件
Tableau/Power BI/Superset/Metabase PGWire 协议可连,复杂 SQL 可能撞方言墙 Flight/Arrow 驱动适配中,BI 生态成熟度弱于 PG PG 驱动零成本,全部 BI 原生支持
SQLAlchemy/Hibernate 等 ORM PGWire 可连但 ORM 生成的复杂 SQL 可能不兼容 无传统 ORM 故事 全 ORM 无压力,当作 Postgres 用
JDBC/ODBC 有 JDBC 驱动(10.0 时代基于 QWP egress 的新驱动) Flight SQL/JDBC 生态发展中 PG JDBC/ODBC 官方驱动最成熟
Pandas/Polars/Spark QWP 原生 Arrow 零拷贝进 Pandas/Polars Arrow 原生,Spark 可读 Parquet PG 驱动 + Parquet/外部表
DBeaver/DataGrip PGWire 可连 通过 JDBC 原生 PG 支持,体验最好
迁移自 MySQL/PG 业务库 SQL 要改写方言 模型要重构为 measurement 几乎不改 SQL

6.4 团队技能匹配

团队背景 上手成本最低 说明
纯 PostgreSQL/后端团队 TimescaleDB 方言零差异,DBA 知识全复用
监控/SRE 团队(Prometheus/Telegraf) InfluxDB 3 tag/field 模型与监控思维同构,InfluxQL 过渡平滑
量化/金融工程团队 QuestDB ASOF/SAMPLE BY/订单簿数组与 kdb+ 思维接近
数据工程/Spark/Arrow 团队 InfluxDB 3 / QuestDB(QWP Arrow) 都是 Arrow 生态,列式数据无缝流转
全栈业务团队(要事务+报表+时序混着来) TimescaleDB 一个库同时干业务库和时序库

避坑指南

  1. "支持 PG 协议"不等于"兼容 PG SQL"。QuestDB 讲 PGWire、Influx 3 也能接部分 PG 生态,但 BI 工具生成的复杂分析 SQL(递归 CTE、特殊类型转换、存储过程)只有 TimescaleDB 全接得住。选型 PoC 时务必拿你真实的报表 SQL 去跑,别只测连接通不通。
  2. InfluxDB 老用户注意:Flux 在 3 代已明显弱化,新项目直接上 SQL/InfluxQL,别在 Flux 上重投入。
  3. QuestDB 的方言在持续追赶(9.3.5 补窗口函数和 LATERAL、10.0 补数组和 DECIMAL),但生产前要核对你用到的每个函数在目标版本是否支持,官方文档有完整的"不支持的标准 SQL 特性清单"。

加分点:把三家定位成"SQL 光谱的三个位置"------Timescale 是超集(PG 全量+时序糖),QuestDB 是时序优先的 SQL 子集+独家时序算子,InfluxDB 3 是新引擎 ANSI SQL 快速补课。没有谁 SQL 更"好",只有和你现有代码资产的匹配度差异。

面试考点:"为什么时序库不直接用 SQL 标准就好,要发明 SAMPLE BY/time_bucket 这类东西?"------标准 SQL 按时间分桶聚合要写 DATE_TRUNC + GROUP BY + 窗口函数补齐空桶,繁琐且优化器难以识别时序模式;时序原语让优化器直接走时间有序存储的裁剪路径,并内置 FILL/gapfill 语义。ASOF JOIN 同理:标准 SQL 用 LATERAL+ORDER BY+LIMIT 能写但无法利用时间有序性做高效归并,原生算子一条语句且能走专用执行路径。

第七章 高基数之战:TSDB 经典死穴,三家谁先松绑?

高基数(high cardinality)是时序数据库历史上最著名的坟场。所谓基数,就是你的维度组合(series)有多少个唯一值。监控场景主机+指标名组合可能几十万,IoT 设备百万级,而把 trace_id、用户 ID、请求 ID 当标签打进去,基数直接冲到上亿------这在老一代 TSDB 上等于自杀。

7.1 基数问题的来龙去脉

时代 基数机制 痛点
InfluxDB v1(TSM+TSI) tag 组合形成 series,TSI 倒排索引维护 series → 数据映射 series 到百万级后内存暴涨、索引膨胀、重启加载慢、写入和查询双双劣化,"基数爆炸"成运维噩梦
InfluxDB v2 同构延续 v1 存储模型 同样受基数天花板困扰
InfluxDB 3 Parquet 列式 + DataFusion,无 series 倒排索引结构 官方宣称"无限基数(unlimited cardinality)",高基维度不再压垮索引
QuestDB SYMBOL 字典编码 + 列存过滤,9.4 起新增 posting/covering 索引 官方称"无人工基数上限",但 SYMBOL 字典仍需评估内存,近唯一列不建议用 SYMBOL
TimescaleDB 关系模型,没有 tag/series 概念,维度就是普通列 天然免疫 series 膨胀;高基数=表行数多/索引大,走 PG 常规优化

7.2 百万级 series/设备场景三方表现

场景:100 万台设备,每台每秒一条遥测 QuestDB InfluxDB 3 TimescaleDB
维度建模 device_id 用 SYMBOL,字典约百万条目 device_id 作 tag,3 代无索引硬上限 device_id 普通列(可 UUIDv7),B-tree/稀疏索引
写入稳定性 列存追加,基数不改变写入路径 Parquet 设计目标就是高基数,官方主打十亿级 series 规模 行存写入稳定,索引维护有成本但可控
按设备查询 SYMBOL 字典定位 + 列裁剪,快 Parquet row-group 裁剪 + 元数据缓存 chunk 裁剪 + 索引,2.30 last-point 常数级
按高基维度聚合(如按固件版本+区域) GROUP BY SYMBOL 列,向量化聚合 DataFusion 聚合 Arrow 批 列存向量化聚合(2.27+)
内存压力点 SYMBOL 字典大小 Catalog/元数据缓存 + 热数据缓存 PG 缓冲池 + 索引体积
近唯一维度(trace_id 级) 不建议 SYMBOL,作普通列 3 代可承受,但扫描成本随数据量走 普通列即可,无特殊风险

7.3 基数治理建议对照

治理动作 QuestDB InfluxDB 3 TimescaleDB
什么列该当"标签" 重复率高的枚举维度用 SYMBOL 可过滤/分组的维度用 tag,3 代放宽但仍建议克制 任何列都行,按查询模式建索引
近唯一值怎么办 普通字符串列,别建 SYMBOL 可放 tag 也可放 field,评估扫描频率 普通列,需要唯一约束就建
维度组合规模预估 字典条目数 × 平均长度估内存 3 代主要看 Parquet 文件数与 Catalog 规模 看行数与索引大小,DBA 成熟方法
基数监控 Web Console 看表/列统计 系统表/Catalog 可查 PG 统计信息 + Timescale 信息视图
历史教训 无 series 概念,未经历基数灾难 v1/v2 TSI 灾难是 3 代重写的核心动因之一 从未有此问题(关系模型红利)

避坑指南

  1. InfluxDB 3 的"无限基数"是营销语言,工程上准确的说法是"架构上不再有 TSI 那样的硬崩溃点"。把十亿级 series 塞进单节点 Core 照样会遇到 Parquet 文件数膨胀、Catalog 压力、查询扫描量的问题------基数自由不等于资源自由。
  2. QuestDB 的 SYMBOL 虽然是字典编码很省空间,但百万级 SYMBOL 的字典本身要常驻内存,容量规划时别漏算;9.4 的 posting 索引让索引文件小约 13 倍、查找快 1.3-1.5 倍,升级有红利。
  3. TimescaleDB 看似"基数免疫",但高基数维度上乱建 B-tree 索引会拖慢写入和压缩,2.22 起稀疏索引可手动配置(min-max/bloom),按查询谓词定制比无脑建索引强。

加分点:讲基数时能区分"series 基数"(时序库特有:标签组合数)和"列基数"(通用数据库概念:某列唯一值数)------Influx v1 死在前者,而三家对后者的处理本质都是列存字典编码/稀疏索引,这是两套问题。

面试考点:"为什么老一代时序库会被高基数拖垮?"------因为它们用倒排索引维护 series 到数据块的映射(为了快速按标签查),series 数量爆炸时索引本身的内存和维护成本指数上升,写入要更新索引、重启要加载索引、查询要遍历索引。解法分两派:Influx 3 干脆拆掉 series 索引、让 Parquet row-group 统计信息和列式扫描承担过滤;Timescale/QuestDB 本来就没有 series 索引这层抽象,用字典编码+列裁剪+稀疏索引把问题转化为普通的列存过滤问题。

第八章 压缩率与存储成本:90-95% 压缩率背后的账

时序数据天然适合压缩:同列同类型、时间有序、数值连续、重复度高。三家都能做到 90% 以上的原始数据压缩,但路径和冷分层策略差别不小。

8.1 压缩机制对比

压缩维度 QuestDB InfluxDB 3 TimescaleDB
热数据压缩 原生列存本身列式编码 内存 Arrow + 落盘即 Parquet 压缩 行存 chunk 不压缩(保写入/更新性能)
冷数据格式 Parquet(列式+字典+编码) Parquet(原生落地格式) Hypercore 列存(列式压缩块)
官方压缩率口径 列存+Parquet,具体随负载 Parquet 字典编码+列压缩,主打显著降低存储成本 官方口径原生压缩 90-95%
压缩触发 分区转 Parquet(开源手动 ALTER,Enterprise 自动分层) Compactor 持续合并小文件为大 Parquet 压缩策略按 chunk 年龄自动执行(2.23 起默认自动启用列存策略)
压缩键控制 Parquet 编码自动 Parquet 编码 + 表配置 segmentby(按维度分段)+ orderby(段内排序),2.22 起按 chunk 自动适配
更新压缩数据 时序少更新 行级删除支持(重写部分文件) bloom filter 加速 UPDATE/DELETE(2.27,最高 160 倍),支持压缩块内插入
压缩后查询 同 SQL 直查 Parquet(Enterprise 对象存储原生查询) 直查 Parquet,谓词下推 row-group 裁剪 压缩块直接向量化执行,无需解压整段

8.2 冷热分层与对象存储

分层能力 QuestDB InfluxDB 3 TimescaleDB
分层模型 三层:WAL(热写)→ 原生列存(实时查)→ Parquet(冷存) 热:Ingester 内存缓存;冷:对象存储 Parquet,自动迁移 热:行存 chunk;温/冷:Hypercore 列存;云版支持对象存储分层
S3/GCS/Azure Blob Enterprise 自动分层到对象存储,开源可手动导出 Parquet 原生 diskless 架构,对象存储是主存储(Core 即可配 S3/GCS/Blob) Tiger Cloud 支持对象存储;自托管主要本地/块存储
冷数据查询体验 统一 SQL,Enterprise 直接查对象存储 Parquet Querier 自动合并热内存+冷对象存储结果,用户无感 压缩列存本地查;分层数据需云版/外部方案
数据开放度 Parquet/Iceberg,外部引擎直读 Parquet/Arrow,开放格式最彻底 列存自有格式,导出走标准 PG 工具/Parquet 扩展
保留策略 按分区 DROP,简单高效 retention policy 自动过期 drop_chunks + 保留策略自动化
降采样 物化视图/即时 SAMPLE BY 插件任务/侧路 连续聚合 + 分级保留

8.3 三年 TCO 测算思路(方法论,非报价)

真实成本取决于数据量、查询模式、云价目和人力,给一个可套用的测算框架:

成本项 QuestDB InfluxDB 3 TimescaleDB
热存储介质 本地 NVMe/块存储(单价中高) 少量本地缓存即可(单价低) 本地/块存储(PG 惯例)
冷存储介质 对象存储(Enterprise)/ Parquet 文件(开源) 对象存储为主(单价最低) 本地压缩列存为主(90-95% 压缩后体积小)
计算成本模型 单机高配置机器,CPU 利用率高、台数少 无状态计算层按需弹性,规模大时摊薄 PG 实例规格,云版托管省事
授权成本 社区版 Apache 2.0 免费;HA/分层/RBAC 在 Enterprise 商业版 Core MIT/Apache 免费(近期数据定位);长程查询/集群/RBAC 在 Enterprise 商业 Apache 2 Edition 完全免费;Community(TSL)自用免费、禁转售服务;Tiger Cloud 托管付费
人力成本 运维简单(单二进制),SQL 方言学习成本中 云原生组件运维门槛在 Enterprise;监控团队上手快 DBA 技能通用,PG 人才最好招
典型省钱点 单机扛高吞吐,机器台数少 对象存储单价 + 存算分离弹性 压缩率高 + 一库多用省掉异构组件
典型花钱点 需要 HA/分层时 Enterprise 授权 长程历史与集群要 Enterprise 托管云或自建 PG 高可用(Patroni 等)

测算建议:按"每日写入量 × 保留天数 × 压缩后每点字节数"估存储,按"峰值写入 RPS × 单机承载"估计算节点数,按"组织是否需要 HA/RBAC/长程查询"判断会不会被迫上商业版。三家都存在"开源版够用"和"关键能力在商业版"的分界线,选型时先把分界线划出来再算账

8.4 第三方成本侧参考口径

一家第三方 2026 年 IoT 对比(iotdigitaltwinplm,非任何一家官方,仅供量级参考)给出的年成本量级:1TB/天写入规模下,自托管社区方案 Influx 约 5-15 万美元/年量级、Timescale 约 3-8 万、托管云服务则普遍落到数千到两万美元区间------注意这是特定假设下的粗估,且对 Influx 自托管的组件成本假设偏保守,请以自己的云账单试算为准

避坑指南

  1. 压缩率数字都是"最好情况"口径------浮点数连续、标签重复率高时 95% 很正常;大量随机字符串、近唯一 ID 混入会把压缩率拉下来。拿自己的真实数据样本压一遍才作数。
  2. 对象存储不是万能药:单价低但 PUT/LIST/GET 请求计费、冷查延迟高。Influx 3 的 diskless 架构在频繁冷查场景要算请求费和查询等待,别只看存储单价。
  3. TimescaleDB 的 segmentby/orderby 设置直接决定压缩率和查询速度,默认自动策略(2.22+)省心但特殊负载要手工调;按高频过滤维度 segmentby、按时间 orderby 是基本法。

加分点:算 TCO 时主动提"隐性成本"------数据迁出成本(锁定风险)、人才招聘成本、故障时的商业支持响应。QuestDB 和 Influx 3 用 Parquet 开放格式降低锁定,Timescale 靠 PG 生态降低人才成本,这三点比压缩率数字更影响三年总账。

面试考点:"时序数据为什么能压到 1/10 甚至 1/20?"------四个机制叠加:列式存储让同类型数据连续存放(通用压缩前提);字典编码把重复标签字符串映射为整数;时间戳和数值用 delta-of-delta、gorilla、double-delta 等编码利用连续性和小幅波动;排序+分段让相似数据聚簇。查询时向量化执行直接在压缩块上算,减少解压 I/O。

第九章 高可用与扩展:单机王、云原生与 PG 生态的三条 HA 路线

数据上了生产,高可用就不是可选项。三家在"怎么不丢数据、怎么不停服务、怎么扛规模"这三件事上的答案,再次完美体现各自基因。

9.1 高可用能力对照

HA 维度 QuestDB InfluxDB 3 TimescaleDB
社区版形态 单机为主,架构哲学就是单机极致 Core 单节点、单进程,定位近期数据引擎 单节点(多节点早已移除)
高可用方案 Enterprise:高可用、读副本、多主写入、自动故障切换、多区域副本 Enterprise:读副本、工作负载隔离、单/多节点集群 PostgreSQL 流复制 + Patroni/pgpool 生态 + Tiger Cloud
副本机制 Enterprise 复制(客户端可多主机 failover,RPO≈0) 存算分离天然多副本(对象存储),计算层无状态重建 物理流复制(同步/异步),PG 生态最成熟
故障切换 Enterprise 自动 failover + SWITCH ROLE 在线主备切换(4.0 新) 计算节点无状态,重新拉起即可;数据在对象存储不丢 Patroni + 共识组件(etcd/Consul)自动切换
RPO/RTO 客户端 store-and-forward 辅助 + Enterprise 复制 存储层多副本 RPO 低;计算故障秒级重建 同步复制 RPO≈0,异步 RPO 为 WAL 延迟
备份恢复 文件级备份 + Enterprise 增强 对象存储自带持久度,快照/版本管理 pg_basebackup、WAL 归档、PITR,工具链最全
多区域/多活 Enterprise 多区域读副本 云原生跨区部署友好 流复制跨区(延迟约束)+ 云版多区

9.2 水平扩展路线

扩展维度 QuestDB InfluxDB 3 TimescaleDB
垂直扩展 主力路线,单机吃满大内存大核数 支持,但云架构更鼓励水平 支持,PG 大规格实例成熟
水平扩展 Enterprise 读副本/多主写入;无应用透明分片 Enterprise 集群角色分离(Router/Ingester/Querier 各自水平扩) 多节点(distributed hypertable)已在 2.13 弃用、2.14 移除;现走单节点强化+云对象存储
分片 无社区版自动分片 表级/系列级分散在无状态组件后 历史上有 distributed hypertable,现官方建议单节点+云
扩展哲学 一台机器先扛住,扛不住找 Enterprise 组件无状态,加机器即扩容 单节点已能扛约 200 万写入/秒(官方口径),超大规模上 Tiger Cloud
多节点现状 Enterprise 提供 Enterprise 提供 自托管不提供(2.13 是最后版本),官方明确 1% 部署使用故裁撤

TimescaleDB 多节点这段要特别说清楚:2021 年前后 Timescale 曾大力推 distributed hypertable(访问节点+数据节点),但官方披露仅约 1% 部署实际使用,维护成本拖累主线,遂在 2.13 标记弃用、2.14 正式移除,路线转为"单节点性能强化 + 云服务用对象存储解决容量"。老集群仍可停在 2.13,但新项目不要再规划多节点自托管。

9.3 Kubernetes 与部署形态

部署项 QuestDB InfluxDB 3 TimescaleDB
容器 官方镜像,一条 docker 命令 官方镜像,一条命令装 Core 官方镜像(含扩展的 PG 镜像)
Kubernetes QuestDB Operator(官方维护,Enterprise 集群有完整 Operator 指南) 3.8 起官方 Helm chart(Enterprise,beta 阶段) Helm chart 成熟,Tiger Cloud 有托管
包管理 Homebrew、二进制、各云市场 deb/rpm(3.8 起注册 systemd 服务)、TOML 集中配置 apt/yum 仓库、各云市场
配置方式 配置文件 + SQL 3.8 起 TOML 配置 + launcher 统一 postgresql.conf + 扩展配置,DBA 熟悉
系统服务 容器/二进制自管 3.8 原生 systemd/SysV,开机自启 PG 原生 systemd 服务
托管云 BYOC(Enterprise 跑在你自己的云账号) InfluxDB Cloud Dedicated/Serverless Tiger Cloud(原 Timescale Cloud)
边缘部署 单二进制轻量,可跑边缘 Core 单进程轻量,官方主打边缘/IoT 原型 需完整 PG,边缘偏重

9.4 升级与版本治理

治理项 QuestDB InfluxDB 3 TimescaleDB
升级方式 二进制/镜像替换,兼容保留老协议 Core→Enterprise 直接覆盖安装重启,数据目录通用无迁移 ALTER EXTENSION 升级,可库内多版本并存
版本节奏 大版本带重磅特性(10.0 QWP),维护版频繁 3.x 快速迭代(3.8 到 3.10 持续提速) 月度小版本,节奏稳
注意事项 大版本协议演进(QWP 替代 ILP/PGWire 为推荐),老协议保留兼容 Core 与 Enterprise 能力边界随版本调整,发布说明要看 跟随 PG 大版本:2.29 起弃 PG15、2.30 仅支持 PG16/17/18;TAM 在 2.22 移除

避坑指南

  1. 三家社区版都不要指望"开箱即用的分布式集群"------QuestDB 和 Influx 的集群能力在商业版,Timescale 干脆把多节点砍了。设计大规模自托管方案前先确认预算是否覆盖商业授权,否则架构要按"单节点+副本+分片在应用层"来设计。
  2. InfluxDB 3 的无状态不等于无依赖:对象存储和 Catalog 成了新的关键路径,它们挂了集群就瘫,HA 设计要把对象存储可用性和 Catalog 备份算进去。
  3. TimescaleDB 升级跟着 PG 版本走,2.30 只支持 PG16/17/18,老 PG15 实例要先升 PG 再升扩展;TAM(实验性访问方法)已在 2.22 移除,用过的实例升级会被阻断需先迁移。

加分点:把三家 HA 哲学一句话讲透------QuestDB 是"先把单机做到不用集群,集群能力做成商业增值";Influx 3 是"云原生时代数据天然在对象存储多副本,计算节点当奶牛随便杀";Timescale 是"不重复造 HA,PostgreSQL 二十年流复制/PITR/Patroni 生态直接继承"。

面试考点:"时序场景的高可用和 OLTP 高可用有什么不同?"------时序以追加写为主、可容忍有限度的最终一致(重复数据可去重、少量延迟可补传),因此可以用客户端缓冲(QuestDB store-and-forward)、对象存储多副本(Influx 3)、异步流复制(Timescale)等偏吞吐的方案;而最后值查询要求路由到健康节点,三家分别用客户端 failover、无状态重建、Patroni 虚拟 IP 解决。能点出"时序 HA 可以用 RPO 稍宽换吞吐和成本"就是高阶答案。

第十章 生态与工具链:采集、可视化、流计算、AI 与许可证全景

数据库不是孤岛。选型选的不只是引擎,更是它身后的整套工具链生态------采集器接不接得上、Grafana 好不好用、Kafka/Flink 能不能喂、AI 能力有没有、许可证踩不踩坑。

10.1 生态雷达:12 个维度对比

生态维度 QuestDB InfluxDB 3 TimescaleDB
官方采集器 兼容 ILP,可用 Telegraf;官方 Kafka Connect 插件 Telegraf 亲儿子,400+ 插件,生态最广 pgloader、Kafka JDBC/PG connector、Telegraf PG 输出
写入协议开放度 QWP/ILP/PGWire/REST 多协议 ILP/HTTP/Flight PostgreSQL 协议(全生态通用)
Grafana 支持 官方数据源插件,时序面板深度优化 官方老牌插件,监控场景最成熟 PG 数据源 + 官方插件
可视化生态 Web Console 2.0(10.0,内置 Notebook/图表) Explorer UI(1.6),Ask AI 集成 依托 PG BI 生态(Superset/Metabase/Tableau)
官方 SDK Java/Python/Go/C-C++/Rust/.NET(10.0 随 QWP 重写),Node 老 ILP 客户端 Python/Rust/Go/JS 等,Telegraf 即生态 任何 PG 驱动语言全覆盖
Kafka 集成 官方 kafka-questdb-connector Telegraf Kafka 消费者 + 插件 Kafka Connect JDBC/Debezium 生态
Flink/Spark Spark 直读 Parquet/Arrow;QWP Arrow 流出 Spark/Flink 读写 Parquet/Arrow 友好 Spark JDBC + Parquet 外部表
流处理定位 Live Views/物化视图做库内流式增量 Processing Engine 库内跑 Python 做转换/异常检测 连续聚合做库内增量物化
AI 能力 Web Console AI 助手、MCP server、coding agent skill(Claude Code/Codex/Cursor) Ask AI(3.8 支持自定义指令),自然语言查数 智能优化建议;pgvector 可与向量检索混搭
向量检索 不主打 不主打(生态侧) pgvector 同库混查,AI 特征+时序一体
社区规模 170+ OSS 贡献者,金融圈口碑 GitHub 31.6K stars、2800+ 贡献者(官方口径),监控圈装机量巨大 PG 生态加持,DBA 群体最广
托管服务 Enterprise + BYOC Cloud Serverless/Dedicated Tiger Cloud

10.2 采集链路对比

采集场景 QuestDB InfluxDB 3 TimescaleDB
服务器/容器指标 Telegraf → ILP 直送 Telegraf → ILP 原生最优 Telegraf PG 输出 / Prometheus 远程写适配
应用埋点 各语言 QWP/ILP 客户端 各语言客户端 + HTTP PG 驱动直接写,事务可靠
Kafka 管道 官方 Kafka connector 消费写 ILP Telegraf Kafka 消费 Kafka Connect JDBC sink
文件/CSV 批量 Web Console CSV 导入、REST 批量导入接口 COPY/pgloader,最强批量加载
边缘网关 轻量客户端 + 断网续传 Core 轻量可跑边缘 边缘跑 PG 偏重
幂等接入 协议去重 series+时间戳覆盖 唯一约束+ON CONFLICT

10.3 流计算与库内计算

能力 QuestDB InfluxDB 3 TimescaleDB
库内增量聚合 物化视图(多行聚一行) Processing Engine 插件/任务 连续聚合(成熟,2.23 起分批刷新更稳)
库内窗口计算 Live Views(10.0)增量维护窗口函数结果,毫秒刷新 Python Processing Engine 写转换/异常检测 连续聚合 + 用户自定义 action
库内跑代码 SQL 函数为主 内置 Python 插件系统,无需外部 Lambda PL/Python 等过程语言
异常检测 SQL 函数 + 外部 ML 消费 Arrow Processing Engine Python 直写检测逻辑 库内函数 + pgvector/MADlib 生态
与外部流平台 Kafka connector,Arrow 出流给 Flink/Spark Parquet/Arrow 开放,流平台读数据湖 JDBC + 逻辑复制/Debezium

10.4 许可证全景(务必逐版本核实,三家都变过)

许可证是这几年三家最容易踩坑的地方,以下为 2026 年 9 月前的公开状态,具体以官方 LICENSE 文件为准

许可维度 QuestDB InfluxDB 3 TimescaleDB
开源核心许可 Apache 2.0(2019 年 11 月起切换,GitHub LICENSE 明确) MIT + Apache 2.0 双许可(Core) Apache 2 Edition:Apache 2.0;Community Edition:TigerData License(TSL,源代码可见)
商业版 QuestDB Enterprise(HA、多主写入、自动分层、RBAC、SSO、SLA) InfluxDB 3 Enterprise(长程查询、集群、读副本、RBAC、合规认证) Tiger Cloud 托管;自装 Community 自用免费
开源版关键限制 无 HA/副本/自动对象分层(在 Enterprise) Core 定位近期数据:单节点、长程历史查询/集群/RBAC 在 Enterprise Apache 2 Edition 无 Hypercore 列存新 API、压缩策略、连续聚合增强等(TSL 功能);Community 禁作为托管服务转售
可否二次销售为服务 Apache 2.0 允许 MIT/Apache 允许(Core 部分) Apache 2 Edition 允许;Community(TSL)禁止转售为 DBaaS
历史许可变化 早期曾有其他许可,2019 年统一 Apache 2.0 v1/v2 时代 MIT/Apache 但核心能力与云版分立;3 代 Core 首次把新引擎开源 长期 Apache + TSL 双轨;TSL 文本随版本更新(2023-12 版),公司更名 TigerData 后 TSL 亦称 TigerData License
合规友好度 宽松许可,企业法务好过 宽松双许可,好过 双轨要分清用的是哪个 edition;TSL 有限制条款,法务需读

实操建议:合规审查时直接拉取目标版本仓库的 LICENSE 文件和 edition 对照表,别信二手文章。Timescale 特别要注意 Apache 2 Edition 与 Community Edition 的功能分界(2.22 起列存策略在 Apache 版的限制已放宽,但 Hypercore 高级能力仍在 TSL)。

10.5 生态选型速查

你的现状 生态阻力最小
已经全套 Telegraf + Grafana 监控栈 InfluxDB 3(亲儿子协议)或 QuestDB(ILP 兼容,白嫖客户端)
已经是 PostgreSQL 重度用户 TimescaleDB(驱动、ORM、DBA、备份全复用)
Kafka + Flink/Spark 数据管道 InfluxDB 3 或 QuestDB(Parquet/Arrow 开放格式最顺)
金融交易系统、要 kdb+ 替代 QuestDB(SQL 时序算子+订单簿数组最对味)
要库内 Python 实时处理 InfluxDB 3(Processing Engine 原生)
要向量+时序+业务数据同库 TimescaleDB(pgvector + 关系 + 时序三合一)

避坑指南

  1. 许可证最大的坑不是开源与否,而是"你依赖的核心功能在哪个 edition"。QuestDB 的对象存储自动分层、Influx 的长程查询和集群、Timescale 的 Hypercore 高级列存,都是社区版没有或受限的------PoC 阶段用开源版跑得欢,上生产发现关键能力要付费,是最经典的翻车。
  2. SDK 成熟度要查版本:QuestDB 10.0 的 QWP 客户端在各语言节奏不同(Java/Python 领先,Go/.NET 曾标 beta,Node 新协议跟进晚),生产语言务必先验证。
  3. 别被"AI 功能"营销带节奏:三家的 AI 目前都集中在自然语言辅助查数/控制台助手,选型决策中 AI 权重不宜超过性能、成本、生态这些硬指标。

加分点:谈生态能说出"协议即生态"------ILP 是 Influx 留给监控世界的遗产(QuestDB 也兼容它白捡采集端),PGWire 是 Postgres 世界的遗产(QuestDB/Timescale 都吃它的 BI/ORM 红利),Arrow/Parquet 是数据湖世界的遗产(Influx 3 和 QuestDB 10.0 都在向它靠拢)。生态站位决定长期红利。

面试考点:"为什么 2026 年的新时序库都拥抱 Parquet/Arrow?"------三个原因:存储计算分离后需要共享的开放文件格式(Parquet 适合对象存储);查询结果需要零拷贝对接 Python/Spark/Polars 生态(Arrow 是数据界通用语言);避免厂商锁定、降低迁移成本。Influx 3 的 FDAP 栈和 QuestDB 10.0 的 QWP Arrow IPC 都是这一趋势的产物,Timescale 则通过 PG 生态和开放导出保持中立。

第十一章 场景选型决策树:8 大场景的首选、备选与不建议

道理讲了十章,最后落一句话:你的场景到底选谁。下面 8 个高频场景逐一给结论。选型没有银弹,但有明显的甜点区和雷区。

11.1 八大场景推荐总表

场景 首选 备选 不建议/慎选 一句话理由
IoT 设备监控(百万设备遥测) InfluxDB 3 TimescaleDB ------ 高基数无硬上限+对象存储成本低+Telegraf 直采;要事务/维表 JOIN 选 Timescale
应用/基础设施 APM/监控 InfluxDB 3 QuestDB TimescaleDB(能用不甜) TIG 栈正统,tag/field 与指标模型同构,Grafana 生态最深
金融量化 tick/行情 QuestDB TimescaleDB InfluxDB 3(JOIN 弱) ASOF/订单簿二维数组/亚毫秒查询为交易桌而生;要强关系账务选 Timescale
车联网/轨迹 TimescaleDB InfluxDB 3 ------ 轨迹+订单/用户/地理(PostGIS)强关系;纯遥测大规模可考虑 Influx 3
工业互联网 QuestDB / InfluxDB 3 TimescaleDB ------ 看延迟敏感度(选 QuestDB)还是弹性/边缘(选 Influx 3);要 MES/ERP 集成选 Timescale
日志/事件分析 TimescaleDB InfluxDB 3 QuestDB(非不能不甜) 日志是半结构化文本+关系关联,PG JSONB/全文检索+事务最稳
能源/智能电表 TimescaleDB InfluxDB 3 ------ 计费要事务、户表要关系、降采样用连续聚合;纯采集侧可 Influx
AI 特征/向量+时序混合 TimescaleDB QuestDB(Arrow 出流给训练) InfluxDB 3(向量弱) pgvector 与时序同库,特征-标签-事件 JOIN 一体化

11.2 逐场景拆解

场景一:IoT 设备监控(百万级传感器/设备)

决策点 结论
核心诉求 高基数设备、持续高吞吐写入、按设备最新值、按时间聚合告警、低成本长留
首选 InfluxDB 3 的理由 无限基数架构正对设备 ID 爆炸;Parquet 对象存储让 PB 级遥测放得起;Core 轻量可下沉边缘网关;Telegraf 协议采零成本
备选 TimescaleDB 的理由 需要设备台账/工单/维保强关系时,维表 JOIN+事务是刚需;连续聚合做降采样成熟
QuestDB 适配点 单机吞吐怪兽,单区域百万设备一台机器扛写入很猛,但生态采集端要借 ILP
雷区 用 Influx v1 老经验过度担心基数;或把全部设备元数据塞 tag 导致 Parquet 文件碎片化

场景二:应用与基础设施 APM

决策点 结论
核心诉求 CPU/内存/延迟/QPS 指标,dashboard 秒级刷新,告警
首选 InfluxDB 3 的理由 监控是它的母语场景,Grafana 插件最成熟,tag/field 建模与 Prometheus 思维无缝
备选 QuestDB 的理由 Live Views(10.0)为仪表盘增量刷新设计,毫秒级图表更新,单机资源占用低
Timescale 适配点 团队全是 PG 栈、不想引入新组件时顺理成章,但纯监控表达不如前两家甜
雷区 把 trace 明细(高基数字符串)当指标点狂打,三家都扛不住无意义的超高频明细写入

场景三:金融量化 tick 与行情

决策点 结论
核心诉求 微秒/毫秒级写入与查询、成交对齐报价、订单簿深度、OHLC 聚合、回测扫历史
首选 QuestDB 的理由 金融基因纯正:ASOF/LT/WINDOW/HORIZON JOIN 解决成交-报价对齐,二维数组装订单簿,SAMPLE BY 做 K 线,官方客户就是投行和交易所
备选 TimescaleDB 的理由 交易账务、持仓、风控关系数据要 ACID 时,时序+账务同库
Influx 慎选原因 时序专用 JOIN 弱,行情对齐分析要自己拼窗口,金融函数生态空白
雷区 用监控库思维建模行情------报价是多列快照不是单值 field,模型错了后面全拧巴

场景四:车联网与轨迹

决策点 结论
核心诉求 高频 GPS 轨迹、车辆状态、行程事件、地理围栏、与订单/用户关联
首选 TimescaleDB 的理由 hypertable 装轨迹、PostGIS 做地理、外键关联车辆/订单/用户,一个 PG 全搞定
备选 InfluxDB 3 的理由 纯车端遥测超大规模上云、只要点位和聚合时,弹性+成本占优
雷区 轨迹点高频且需要原地修正(GPS 纠偏)时,纯 append 引擎要靠补偿事件设计,选 Timescale 的 UPDATE 更省心

场景五:工业互联网

决策点 结论
核心诉求 产线高频采集、边缘-中心两级、低延迟告警、与 MES/ERP 打通
双首选逻辑 延迟敏感、产线侧实时看板选 QuestDB;边缘节点多、中心云弹性、采集器杂选 InfluxDB 3
Timescale 适配点 需要和工业关系数据库、质量追溯系统做 JOIN 时
雷区 边缘节点资源极小时跑完整 PG(Timescale)偏重,轻量 Core 或单二进制 QuestDB 更现实

场景六:日志与事件分析

决策点 结论
核心诉求 半结构化文本、全文检索、字段过滤、与业务实体关联、合规留存
首选 TimescaleDB 的理由 JSONB、全文检索、事务、丰富 UPDATE/DELETE 最贴近日志治理需求
备选 InfluxDB 3 的理由 事件型指标/审计点采集规模大时可承接,但全文检索非其长项
雷区 把 TSDB 当 ELK 全文检索引擎用------三家都不是倒排全文检索专业户,超大规模日志检索请用专门搜索引擎各司其职

场景七:能源与智能电表

决策点 结论
核心诉求 千万电表周期采集、计费级准确性、户变关系、阶梯电价计算、长留审计
首选 TimescaleDB 的理由 计费要事务、户表关系要外键、电量聚合要连续聚合、审计要权限体系,全是 PG 强项
备选 InfluxDB 3 的理由 采集前置层海量入库+对象存储低成本,计费库可放在下游关系库
雷区 计费金额计算放在无事务的时序引擎里,对账时哭都来不及

场景八:AI 特征存储与向量混合

决策点 结论
核心诉求 实体特征时序化、Embedding 向量检索、特征/标签/事件 JOIN、训练数据导出
首选 TimescaleDB 的理由 pgvector + hypertable + 关系表同库,特征服务与回溯训练一体化
备选 QuestDB 的理由 QWP Arrow 零拷贝出流给 Pandas/Polars/PyTorch(官方主打"数据库到张量零拷贝"),训练数据管道极顺
Influx 现状 向量非其方向,需外接向量库
雷区 期待时序库替代专业特征平台的在线特征服务一致性能力,量级到了仍需专门 feature store

11.3 决策速查:按约束条件反推

如果你的硬约束是...... 直接选
团队只会/只愿意用 PostgreSQL TimescaleDB
已有 Telegraf/Grafana 监控栈且要最省心 InfluxDB 3
单机写入吞吐要拉满、预算敏感 QuestDB
需要完整事务/外键/存储过程 TimescaleDB
要存算分离、对象存储为主、云弹性 InfluxDB 3
金融级 ASOF JOIN/订单簿 QuestDB
开源版就要高可用集群 三家都需仔细核对(QuestDB/Influx 在商业版,Timescale 走 PG 生态自建)
许可证必须宽松且法务零障碍 QuestDB(Apache 2.0)/ InfluxDB 3 Core(MIT/Apache)
想一个库同时干业务库+时序库 TimescaleDB

避坑指南:决策树是起点不是终点。三家都在快速迭代(本文基准 2026 年 9 月),任何"绝对不能选"的结论都可能在下个大版本被改写。正式选型务必做 2-4 周 PoC:灌真实数据样本、跑真实 Top 20 查询、测故障恢复、算真实账单。

加分点:汇报选型结论时给出"首选+退出成本"分析------选 Influx 3 但数据落地 Parquet 则退出成本低;选 Timescale 则人才和 SQL 资产可平移到任何 PG;选 QuestDB 则 Apache 2.0 + 开放格式保证不被锁定。把"选错了怎么办"想清楚,比选对更显成熟。

面试考点:"如果让你给一个 50 人研发团队的中台选时序库,你怎么决策?"框架:先盘数据特征(吞吐/基数/保留期/更新频率)→ 再盘团队技能(SQL/监控/量化背景)→ 再盘生态现状(已有采集/可视化/Kafka 栈)→ 再算三年 TCO(含授权边界)→ 最后 PoC 验证 Top 查询与故障演练。直接背某家强的是初级答案,给出决策框架并说明"不同约束下结论会变"才是高级工程师。

第十二章 迁移与避坑指南:互迁成本、翻车案例与未来路线

最后一章解决两个问题:已经上了船怎么换?以及三年后这条河往哪流?

12.1 三方互迁成本矩阵

迁移路径 数据导出 SQL/方言改写 历史回灌 综合成本
Influx → QuestDB ILP 协议天然互通,可直接双写/重放 InfluxQL/Flux → SQL 重写;tag/field → SYMBOL/列 ILP 重放或 Parquet 中转 中低:协议兼容省大力,查询要重写
QuestDB → Influx 3 ILP 互通反向也可 时序 SQL → SQL/InfluxQL,ASOF 类查询要降级重写 ILP 重放 中:写入顺,金融 JOIN 语义丢失
Timescale → QuestDB PG COPY 导出 CSV/Parquet PG SQL 大部兼容(QuestDB 方言接近),存储过程/触发器/外键逻辑要外移 COPY/CSV 导入 QuestDB 中:SELECT 类好迁,过程逻辑要重构
QuestDB → Timescale CSV/Parquet 导出 方言接近 PG 反而好迁,但 ASOF/SAMPLE BY 要改成 time_bucket+窗口 COPY 灌回 中:时序算子改写量不小
Influx → Timescale 导出 Parquet/CSV,或 Telegraf 双写 tag/field 模型 → 关系表建模,Flux/InfluxQL → SQL COPY/pgloader 批量 中高:数据模型范式转换最大
Timescale → Influx PG 导出 → ILP 重放 关系模型 → measurement 重塑,外键/JOIN 逻辑全部外移 ILP 重放 高:关系资产丢失最多
任意 → 数据湖归档 三家都能落 Parquet 归档只读,查询交 Spark/DuckDB/Trino ------ 低:开放格式是共同逃生舱

迁移经验法则:写入侧迁移靠协议互通(ILP 是 Influx/QuestDB 的桥梁,Parquet 是三家共同桥梁),查询侧迁移靠方言重写,关系资产越重迁出成本越高------Timescale 的外键/存储过程在纯时序库里没有对应物

12.2 常见翻车案例合集

翻车类型 典型症状 根因 处方
基数爆炸(v1/v2 老 Influx) 内存涨、重启慢、查询超时 trace_id/用户 ID 当 tag 升高基维度为 field 或迁 3 代/换模型
SYMBOL 滥用(QuestDB) 字典内存虚高、写入变慢 近唯一值列建 SYMBOL 改普通列;9.4+ 用 posting 索引
chunk 乱序迟到(Timescale) 历史回灌极慢 压缩 chunk 频繁接收迟到数据 调整 chunk 区间/压缩策略,回灌走批量 COPY
逐条 INSERT(Timescale) 写入上不去 没用 COPY/批量 攒批 COPY,连接池收敛
Core 当全功能用(Influx 3) 长历史查询受限、无 RBAC Core 定位近期数据 长程/集群需求上 Enterprise
拿社区版设计集群(任意家) 上线才发现没 HA 没核对 edition 能力边界 架构阶段划清商业版分界线
BI 工具连不上复杂 SQL 报表报错 方言不兼容(QuestDB/Influx) PoC 拿真实报表 SQL 验,不行选 Timescale
对象存储冷查账单爆炸(Influx 3) 云账单超预期 高频冷查产生大量请求费 热缓存调优、冷热查询分层
压缩参数默认不调(Timescale) 压缩率/查询不如预期 segmentby/orderby 不匹配查询 按过滤维度 segmentby、时间 orderby
忽略协议版本(QuestDB) 新客户端特性用不上 10.0 QWP 需服务端 10.x 升级服务端再上新客户端
Flux 重投入(Influx) 技术债 Flux 在 3 代弱化 新项目直接 SQL/InfluxQL
PG 版本不匹配(Timescale) 扩展装不上 2.30 仅支持 PG16/17/18 先升 PG 再升扩展

12.3 学习曲线对照

团队画像 QuestDB 学习曲线 InfluxDB 3 学习曲线 TimescaleDB 学习曲线
SQL/Postgres 背景 平缓:方言接近 PG,学时序算子即可 中等:要理解 tag/field 模型与组件架构 几乎为零:当 PG 用,学时序函数
监控/SRE 背景 中等:要补关系建模和 SQL 平缓:模型即监控思维 中等:要学 PG 基础和关系范式
量化/kdb+ 背景 平缓:ASOF/SAMPLE BY 似曾相识 陡:模型和 JOIN 都不对味 中等:SQL 亲切但缺金融算子
数据工程背景 平缓:SQL+Parquet/Arrow 平缓:FDAP 即数据湖技术栈 平缓:PG+标准 SQL
运维负担 低:单二进制 中:Core 简单,Enterprise 组件多 中:会 PG 运维就简单

12.4 未来路线:四条明牌趋势

趋势 QuestDB 动作 InfluxDB 3 动作 TimescaleDB 动作
AI 融合 Web Console AI、MCP server、agent skill、QWP 零拷贝到张量 Ask AI 自然语言查数、Python Processing Engine 智能优化建议、pgvector 混搭
向量/AI 特征 Arrow 出流喂训练管道 生态协作 pgvector 同库混查(最实)
流批一体 Live Views + 物化视图库内流式 Processing Engine 库内实时处理 连续聚合 + 用户 action
开放格式 Parquet/Iceberg/Arrow/QWP 全开放 FDAP(Parquet/Arrow/DataFusion/Flight)原生 PG 生态 + Parquet 导出,借开放格式保持中立
云化路线 Enterprise + BYOC 存算分离 Cloud 最激进 Tiger Cloud + 对象存储分层
性能迭代重心 QWP 协议生态、列存索引、单机峰值 DataFusion 持续提速、长程查询成熟度 列存向量化、last-point 常数级、压缩并发

预判:未来三年三家不会趋同成一个样子,反而会各守甜点区------QuestDB 守低延迟高性能与开放格式阵地,InfluxDB 3 守云原生监控与遥测平台阵地,TimescaleDB 守"会 SQL 就会时序"的关系型阵地。真正的赢家是掌握开放格式(Parquet/Arrow)和标准 SQL 的用户:引擎可换,数据资产和技能资产不被锁死。

避坑指南

  1. 迁移项目最大的坑是"只迁数据不迁语义"------外键、存储过程、告警规则、连续聚合策略、降采样口径,这些隐式逻辑往往比数据本身多三倍工作量,务必清点成清单再动手。
  2. 迁移期间用双写+并行校验,不要一次性切流;时序数据按时间分区天然适合按时间段灰度切换。
  3. 上云/选型决策留好"逃生舱":坚持数据落地 Parquet 等开放格式、业务逻辑尽量用标准 SQL,三年后无论换船还是加船都从容。

加分点:聊趋势时点出一个反直觉判断------"云原生存算分离不会消灭单机极致引擎"。延迟敏感的交易/控制场景永远需要本地热路径,成本敏感的海量遥测才适合对象存储冷路径,QuestDB 和 Influx 3 看起来路线对立,其实是在服务时序世界的两个半球;Timescale 则卡在"一个团队不想维护两套数据库"的现实需求上。

面试考点:"时序数据库未来会被数据湖(Iceberg/Delta)吞并吗?"高分答案:不会简单吞并,而是分层融合------湖格式(Parquet/Iceberg)承接冷数据归档与大规模分析,专用时序引擎承接热写入、最新值、亚秒级查询和库内流处理(Live Views/Processing Engine/连续聚合)。三家都在做同一件事:热路径自研保延迟、冷路径开放保成本,SQL 和 Arrow 成为冷热两层的通用接口。能说出"热路径专用化、冷路径湖仓化"就是满分框架。

写在最后:没有神作,只有匹配

横评写到这儿,该给的表格给了、该标口径的标了、该泼的冷水泼了。最后给三句大实话:

第一,这三款都是好产品。QuestDB 把单机性能和金融时序 SQL 做到了令人尊敬的高度,Apache 2.0 开源、开放格式不锁客;InfluxDB 3 用 Rust 推倒重来的勇气和存算分离的彻底性,在云时代路线最激进;TimescaleDB 不炫技、不折腾,靠 PostgreSQL 生态和 Hypercore 双模把"团队学习成本"压到最低,是最稳的那个选择。

第二,别让任何一篇横评(包括这篇)替你拍板。本文所有数字都有立场、所有推荐都有前提。你的数据分布、你的团队技能、你的预算边界、你的历史包袱,只有你自己最清楚。带着这篇的框架去做 PoC,用真实负载复测,才是正经事。

第三,选型选的是三年后的自己好不好过。许可证会不会变、关键功能在不在商业版、数据能不能开放格式导出、团队招不招得到人------这些"无聊"的问题,比峰值写入快几倍重要得多。

相关推荐
TDengine (老段)10 小时前
TDengine 常见问题 TOP2
大数据·数据库·物联网·时序数据库·tdengine·涛思数据
物联网IoT小易12 小时前
物联网设备数据异常怎么处理?重复、乱序、断点续传与脏数据治理
物联网·mqtt·数据治理·时序数据库·物联网设备·物联网设备接入·物联网设备连接
涛思数据(TDengine)1 天前
从“极速算“到“知识沉淀“:工业 AI 实战直播(十三、十四期)
人工智能·时序数据库·tdengine·工业互联网·工业ai
姜穆澜2 天前
QuestDB完全学习指南
时序数据库
姜穆澜2 天前
InfluxDB3完全学习指南
时序数据库
TDengine (老段)3 天前
TDgpt 使用 — 部署、SQL、算法
大数据·数据库·sql·算法·时序数据库·tdengine·涛思数据
IT界的老黄牛3 天前
Prometheus TSDB 拆不出来、也存不了一年:4 条外部存储出路 + 容量测算
prometheus·时序数据库·监控·thanos·victoriametrics·remote_write
李白客3 天前
时序数据库入门:什么是 TSDB?时序库与关系型数据库对比、主流产品选型指南(2026)
数据库·oracle·时序数据库
DolphinDB4 天前
Text-to-SQL 已过时?DolphinX 正在重新定义 AI 问数
ai·时序数据库·dolphindb