高性能时序数据库-QuestDB
2025-07-18 10:45:04 阿炯

QuestDB 是用于时间序列数据的高性能开源 SQL 数据库。它使用面向列的方法、大量并行向量化执行、SIMD 指令以及一系列低延迟技术。整个代码库是从头开始构建的,没有依赖关系,并且完全没有垃圾回收。QuestDB 实现了 SQL,并使用本地扩展对其进行了时间序列扩展。主要采用Java语言编写开发并在 Apache 2.0 协议下授权使用。


它支持 PostgreSQL 有线协议、高性能 REST API,并支持 InfluxDB Line Protocol 的提取。QuestDB 使用具有免维护方案的关系模型。关系和时间序列联接使随时间推移的数据关联变得容易。写入会持久地提交到磁盘,这意味着数据是安全的,但可以立即访问。提供了超低延迟、高吞吐量和多层存储引擎,支持多种协议(如 InfluxDB 行协议、PostgreSQL 协议、REST API),并与许多工具和语言集成;非常适用于金融市场数据、应用程序指标、传感器数据、实时分析、仪表板和系统基础设施监控。


其使用原生时间序列SQL插件实现了ANSI SQL。这些 SQL 扩展语义能更简单的连接(JOIN)多个来源的关系型数据以及时间序列数据。我们通过列导向的存储模型、大规模 并行的矢量执行、SIMD 指令和各种低延迟技术实现了高性能。整个代码库是用 Java 和 C++从头开始构建的,没有任何外部依赖,并且 100% 不受垃圾回收的影响。

官方开发的questdb客户端支持多种编程语言:
.NET、C/C++、Go、Java、NodeJS、Python、Rust

连接到 QuestDB
可以使用以下接口与 QuestDB 进行交互:
web 控制台: 将会启动一个 web 控制台,默认运行在 9000 端口
InfluxDB line protocol: 支 持高性能、高吞吐量单向数据插入,默认运行在 9009 端口
REST API : 默认运行在 9000 端口
PostgreSQL wire protocol: 默认运行在 8812 端口


最新版本:9
2025年7月发布重大版本 v9.0,增加了 N 维数组、日历感知的物化视图 (materialized views)、提高了数据去重效率、实现了更智能的 JOIN,并重构了 Web 控制台的 UX。下面介绍它值得关注的新特性。

支持 N 维数组
引入真正的 N 维数组(类似 NumPy 的数组),支持零拷贝切片、转置、累积操作和聚合,适用于市场数据订单簿深度或机器学习权重快照,目前支持 DOUBLE[] 类型,更多数据类型即将推出。

二进制行协议
支持二进制 DOUBLE[]/DOUBLE 协议,提升高吞吐量摄取效率,降低带宽使用,加快服务器端处理速度。

升级物化视图
新增高效的 replace commit 机制、支持自 UNION 查询、延迟或推迟刷新,并引入三种新的视图刷新模式(TIMER、MANUAL 和 PERIOD),后者支持时区感知、日历调度的刷新。

优化数据去重
提高数据去重效率,新增优化以跳过未更改的数据,减少 I/O 开销。

改进 Web 控制台
界面焕然一新,支持多行查询同时执行、查询日志记录,以及通过右键点击运行箭头获取查询计划,便于调试。

ASOF JOIN with TOLERANCE
新增 TOLERANCE 参数,允许为匹配设置合理的时间范围,便于处理特定时间后 “过期” 的数据。

更多详情查看发行公告

官方主页:
https://questdb.com/

https://github.com/questdb/questdb