QuestDB 是一个高性能、开源的 SQL 数据库,适用于金融服务、物联网、机器学习 、DevOps 和可观测性应用等场景。它兼容 PostgreSQL 的 wire 协议,也兼容 InfluxDB Line 协议以提供不受数据库模式影响的高吞吐数据获取能力,并提供用于查询、批量导入 和导出的 REST API。QuestDB 使用了 ANSI SQL ,其包含时间导向的原生扩展语言功能。 这些扩展能更简单的连接(JOIN)多个来源的关联数据以及时间序列数据。QuestDB 通过列 导向的存储模型、大规模并行的矢量执行、SIMD 指令和各种低延迟技术实现了高性能。整 个代码库是用 Java 和 C++从头开始构建的,没有任何外部依赖,并且 100% 不受垃圾回收 的影响。
我们提供了一个在线演示,其中包括最新的 QuestDB 版本 和一个 16 亿行的数据集,该数据集包括近 10 年的纽约市出租车行程轨迹可供查询。可以 使用 Docker 来快速启动一个 QuestDB 实例:
docker run -p 9000:9000 -p 9009:9009 -p 8812:8812 questdb/questdb
macOS 用户可以使用 Homebrew 来启动:
brew install questdb
brew services start questdb
QuestDB 下载页面 提供二进制文件的直接下载,并 提供其他安装和部署方法的详细信息。
你可以使用以下接口与 QuestDB 进行交互。
- web 控制台 监听在端口
9000
- REST API 监听在端口
9000
- PostgreSQL 监听在端口
8812
, 支持 wire 协议, - InfluxDB 监听在端口
9009
, 支持 line 协议的高吞吐量数据获取
下面是 时间序列基准测试套件 运行 cpu-only
用例的测试结果,基于 6 个 worker 的 AMD Ryzen 3970X 上测试对比得到:
下表显示了在 c5.metal
实例上使用 96 个线程中的 16 个线程运行 10 亿条记录的查询
执行时间。
查询 | 运行时间 |
---|---|
SELECT sum(double) FROM 1bn |
0.061 secs |
SELECT tag, sum(double) FROM 1bn |
0.179 secs |
SELECT tag, sum(double) FROM 1bn WHERE timestamp='2019' |
0.05 secs |
- QuestDB documentation: 描述了如何运行 和配置 QuestDB 的技术参考。
- 由我们的社区成员编写的教程展示了 QuestDB 的可 能应用。
- 产品路线图列出了我们目前正在 进行的任务和功能。
- Community Slack: 是一个进行技术讨论和认识其他用户 的好地方。👋
- GitHub issues: 报告 QuestDB 缺陷 或是反馈问题。
- GitHub discussions: 提案新的 特性以及查看已经构建的功能。
- Stack Overflow: 寻找常见 问题的解决方法。
我们总是乐于接受对项目的贡献,无论是源代码、文档、错误报告、功能请求还是反馈。如 果要开始贡献:
- 请看一下 GitHub 上标有 "Good first issue" 的问题。
- 阅 读贡献指南。
- 有关构建 QuestDB 的详细信息,请参 见构建说明。
- 创建 QuestDB 的一个分叉, 并提交一个 pull request,说明你的修改建议。
✨ 为了表示感谢,我们将向贡献者发送一些我们的 QuestDB 礼品,如贴纸和 T 恤衫 在这里申领
衷心感谢以下为 QuestDB 作出贡献的优秀人士: (表情符号键):
本项目遵循 all-contributors 标准. 欢迎任何形式的贡献!