Apache Druid

Real-time OLAP cluster built for high-concurrency dashboards, not for research joins.

by Apache Software Foundation

Last updated

From
Free
Licence
Apache-2.0
Self-hosted
Yes
Platforms
Web, CLI

What it is

Apache Druid is a distributed real-time analytics database — column-oriented storage, bitmap indexes, time-partitioned segments, and a query path designed so that a dashboard with a hundred users on it still answers in well under a second. Its own documentation names the shape it fits: high insertion rates, aggregation-heavy queries, tolerance for latencies from 100ms to seconds, time-oriented data and high-cardinality columns.

The architecture is the thing to understand before adopting it, because it is not one process. Coordinator, Overlord, Broker, Router, Historical and MiddleManager or Indexer processes each do a separate job, and three external dependencies sit underneath them: deep storage — S3, HDFS or a shared filesystem — holding every segment, a metadata database (PostgreSQL or MySQL in a cluster, embedded Derby only on a single server) holding segment and task state, and ZooKeeper for service discovery, coordination and leader election.

For market data the decisive design choice is rollup. Druid expects to aggregate rows at ingest into a chosen granularity; keeping raw prints means turning rollup off and accepting that you are using a pre-aggregation engine to store unaggregated data. That is workable, and it is not what the engine is for.

The project is healthy — 37.0.0 published in May 2026, 36.0.0 in February, and commits landing daily on master.

Pricing

No licence fee, no paid edition, no vendor to call. The bill is the cluster and the person who keeps it alive, and that is a larger number than the download suggests: three external dependencies and half a dozen process types is a platform team's workload, not an afternoon.

Managed Druid comes from Imply, founded by the project's original authors and a separate vendor from the Apache Software Foundation. Its Polaris service publishes plans from $100 per month for 25 GB and $600 per month for up to 9.6 TB with a 99.9% uptime SLA, plus metered ingestion at $0.35 per GB for the first TB each month declining to $0.15 per GB above 10 TB, storage at $0.060 per GB-month and async queries at $0.0020 per DPU-minute, after $500 of trial credit over 30 days.

Data & coverage

None. Druid supplies no market data; it ingests what you publish to it from Kafka, Kinesis or files in object storage.

Integrations

Streaming ingestion from Apache Kafka and Amazon Kinesis with exactly-once semantics is the first-class path, with batch ingestion from local files, S3, HDFS and Google Cloud Storage alongside it. Queries go over an HTTP SQL API, a native JSON query API or the bundled web console; JDBC and the dsql command-line client cover SQL tooling, and Superset, Grafana and Tableau all connect. The Python client, pydruid, is community-maintained and last published 0.6.9 in May 2024 — treat it as stable rather than active.

Limitations

  • No as-of join, and joins are broadcast. Everything but the base datasource must fit in memory, subquery results buffer on the Broker, predicates do not push past a join, and right and full outer joins in the native engine can return wrong answers.
  • Segments are immutable. Corrections are re-ingestions of an interval, not updates.
  • Operational weight is the real price. Six process types, ZooKeeper, a metadata database and deep storage, all of which have to be monitored and backed up.
  • Rollup is the grain of the system, so raw tick storage runs against its design rather than with it.
  • No market data, no symbology, no corporate actions.

Alternatives

ClickHouse does the same scanning job with one server type instead of six and has ASOF JOIN; QuestDB is the better fit for a feed writing while a dashboard reads; DuckDB if the data fits on a machine and nothing streams; kdb+ if microseconds and budget are both real.

See the rest of the tick data storage category.

Specs

Interfaces
API, Python, SQL
Export
CSV, JSON, API
Asset classes
Markets
Platforms
Web, CLI
AI features
None
Pricing verified
Capabilities verified
Coverage verified

Also from Apache Software Foundation

Also worth comparing

  • DuckDBIn-process analytical SQL over Parquet tick files, with no server to run.
  • ArcticDBVersioned Pandas frames written straight onto S3, with no server to run.
  • ClickHouseColumnar OLAP database that keeps years of ticks on disk cheaply and scans them fast.
  • DolphinDBClosed-source tick database with a vector language, as-of joins and streaming engines.
  • InfluxDB 3Line-protocol time-series database rewritten on Arrow, DataFusion and Parquet.
  • kdb+The tick database trading desks have run for 25 years, queried in q rather than SQL.

FAQ

Is Apache Druid a sensible tick database?

For serving, often; for research, rarely. It is built to ingest a stream and answer aggregate queries over it in under a second for many concurrent users, which describes a market-data dashboard or a customer-facing API. It is not built for the trade-to-quote join a backtest runs, and the documentation says as much when it warns off large fact-table joins.

Does Druid have an as-of join?

No. The datasource documentation lists inner and left joins in native queries, notes that right and full outer joins are not fully implemented and can return incorrect results, and describes the algorithm as a broadcast hash join in which everything but the leftmost datasource must fit in memory. There is no as-of operator to reach for.

What does Druid cost?

Nothing in licence fees and a great deal in operations. A cluster is six or more process types plus three external dependencies — deep storage, a metadata database and ZooKeeper — and somebody has to run all of it. That operating cost is what the managed vendors charge for.

Who sells managed Druid?

Imply, the company founded by Druid's original authors, sells Imply Polaris as a Druid-as-a-service. Its published plans start at $100 a month for 25 GB and $600 a month up to 9.6 TB with a 99.9% uptime SLA, plus usage — $0.35 per GB ingested for the first TB each month, falling to $0.15 above 10 TB, and $0.060 per GB-month of storage. It is a different vendor from the Apache project.

Can I correct a tick after it has been written?

Not in place. Druid segments are immutable; a correction means re-ingesting the affected interval and letting the new segments replace the old ones. Plan the pipeline around replayable source files rather than around updates.