Apache Druid is a real-time analytics database combining ideas from data warehouses, time-series databases, and log search systems, with columnar storage, time-based partitioning, and bitmap indexes serving sub-second queries over streaming data.
Self-hosted as specialized services (Brokers for queries, Historicals for segments, tasks for ingest) over deep storage such as S3 or HDFS, each role scaling independently, with ZooKeeper coordinating. Streaming ingest from Kafka or Kinesis is exactly-once into time-partitioned columnar segments. Imply offers the managed platform.
How Apache Druid answers the questions OLAP Engines turns on.
| How it works | |
| Specialization | Real-time event and time-series analytics |
| SQL dialect | Druid SQL (Calcite), plus native JSON queries |
| Joins | Broadcast in the native engine; sort-merge via MSQ and Dart |
| Updates and deletes | None: REPLACE overwrites a time range; drop segments to delete |
| Ingest to queryable | Sub-second: streaming rows queryable as the task ingests them |
| Storage format | Own segments in deep storage |
| Compute and storage | Deep storage of record; Historicals cache segments on local disk |
| Indexes | Roaring bitmap indexes on string dimensions; per-column opt-out |
| Pre-aggregation | Ingest-time rollup; in-segment projections (experimental) |
| Running it | |
| Concurrent users | High: built for user-facing apps; scale out Brokers and Historicals |
vs Apache Druid: Operational complexity: Medium · Java, C++
Same headline facts as Apache Druid
vs Apache Druid: Operational complexity: Medium · C++