questdb / questdb
questdb/questdb
QuestDB 是一个高性能开源时序数据库,支持极速数据摄入和低延迟 SQL 查询,适用于金融行情、物联网遥测和实时监控等场景。
项目概览
项目概述
QuestDB 是一个开源的高性能时序数据库,专为处理大规模时间序列数据而设计。它提供极速的数据摄入能力和低延迟的 SQL 查询,核心引擎采用零 GC 的 Java 和 C++ 实现,并支持多级存储(WAL、原生列式存储、对象存储上的 Parquet)。QuestDB 在金融行情、物联网遥测、实时监控等领域表现出色。
核心功能
- 低延迟、高吞吐的数据摄入,支持从单事件到每秒数百万事件
- 低延迟 SQL 查询,支持时序扩展(ASOF JOIN、WINDOW JOIN、HORIZON JOIN、SAMPLE BY、LATEST ON)
- SIMD 加速的并行执行引擎
- 多级存储:WAL → 原生列式存储 → Parquet(按时间分区和排序)
- 支持 PostgreSQL 协议(PGwire)和 REST API
- 支持视图、物化视图和多维数组(包括用于订单簿的二维数组)
- 提供 Web 控制台用于查询和数据管理
- Apache 2.0 开源许可,开放格式,无供应商锁定
- 内置金融函数和订单簿分析功能
适用与不适用场景
适用场景:
- 金融行情数据(tick 数据、交易、订单簿、OHLC)
- 高基数传感器/遥测数据
- 实时仪表盘和监控
- AI 编码代理的自动化数据管道和分析
不适用场景:
- 需要复杂事务处理(ACID)的传统 OLTP 应用
- 非时间序列数据的关系型数据库需求
- 需要频繁更新或删除单行数据的场景
技术架构与依赖
QuestDB 的核心引擎使用 Java 和 C++ 实现,企业版还包含 Rust 组件。它采用列式存储模型、并行向量执行、SIMD 指令和低延迟技术。QuestDB 没有第三方 Java 依赖,所有算法均基于第一性原理实现。
安装与快速开始
使用 Docker 快速启动:
docker run -p 9000:9000 -p 9009:9009 -p 8812:8812 questdb/questdb
macOS(Apple Silicon)用户可以使用 Homebrew:
brew install questdb
brew services start questdb
然后启动/停止:
questdb start
questdb stop
注意:QuestDB 仅为 Apple Silicon 提供原生库,Intel Mac 用户需使用 Docker 镜像。
典型使用方法
QuestDB 支持多种客户端和协议:
- 原生协议:QuestDB Wire Protocol (QWP),端口 9000
- 兼容协议:InfluxDB Line Protocol(端口 9000)、PostgreSQL Wire Protocol(端口 8812)、REST API(端口 9000)
- 官方客户端:Python、.NET、C/C++、Go、Java、NodeJS、Rust
- 第三方工具集成:Kafka、Redpanda、Grafana、Polars、Pandas、PowerBI、Superset、Apache Flink、Telegraf、MindsDB 等
配置与部署要点
- 生产环境配置可参考官方容量规划文档
- 支持 Docker、Kubernetes(Helm charts)、systemd、AWS、Azure、GCP、DigitalOcean、Hetzner 等部署方式
- 支持 ZFS 压缩
- 企业版提供高可用、多主摄入、冷存储集成、基于角色的访问控制、TLS 加密等高级功能
限制、风险与许可证
- 许可证:Apache License 2.0
- 无第三方 Java 依赖,但需要 Java 25 和 Maven 3 进行构建
- 仅支持 x86-64 和 ARM64 架构,macOS 仅支持 ARM64
- 社区支持:Discourse 论坛、Slack、GitHub Issues、Stack Overflow
官方链接
信息来源和分析时间
- 信息来源:GitHub 仓库 README、CONTRIBUTING.md、docs/parquet-metadata.md
- 分析时间:2026-08-24(基于最新 release 10.0.1 的发布时间)