Skip to content

Latest commit

 

History

6,312 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
QuestDB Logo

 

Apache 2.0 license Latest release Docker pulls QuestDB community Slack QuestDB open source contributors

English | 简体中文


QuestDB is the open-source, low-latency time-series database on open formats. It ingests millions of events per second, computes on live data in milliseconds, and keeps years of history queryable. One SQL engine spans ingestion, stream processing, and tiered storage.

The engine is zero-GC Java with C++ and Rust on the hot paths. Data lives in memory-mapped, time-partitioned columns. Queries run across all cores with SIMD and JIT-compiled filters. There are no third-party dependencies on the data path.

Storage is tiered: a parallel write-ahead log, native columnar partitions, and Apache Parquet. In open source you convert partitions to Parquet with ALTER TABLE, or create a table in Parquet directly. QuestDB Enterprise converts cold partitions automatically and tiers them to object storage. Parquet, Apache Iceberg, and Apache Arrow keep the data open to any tool.

Measured on QuestDB 10.0 over QWP:

Source
Peak ingestion per instance 19M rows/sec QWP vs ILP ingestion benchmark
Query results streamed to Arrow 220M rows/sec Streaming 500 million rows into Arrow
500M rows streamed 2.3 s same post
First Arrow batch 32 ms same post

Get started

Use Docker to start quickly:

docker run -p 9000:9000 -p 8812:8812 questdb/questdb

Or macOS users on Apple Silicon can use Homebrew:

brew install questdb
brew services start questdb
questdb start
questdb stop

QuestDB bundles native libraries for Apple Silicon only. On an Intel Mac, use the Docker image above.

For the full walkthrough, start with the quick start guide.

 

QuestDB Web Console showing a live technical-analysis dashboard, schema explorer, and monitoring panel

QuestDB Web Console - click to launch demo

 

New in QuestDB 10.0: the QuestDB Wire Protocol (QWP), one binary columnar protocol for writes and for Arrow reads, plus native arrays and live views in beta. Release notes.

Ingress and egress over QWP

QWP is a binary columnar protocol over WebSocket. The same connection writes rows in and streams query results back out as columns. The Python client returns those columns as Apache Arrow by default, and Rust and C/C++ can enable it with a flag.

On the way in, the QWP vs ILP ingestion benchmark measures 19M rows/sec over the network, and that peak holds from one thousand to one million series. On the way out, Streaming 500 million rows into Arrow measures 220M rows/sec with eight readers, with the first batch after 32 ms and client memory flat however large the result. The QWP overview covers the protocol design.

What QuestDB does

One engine covers the full lifecycle of the data:

  • Capture. Ingest millions of ordered and out-of-order events per second without pre-aggregation. Deduplication and out-of-order correction are built in.
  • Compute. Transform, enrich, and aggregate events as they arrive. Materialized views aggregate by time slice, many rows in and one row out. Live views run window functions such as indicators, one row in and one row out, on an in-memory tier.
  • Query. Run time-series SQL across live and historical data with predictable low latency.
  • Retain. Keep the complete record online in native storage and Parquet, queried through the same SQL. Enterprise tiers cold partitions to object storage automatically.

The SQL is standard, extended where time series needs it: SAMPLE BY, LATEST ON, ASOF JOIN, WINDOW JOIN, HORIZON JOIN, materialized views, live views, and n-dimensional arrays.

Both queries run on the live demo:

-- 15-minute OHLCV bars for EURUSD, today
SELECT timestamp, symbol,
  first(price) AS open,
  max(price) AS high,
  min(price) AS low,
  last(price) AS close,
  sum(quantity) AS total_volume
FROM fx_trades
WHERE symbol = 'EURUSD'
  AND timestamp IN '$today'
SAMPLE BY 15m;

-- Match each trade to the most recent quote by timestamp
SELECT t.timestamp, t.symbol, t.price, q.bid_price, q.ask_price
FROM fx_trades t
ASOF JOIN core_price q ON (symbol)
WHERE t.timestamp IN '$today';

Where it runs:

