English | 简体中文 | 繁體中文 | العربية
QuestDB 是一个高性能、开源的 SQL 数据库,适用于金融服务、物联网、机器学习 、DevOps 和可观测性应用等场景。它兼容 PostgreSQL 的 wire 协议,也兼容 InfluxDB Line 协议以提供不受数据库模式影响的高吞吐数据获取能力,并提供用于查询、批量导入 和导出的 REST API。QuestDB 使用了 ANSI SQL ,其包含时间导向的原生扩展语言功能。 这些扩展能更简单的连接(JOIN)多个来源的关联数据以及时间序列数据。QuestDB 通过列导向的存储模型、大规模并行的矢量执行、SIMD 指令和各种低延迟技术实现了高性能。整个代码库是用 Java 和 C++从头开始构建的,没有任何外部依赖,并且 100% 不受垃圾回收的影响。
我们提供了一个在线演示,其中包括最新的 QuestDB 版本 和几个样本数据集:
- 一个 16 亿行的数据集,包括近 10 年的纽约市出租车行程轨迹。
- 一个即時的加密货币(比特币、以太坊)交易数据集。
- 一个包括 25 万艘船的时序地理数据集。
你可以使用 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 start // To start questdb
questdb stop // To stop questdb
QuestDB 下载页面 提供二进制文件的直接下载,并 提供其他安装和部署方法的详细信息。
你可以使用以下接口与 QuestDB 进行交互。
- web 控制台: QuestDB将会启动一个web控制台,默认运行在
9000
端口 - REST API : QuestDB也支持使用REST API 来进行交互,默认需要使用
9000
端口进行访问 - PostgreSQL wire Protocol: QuestDB也支持PostgreSQL wire protocol协议,默认运行在
8812
端口 - InfluxDB Line Protocol: QuestDB 实现了InfluxDB Line Protocol 协议来支持高性能,高吞吐量单向数据插入。默认运行在
9009
端口
下面是 时间序列基准测试套件 运行 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 标准. 欢迎任何形式的贡献!