# questdb
**Repository Path**: mirrors/questdb
## Basic Information
- **Project Name**: questdb
- **Description**: QuestDB 是用于时间序列数据的高性能开源 SQL 数据库
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: https://www.oschina.net/p/questdb
- **GVP Project**: No
## Statistics
- **Stars**: 24
- **Forks**: 10
- **Created**: 2021-02-19
- **Last Updated**: 2024-04-09
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
English |
简体中文 |
繁體中文 |
العربية |
Italiano |
Українська |
Español |
Português |
日本語 |
Türkçe |
हिंदी |
Tiếng Việt
---
QuestDB is the fastest growing open-source time-series database offering **blazingly fast, high
throughput ingestion** and **dynamic, low-latency SQL queries**. The entire high-performance
codebase is built from the ground up in Java, C++ and Rust with no dependencies
and zero garbage collection.
We achieve high performance via a column-oriented storage model, parallelized
vector execution, SIMD instructions, and low-latency techniques. In addition,
QuestDB is hardware efficient, with quick setup and operational efficiency.
QuestDB implements ANSI SQL with native time-series SQL extensions. These SQL
extensions make it simple to analyze, filter and downsample data, or to
correlate data from multiple sources using relational and time-series joins.
> Ready to go? Jump to the
> [Get started](#get-started) section.
QuestDB Web Console - click to launch demo
## Benefits of QuestDB
QuestDB excels with:
- financial market data
- IoT sensors with high data cardinality
- real-time dashboards
Feature highlights include:
- SQL with powerful, SIMD-optimized time-series extensions
- High-speed ingestion via the InfluxDB Line Protocol
- Strong and efficient performance on limited hardware
- Columnar storage format (native or
[Apache Parquet](https://questdb.io/glossary/apache-parquet/)), partitioned
and ordered by time
- Responsive and intuitive Web Console for query and data management, with error
handling
- Excellent performance with
[high data cardinality](https://questdb.io/glossary/high-cardinality/) - see
[benchmarks](#questdb-performance-vs-other-oss-databases)
And why use a time-series database?
Beyond performance and efficiency, with a specialized
[time-series database](https://questdb.io/glossary/time-series-database/), you
don't need to worry about:
- out-of-order data
- duplicates
- exactly one semantics
- streaming data (low latency)
- high volumes of concurrent requests
- volatile and "bursty" data
- adding new columns - change schema "on the fly" while streaming data
## Try QuestDB, demo and dashboards
The [live, public demo](https://demo.questdb.io/) is provisioned with the latest
QuestDB release and sample datasets:
- Trips: 10 years of NYC taxi trips with 1.6 billion rows
- Trades: live crypto market data with 30M+ rows per month
- Pos: geolocations of 250k unique ships over time
Use example queries or write your own!
_The public demo queries over 1.6BN rows and uses a `r6a.12xlarge` 48 vCPU and 348GB RAM instance._
| Query | Execution time |
|-------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `SELECT sum(double) FROM trips` | [0.15 secs]() |
| `SELECT sum(double), avg(double) FROM trips` | [0.5 secs]() |
| `SELECT avg(double) FROM trips WHERE time in '2019'` | [0.02 secs]() |
| `SELECT time, avg(double) FROM trips WHERE time in '2019-01-01' SAMPLE BY 1h` | [0.01 secs]() |
| `SELECT * FROM trades WHERE symbol IN ('BTC-USD', 'ETH-USD') LATEST ON timestamp PARTITION BY symbol, side` | [0.00025 secs](https://demo.questdb.io/?query=SELECT%20%2A%20FROM%20trades%20WHERE%20symbol%20IN%20%28%27BTC-USD%27%2C%20%27ETH-USD%27%29%20LATEST%20ON%20timestamp%20PARTITION%20BY%20symbol%2C%20side;&executeQuery=true) |
We also have some public, real-time demo dashboards using
our [Grafana-native](https://questdb.io/docs/third-party-tools/grafana/) plugin:
- [Real-time crypto trades:](https://questdb.io/dashboards/crypto/) executed
trades on OKX from more than 20 assets in real time
- [NYC taxi geolocation data:](https://questdb.io/dashboards/taxi/) real-time
replay of 146,393,317 taxi rides across New York City in 2016
### QuestDB performance vs. other oss databases
QuestDB performs very well in performance benchmarks compared to alternatives.
For deep dives into internals and performance, see the following blog posts:
- [QuestDB vs InfluxDB](https://questdb.io/blog/2024/02/26/questdb-versus-influxdb/)
- [QuestDB vs TimescaleDB](https://questdb.io/blog/timescaledb-vs-questdb-comparison/)
- [QuestDB vs MongoDB](https://questdb.io/blog/mongodb-time-series-benchmark-review/)
As always, we encourage you to run your own benchmarks.
## Get started
Use [Docker](https://www.docker.com/) to start quickly:
```bash
docker run -p 9000:9000 -p 9009:9009 -p 8812:8812 questdb/questdb
```
Or macOS users can use Homebrew:
```bash
brew install questdb
brew services start questdb
```
```bash
questdb start
questdb stop
```
Alternatively, to kickoff the full onboarding journey, start with our concise
[quick start guide](https://questdb.io/docs/quick-start/).
### First-party ingestion clients
QuestDB clients for ingesting data via the InfluxDB Line Protocol:
- [Python](https://questdb.io/docs/clients/ingest-python/)
- [.NET](https://questdb.io/docs/clients/ingest-dotnet/)
- [C/C++](https://questdb.io/docs/clients/ingest-c-and-cpp/)
- [Go](https://questdb.io/docs/clients/ingest-go/)
- [Java](https://questdb.io/docs/clients/java_ilp/)
- [NodeJS](https://questdb.io/docs/clients/ingest-node/)
- [Rust](https://questdb.io/docs/clients/ingest-rust/)
### Connect to QuestDB
Interact with QuestDB and your data via the following interfaces:
- [Web Console](https://questdb.io/docs/web-console/) for an interactive SQL
editor and CSV import on port `9000`
- [InfluxDB Line Protocol](https://questdb.io/docs/reference/api/ilp/overview/)
for streaming ingestion on port `9000`
- [PostgreSQL Wire Protocol](https://questdb.io/docs/reference/api/postgres/)
for programmatic queries on port `8812`
- [REST API](https://questdb.io/docs/reference/api/rest/) for CSV import and
cURL on port `9000`
### Popular third-party tools
Popular tools that integrate with QuestDB include:
- [Apache Kafka](https://questdb.io/docs/third-party-tools/kafka/)
- [Grafana](https://questdb.io/docs/third-party-tools/grafana/)
- [Superset](https://questdb.io/docs/third-party-tools/superset/)
- [Telegraf](https://questdb.io/docs/third-party-tools/telegraf/)
- [Apache Flink](https://questdb.io/docs/third-party-tools/flink/)
- [qStudio](https://questdb.io/docs/third-party-tools/qstudio/)
- [MindsDB](https://questdb.io/docs/third-party-tools/mindsdb/)
### End-to-end code scaffolds
From streaming ingestion to visualization with Grafana, start with code
scaffolds in from our
[quickstart repository](https://github.com/questdb/questdb-quickstart).
### Configure QuestDB for production workloads
Find our
[capacity planning](https://questdb.io/docs/deployment/capacity-planning/) to
fine-tune QuestDB for production workloads.
### QuestDB Enterprise
For secure operation at greater scale or within larger organizations.
Additional features include:
- multi-primary ingestion
- read replica(s)
- cold storage integration
- role-based access control
- TLS encryption
- native querying of Parquet files via object storage
- support SLAs, enhanced monitoring and more
Visit the [Enterprise page](https://questdb.io/enterprise/) for further details
and contact information.
## Additional resources
### 📚 Read the docs
- [QuestDB documentation:](https://questdb.io/docs/) begin the journey
- [Product roadmap:](https://github.com/orgs/questdb/projects/1/views/5) check
out our plan for upcoming releases
- [Tutorials:](https://questdb.io/tutorial/) learn what's possible with QuestDB,
step by step
### ❓ Get support
- [Community Discourse forum:](https://community.questdb.io/) join technical
discussions, ask questions, and meet other users!
- [Public Slack:](https://slack.questdb.io/) chat with the QuestDB team and
community members
- [GitHub issues:](https://github.com/questdb/questdb/issues) report bugs or
issues with QuestDB
- [Stack Overflow:](https://stackoverflow.com/questions/tagged/questdb) look for
common troubleshooting solutions
### 🚢 Deploy QuestDB
- [AWS AMI](https://questdb.io/docs/guides/aws-official-ami)
- [Google Cloud Platform](https://questdb.io/docs/guides/google-cloud-platform)
- [Official Docker image](https://questdb.io/docs/get-started/docker)
- [DigitalOcean droplets](https://questdb.io/docs/guides/digitalocean)
- [Kubernetes Helm charts](https://questdb.io/docs/guides/kubernetes)
## Contribute
Contributions welcome!
We appreciate:
- source code
- documentation (see our
[documentation repository](https://github.com/questdb/documentation))
- bug reports
- feature requests or feedback.
To get started with contributing:
- Have a look through GitHub issues labelled
"[Good first issue](https://github.com/questdb/questdb/issues?q=is%3Aissue+is%3Aopen+label%3A%22Good+first+issue%22)"
- For Hacktoberfest, see the relevant
[labelled issues](https://github.com/questdb/questdb/issues?q=is%3Aissue+is%3Aopen+label%3Ahacktoberfest)
- Read the
[contribution guide](https://github.com/questdb/questdb/blob/master/CONTRIBUTING.md)
- For details on building QuestDB, see the
[build instructions](https://github.com/questdb/questdb/blob/master/core/README.md)
- [Create a fork](https://docs.github.com/en/github/getting-started-with-github/fork-a-repo)
of QuestDB and submit a pull request with your proposed changes
- Stuck? Join our [public Slack](https://slack.questdb.io/) for assistance
✨ As a sign of our gratitude, we send
**[QuestDB swag](https://questdb.io/community)** to our contributors!
A big thanks goes to the following wonderful people who have contributed to
QuestDB [emoji key](https://allcontributors.org/docs/en/emoji-key):
This project adheres to the
[all-contributors](https://github.com/all-contributors/all-contributors)
specification. Contributions of any kind are welcome!