Apache Druid and Apache Pinot are distributed analytical databases designed to ingest event data and serve low-latency aggregations. Either can support real-time dashboards and user-facing analytics. Architecture labels and vendor case studies cannot select a winner for a specific workload.

Build a representative proof of concept when latency, freshness, concurrency, cost, or update semantics are material. Freeze software versions and verify current documentation because both projects evolve.

Compare capabilities, not slogans

Decision areaDruidPinotWhat to test
Streaming ingestionNative streaming supervisors; published segments also reside in deep storageReal-time tables consume supported streams; events can be queried while segments consumeSource lag, event-to-query freshness, replay, partition changes, recovery
Pre-aggregationIngestion-time rollup combines rows at selected time and dimension granularityStar-tree indexes store configured pre-aggregated documents for matching query patternsStorage, build cost, supported queries, and required detail
IndexesTime partitioning, sorting, bitmap indexes, and optional indexes or sketchesForward, inverted, range, text, JSON, geospatial, and star-tree optionsIndex size, build time, pruning, and actual-query latency
UpdatesEvent-oriented correction patterns include replacement or reindexing by time rangeFull and partial upsert modes have documented table, consistency, partition, and index constraintsLate data, duplicates, deletes, corrections, memory, and invariants
SQLDruid SQL uses Apache Calcite and translates to native queries with documented limitsSingle-stage and multi-stage query paths cover different workloads with documented limitsExact production SQL, plans, failures, and resource bounds
OperationsRouter, Broker, Coordinator, Overlord, indexing services, Historicals, and deep storageController, Broker, Server, Minion, and ZooKeeper in documented deploymentsFailure domains, upgrades, rebalance, scaling, observability, operator effort

Understand rollup and star-tree

Druid rollup and Pinot star-tree are different mechanisms. Rollup combines events sharing configured time buckets and dimensions; individual events are unavailable in that rolled-up datasource. Streaming rollup is best-effort under documented conditions, while batch ingestion can provide perfect rollup for a fixed input.

A Pinot star-tree accelerates matching aggregation and group-by patterns by storing pre-aggregated documents. It adds build and storage cost and does not accelerate every query. Neither technique guarantees a fixed storage or latency improvement.

Do not infer performance from features

“Real time,” “sub-second,” and “high cardinality” are targets, not measurements. Latency depends on segment layout, selectivity, group-by cardinality, index match, aggregation, scanned time range, cache state, concurrency, network, storage, and memory. Freshness depends on source behavior, consumer lag, transforms, indexing, replicas, and recovery.

Druid is not inherently batch-only, Pinot is not inherently unsuitable for BI, and Pinot upsert should not be described as general ACID transactional analytics. Test required semantics and correctness.

Run a reproducible comparison

  1. Freeze versions and infrastructure: record image hashes, compute, disks, network, JVM, replicas, and topology.
  2. Use representative data: preserve timestamps, nulls, skew, cardinality, width, late events, duplicates, and retention.
  3. Define correctness: establish expected raw, rollup, approximate-count, upsert, and late-event results.
  4. Publish queries: include selective filters, broad scans, top-N, high-cardinality group-bys, distinct counts, joins if required, and dashboard fan-out.
  5. Measure distributions: report warm and cold p50/p95/p99 latency, errors, throughput, scanned bytes, and saturation at each concurrency.
  6. Measure ingestion: report source-to-query freshness, sustained rate, burst lag, and failure recovery.
  7. Measure storage: include replicas, deep or object storage, indexes, pre-aggregations, metadata, and build space.
  8. Exercise operations: test rebalance, schema evolution, rebuilds, upgrades, backup, access control, and observability.

Use selection heuristics as hypotheses

Shortlist Druid when its time-oriented lifecycle, ingestion-time rollup, deep-storage model, native query shapes, or existing ecosystem matches the workload. Shortlist Pinot when its real-time table model, index portfolio, star-tree design, or supported upsert semantics matches. Confirm either choice with published acceptance criteria.

Continue with focused guides

The defensible choice is the system that meets correctness, freshness, latency, concurrency, recovery, and cost targets under a reproducible test—not the one with the strongest uncited benchmark.

Originally published November 5, 2024; technically reviewed and substantially updated September 4, 2026.