A time-series engine takes care of what a general database leaves to you: out-of-order data, deduplication and exactly-once semantics, continuous ingest under concurrent queries, bursty load, and schema changes while streaming.

Try QuestDB, demo and dashboards

The live, public demo runs the latest QuestDB release on sample datasets. Scan more than 2 billion rows in milliseconds:

  • Trades: live crypto trades with 30M+ rows per month (OKX exchange)
  • FX order book: live charts with orderbook FX pairs.
  • Trips: 10 years of NYC taxi trips with 1.6 billion rows

We also have some public, real-time demo dashboards using our Grafana-native plugin:

QuestDB performance vs. other databases

TSBS ingestion at 100,000 hosts with 32 workers on one AWS r8a.8xlarge (32 vCPU, 256 GB RAM). Competitors benchmarked August 2026, QuestDB 9.3.3 on the same instance.

Engine Version Ingestion rate
QuestDB 9.3.3 8.59M rows/sec
ClickHouse 26.7.5.10 1.75M rows/sec
TimescaleDB 2.29.1 1.08M rows/sec
InfluxDB 1.12.4 541K rows/sec

The full comparisons, ingestion and queries:

As always, we encourage you to run your own benchmarks.

AI coding agents

QuestDB works with Claude Code, Codex, Cursor, and any MCP client. There are two ways in.

Run SQL against the database from your agent. Install the QuestDB skill. It teaches the agent QuestDB's SQL dialect and how to inspect a schema. The agent then executes SQL through the REST API.

npx skills add questdb/skills

Prototype in the Web Console. For notebooks and SQL prototyping driven by the agent directly, connect it to the Web Console MCP server.

Setup for each agent is in the coding agents guide.

Connect and integrate

First-party clients

QuestDB clients for ingesting data and running queries over the QuestDB Wire Protocol:

Connect to QuestDB

See the Connect overview for the full picture.

The QuestDB Wire Protocol (QWP) is the native protocol and the recommended way to talk to QuestDB. It is binary, streams in both directions over a single connection on port 9000, and covers ingestion and queries through one connect string. The first-party clients listed above speak it.

QuestDB also speaks compatibility protocols, so existing tooling works unchanged:

  • PostgreSQL Wire Protocol on port 8812: run queries from any Postgres driver such as psycopg, JDBC or pgx, and from BI tools and ORMs. Inserts work too, but slower than QWP.
  • InfluxDB Line Protocol on port 9000, for collectors and pipelines that already emit ILP
  • REST API on port 9000, for HTTP scripting, cURL, and CSV import

For interactive use, the Web Console provides a SQL editor, charts, and CSV import on port 9000.

Popular third-party tools

Ingest from:

Query from:

The integrations overview lists the rest.

End-to-end code scaffolds

From streaming ingestion to visualization with Grafana, start with code scaffolds from our quickstart repository.

Configure QuestDB for production workloads

Find our capacity planning to fine-tune QuestDB for production workloads.

QuestDB Enterprise

The QuestDB you already run, hardened for production. Enterprise adds:

  • high availability: replication, read replicas, automatic failover
  • multi-tier storage at petabyte scale: cold partitions tier automatically to Parquet on object storage and stay queryable in place
  • security and governance: role-based access control, TLS, SSO, audit logs
  • 24/7 support with a 99.9% uptime SLA

Run it on-prem, as a managed service, or inside your own AWS or Azure account with Bring Your Own Cloud. See the feature comparison and the Enterprise page.

Additional resources

📚 Read the docs

❓ Get support

🚢 Deploy QuestDB

Contribute

Contributions welcome!

We appreciate:

To get started with contributing:

✨ As a sign of our gratitude, we send QuestDB swag to our contributors!

A big thanks goes to the following wonderful people who have contributed to QuestDB emoji key:

Image
clickingbuttons

💻 🤔 📓
Image
ideoma

💻 📓 ⚠️
Image
tonytamwk

💻 📓
Image
sirinath

🤔
Image
igor-suhorukov

💻 🤔
Image
mick2004

