QuestDB 10.0 介绍与选型指南
QuestDB 10.0 介绍与选型指南:官方资料溯源的时序数据库核心架构、QWP 统一二进制协议与 Live Views、快速上手与适用限制,以及与 InfluxDB、TimescaleDB、ClickHouse 的量化选型对比(数据查询日期 2026-10-19)。
QuestDB 10.0 介绍与选型指南
一、信息基准
1.1 查询说明
- 查询日期:2026-10-19。
- 信息获取方式:纯官方资料溯源(QuestDB 官方站点 questdb.com、官方文档站、GitHub 官方仓库 questdb/questdb 发行页),本文不做本地安装与运行实测。
- 版本结论:本次介绍的版本为 QuestDB 10.0 系列,最新补丁 10.0.1(2026-08-24 发布);10.0.0(2026-08-06 发布)为一个大版本,带来 QWP 统一协议、Live Views 与 Web Console 2.0 三项 GA/重要特性。
1.2 版本依据
| 项目 | 实查结果(2026-10-19) | 来源 |
|---|---|---|
| 最新补丁 | 10.0.1(2026-08-24) | github.com/questdb/questdb/releases/tag/10.0.1 |
| 系列时间线 | 10.0.0(2026-08-06)、10.0.1(2026-08-24) | github.com/questdb/questdb/tags |
| 上一稳定线 | 9.4.0(2026-05-18)至 9.4.3(2026-06-15);9.3 线 2026 年内发 9.3.2 至 9.3.5 | github.com/questdb/questdb/tags |
| 代码仓库 | questdb/questdb | github.com/questdb/questdb |
| 开发语言 | Java(GitHub 仓库语言标注) | GitHub 仓库 API |
| 开源许可 | Apache License 2.0 | 仓库 LICENSE |
1.3 官方来源清单
二、软件概述
本文介绍的是 QuestDB 10.0(开源社区版,最新补丁 10.0.1,2026-08-24 发布)。
QuestDB 是一款开源高性能时序数据库(TSDB),面向指标、事件与实时分析负载:官方站点口径为「每服务器每秒摄取数百万事件、毫秒级对活数据做计算、并可长期查询历史记录」,一个 SQL 引擎同时覆盖消息摄取、流处理与分层存储(来源:questdb.com,2026-10-19 查询)。它以列式存储按时间分区组织数据,支持标准 SQL 查询,项目由 QuestDB 公司主导,开源版以 Apache License 2.0 发布,同时提供商业版 QuestDB Enterprise。
QuestDB 在 GitHub 上拥有 17440 stars、1671 forks(2026-10-19 实查,questdb/questdb 仓库 API),官方定位场景以资本市场(行情/交易数据)、航空航天与能源基础设施等高吞吐低延迟时序负载为主。10.0 版本官方口号「one binary protocol, in and out」,即引入统一的 QuestDB Wire Protocol(QWP)承载读写两个方向(来源:10.0.0 发行说明)。
三、核心架构
3.1 列式存储与时间分区
- 列式表引擎(Cairo):数据按列组织、按 designated timestamp(指定时间戳列)分区,天然适配时间范围扫描与保留策略;官方发行说明中可见分区(partition)压缩、
TO REMOTE存储策略分级等机制。 - WAL 表:写路径经 WAL 保证持久化与一致性,10.0 的 Live Views 亦以 WAL 表为底座(10.0.0 发行说明)。
- 开放格式:官方站点强调与 Apache Parquet、Iceberg、Arrow 的互通,历史数据可用开放格式长期保存(questdb.com,2026-10-19 查询)。
3.2 接口与协议
| 接口 | 说明 |
|---|---|
| QWP(QuestDB Wire Protocol) | 10.0 新增:WebSocket 上的二进制列式协议,读写同连接双向承载,复用 HTTP 端口 9000,无需新增端口;Java/C++/Rust/Python 客户端完整支持,Go/.NET 为 Beta |
| ILP(InfluxDB Line Protocol) | TCP/HTTP 高吞吐文本摄取协议,保留向后兼容 |
| PostgreSQL Wire | 8812 端口,兼容 PG 协议的查询入口,保留兼容 |
| REST API / Web Console | HTTP 端口 9000:/exec、/imp、/write、/ping 等;Web Console 2.0 内置 Notebooks 与 MCP 编码代理集成 |
3.3 高可用与容错
- QWP 客户端内置 store-and-forward 缓冲与多地址自动故障转移:断网期间数据本地留存、恢复后重放,配合
request_durable_ack端到端持久确认,官方称在 Enterprise 部署下可实现约 0 秒 RPO(10.0.0 发行说明)。 - 主副本复制与高可用拓扑由商业版 Enterprise 提供,开源版聚焦单机极致性能。
四、功能特性
4.1 10.0 三大主线特性(GA)
- QWP 统一线路协议:全类型化列式帧 + 压缩,官方基准称同一行数据较 ILP 节省 3-4 倍空间、单连接摄取可达千万行/秒量级;查询方向可达 2 亿行/秒以上的 Arrow 流式出口(10.0.0 发行说明与官方基准博客)。
- Live Views(Beta):对窗口函数结果集做增量维护与缓存,毫秒级刷新延迟,补齐 Materialized Views(聚合类物化视图)之外的仪表盘/指标计算场景;
CREATE LIVE VIEW ... FLUSH EVERY 1s IN MEMORY 5s语法支持锚定窗口(如按日重置的累计聚合)。 - Web Console 2.0:Jupyter 风格 Notebooks(SQL 单元格 + 图表 + 自动刷新,可当活动仪表盘用)、与编码代理(coding agent)的 MCP 集成。
4.2 SQL 与性能
- 时序 SQL 能力:
LATEST ON最新行检索、SAMPLE BY降采样、ASOF/LT/SPLICE 时间连接、窗口函数与物化视图等(官方 SQL 文档目录)。 - 10.0.1 持续优化:高基数窗口查询与 Live View 刷新(官方基准称 380 万账户场景批次刷新从 4.43s 降至 0.48s)、有序
UNION ALL流式合并免排序(PR 基准 8-9 倍)、DECIMAL 类型全链路补强(10.0.1 发行说明)。
4.3 运维特性
- 去重与乱序修正:官方站点强调 deduplication 与 out-of-order correction 内建,适配行情类乱序数据。
- 分层存储:
TO REMOTE存储策略可将历史分区转存对象存储(Parquet/Iceberg 开放格式),本地引擎与远端历史统一查询。 - 配置体系完整(server.conf 参数化),社区版单二进制/Docker 交付;本站有 《QuestDB 10.0.1 配置参数详解》 可供展开参考。
五、快速上手
以下示例转述自官方发行说明与官方文档(https://questdb.com/docs/ ),本文不做本地实测。
5.1 获取与启动
官方文档提供的 Docker 最小启动方式(镜像 questdb/questdb,映射 HTTP 9000、ILP TCP 9009、PG wire 8812 三个默认端口):
docker run -p 9000:9000 -p 9009:9009 -p 8812:8812 \
-v "$(pwd)/questdb_root:/var/lib/questdb" \
questdb/questdb
启动后 Web Console(10.0 为 2.0 版)位于 http://localhost:9000,可直接执行 SQL 与查看数据。
5.2 QWP 写入与查询(Java 客户端)
10.0.0 发行说明给出的 QWP 最小示例:写方向建 Sender 逐行发数,读方向建 Query 绑定参数查询,同一连接句柄复用:
try (QuestDB db = QuestDB.connect("ws::addr=localhost:9000;")) {
try (Sender sender = db.borrowSender()) {
sender.table("trades").symbol("symbol", "ETH-USD")
.doubleColumn("price", 2615.54).atNow();
}
try (Query q = db.borrowQuery()) {
q.sql("SELECT price FROM trades WHERE symbol = $1")
.binds(b -> b.setVarchar(0, "BTC-USD"))
.handler(handler).submit().await();
}
}
5.3 SQL 与验证
完成写入后可在 Web Console 执行 SELECT ... FROM trades LATEST ON timestamp PARTITION BY symbol 验证数据;REST API、ILP HTTP(/write)与 PG wire(8812)三条旧路径在 10.0 中全部保留。完整步骤见官方文档 https://questdb.com/docs/ ;本站的实操命令速查可参考 《QuestDB 10.0.1 常用命令与 API 详解》。
六、适用场景与限制
6.1 适用场景
- 交易与行情系统:极高吞吐摄取 + 乱序修正 + 逐笔历史留存,官方重点打磨的资本市场场景。
- 实时监控与仪表盘:Live Views + 物化视图毫秒级刷新,替代外部流处理层做窗口/聚合计算。
- IoT/工业遥测:ILP 兼容 InfluxDB 生态写入习惯,开放格式(Parquet/Iceberg)长期归档。
- 低延迟分析查询:SQL + 列式 + 时间分区,适合以时间为第一维度的即席分析。
6.2 限制与注意事项
- 通用性弱于 PostgreSQL/MySQL:无二级通用索引生态与事务型 OLTP 语义,业务主数据仍需主库承载。
- 高可用主副本与部分企业能力在商业版 Enterprise,开源版以单机为主,跨机横向扩展需求需评估 Enterprise 或外部分片。
- QWP 客户端矩阵仍在铺开:Go/.NET 为 Beta,Node.js 尚未支持(10.0.0 发行说明客户端状态表),存量语言接入前需核对。
- 10.0 刚完成大版本切换(协议/控制台/类型体系均有 Breaking Changes 清单),从 9.x 升级应逐项核对官方破坏性变更说明。
七、同类选型对比
7.1 候选概览
| 产品 | 定位 | 开源许可 |
|---|---|---|
| QuestDB 10.0 | Java 高性能时序数据库,SQL + 统一二进制协议 | Apache-2.0 |
| InfluxDB 3 | Rust 重构时序平台,Parquet + 对象存储架构 | Apache-2.0 / MIT(Core 开源版) |
| TimescaleDB 2.30 | PostgreSQL 时序扩展,复用 PG 生态 | Apache-2.0 + Timescale License 双许可 |
| ClickHouse 26.9 | 通用列式 OLAP,时序是其中一类负载 | Apache-2.0 |
7.2 量化对比(2026-10-19 实查)
| 维度 | QuestDB 10.0 | InfluxDB 3 | TimescaleDB | ClickHouse |
|---|---|---|---|---|
| GitHub stars | 17440(questdb/questdb) | ≈32k(influxdata/influxdb,shields.io 徽标,2026-10-19) | 23690(timescale/timescaledb) | 50k(ClickHouse/ClickHouse,shields.io 徽标,2026-10-19) |
| 最近发版 | 10.0.1(2026-08-24) | v3.12.1(2026-10-14/15,官方发布说明「v3.12.1 | 10-14-26」) | 2.30.2(2026-09-29) |
| 版本节奏 | 大版本一年一档,补丁月级 | 3.x 每月级小版本,Core/Enterprise 同流发布 | minor 约月度、补丁周级 | 每日多构建、四版本线并行(stable/LTS) |
| 技术栈 | Java | Rust(Arrow/DataFusion 生态) | C(PostgreSQL 扩展) | C++ |
| 部署形态 | 单二进制/Docker,单机极致 + 商业版 HA | Core 单节点 / Enterprise 集群 | 依附 PostgreSQL 实例(云/自建均可) | 分布式集群(重型) |
| 查询语言 | SQL(+PG wire 兼容) | SQL + InfluxQL | 全量 PostgreSQL SQL | SQL 方言 |
(stars 与发版时间取自各项目 GitHub Releases/Tags 页面、官方发布说明与 shields.io 徽标实查;许可见各自仓库 LICENSE 说明。)
7.3 选型建议
以行情、逐笔、遥测类「写多读快」为主、追求单机极简运维与毫秒级窗口计算的,QuestDB 的单二进制 + QWP 组合投入产出比高;已绑定 InfluxDB 生态(Telegraf/InfluxQL)或需要对象存储上的 Parquet 原生架构,可选 InfluxDB 3(本站有 《InfluxDB 3.12.1 介绍与选型指南》);希望完全复用 PostgreSQL 的运维、备份与 SQL 生态、时序只是一部分负载的,TimescaleDB 是最低迁移成本的选择;而负载本质是通用 OLAP 分析、时序只是其中一类查询时,ClickHouse(本站有 《ClickHouse 26.9 介绍与选型指南》)的生态与算力纵深更合适——但要注意其集群运维复杂度显著高于单机时序库。
八、参考链接
- 官方站点:https://questdb.com/
- 官方文档:https://questdb.com/docs/
- 官方发布说明页:https://questdb.com/release-notes/
- 源码仓库:https://github.com/questdb/questdb
- 10.0.0 发行说明:https://github.com/questdb/questdb/releases/tag/10.0.0
- 10.0.1 发行说明:https://github.com/questdb/questdb/releases/tag/10.0.1
- QWP 基准博客:https://questdb.com/blog/qwp-vs-ilp-ingestion-benchmark/
- InfluxDB 仓库:https://github.com/influxdata/influxdb
- TimescaleDB 仓库:https://github.com/timescale/timescaledb
- ClickHouse 仓库:https://github.com/ClickHouse/ClickHouse