💻 📦
Image
rawkode

💻 🚇
Image
solidnerd

💻 🚇
Image
solanav

💻 📖
Image
shantanoo-desai

📝 💡
Image
alexprut

💻 🚧
Image
lbowman

💻 ⚠️
Image
chankeypathak

📝
Image
upsidedownsmile

💻
Image
Nagriar

💻
Image
piotrrzysko

💻 ⚠️
Image
mpsq

💻
Image
siddheshlatkar

💻
Image
Yitaek

💡
Image
gabor-boros

💡
Image
kovid-r

💡
Image
TimBo93

🐛 📓
Image
zikani03

💻
Image
jaugsburger

💻 🚧
Image
TheTanc

📆 🖋 🤔
Image
davidgs

🐛 🖋
Image
kaishin

💻 💡
Image
bluestreak01

💻 🚧 ⚠️
Image
patrickSpaceSurfer

💻 🚧 ⚠️
Image
chenrui333

🚇
Image
bsmth

📖 🖋
Image
Ugbot

💬 📓 📢
Image
lepolac

💻 🔧
Image
tiagostutz

📓 🐛 📆
Image
Lyncee59

🤔 💻
Image
rrjanbiah

🐛
Image
sarunas-stasaitis

🐛
Image
RiccardoGiro

🐛
Image
duggar

🐛
Image
postol

🐛
Image
petrjahoda

🐛
Image
t00

🐛
Image
snenkov

📓 🐛 🤔
Image
marregui

💻 🤔 🎨
Image
bratseth

💻 🤔 📓
Image
welly87

🤔
Image
fuzzthink

🤔 📓
Image
nexthack

💻
Image
g-metan

🐛
Image
tim2skew

🐛 📓
Image
ospqsp

🐛
Image
SuperFluffy

🐛
Image
nu11ptr

🐛
Image
comunidadio

🐛
Image
mugendi

🤔 🐛 📖
Image
paulwoods222

🐛
Image
mingodad

🤔 🐛 📖
Image
houarizegai

📖
Image
jjsaunier

🐛
Image
zanek

🤔 📆
Image
Geekaylee

📓 🤔
Image
lg31415

🐛 📆
Image
null-dev

🐛 📆
Image
ultd

🤔 📆
Image
ericsun2

🤔 🐛 📆
Image
giovannibonetti

📓 🐛 📆
Image
wavded

📓 🐛
Image
puzpuzpuz

📖 💻 📓
Image
rstreics

💻 🚇 📖
Image
mariusgheorghies

💻 🚇 📖
Image
pswu11

🖋 🤔 🎨
Image
insmac

💻 🤔 🎨
Image
eugenels

💻 🤔 🚧
Image
bziobrowski

💻 📆
Image
Zapfmeister

💻 📓
Image
mkaruza

💻
Image
DylanDKnight

📓 🐛
Image
enolal826

💻
Image
glasstiger

💻
Image
argshook

💻 🤔 🎨 🐛
Image
amunra

💻 📖 🐛
Image
GothamsJoker

💻
Image
kocko

💻
Image
jerrinot

💻 🤔 🐛
Image
rberrelleza

💻
Image
Cobalt-27

💻
Image
eschultz

💻
Image
XinyiQiao

💻
Image
terasum

📖
Image
PlamenHristov

💻
Image
tris0laris

📝 🤔
Image
HeZean

💻 🐛
Image
iridess

💻 📖
Image
selmanfarukyilmaz

🐛
Image
donet5

🤔 🐛
Image
Zahlii

🐛
Image
salsasepp

🐛
Image
EmmettM

🐛 ⚠️
Image
robd003

🤔
Image
AllenEdison

🐛
Image
CSharpDummy

🐛
Image
shimondoodkin

🐛 🤔
Image
huuhait

🐛 🤔
Image
alexey-milovidov

🐛
Image
suconghou

🐛
Image
allegraharris

💻
Image
oliver-daniel

💻
Image
kerimsenturk5734

📖

This project adheres to the all-contributors specification. Contributions of any kind are welcome!