Apache Doris is an MPP analytical database for real-time reporting and ad-hoc analysis, speaking MySQL-compatible SQL over a Java front end and a C++ back end, and the project StarRocks was originally forked from.
Self-hosted as Java front ends (metadata, planning, failover) over C++ back ends (storage, execution), each scaling horizontally; version 3.0 adds a shared-storage mode with local cache over object storage. Routine Load ingests from Kafka and CDC streams. Managed options come from VeloDB Cloud and SelectDB.
How Apache Doris answers the questions OLAP Engines turns on.
| How it works | |
| Specialization | Unified real-time warehouse and lakehouse query federation |
| SQL dialect | MySQL-compatible |
| Joins | Distributed joins, cost-based optimizer |
| Updates and deletes | Unique Key model, merge-on-write; UPDATE, DELETE, partial columns |
| Ingest to queryable | Seconds: second-level freshness from Kafka Routine Load and CDC |
| Storage format | Own columnar; reads Iceberg, Hive, Hudi, Paimon; writes Iceberg and Hive |
| Compute and storage | Coupled BE nodes; 3.0 adds shared storage with local cache |
| Indexes | Prefix and ZoneMap built in; inverted, Bloom and NGram optional |
| Pre-aggregation | Aggregate Key model at write; sync and async materialized views |
| Running it | |
| Concurrent users | High: row store and short-circuit plans for point-query serving |
vs Apache Doris: Operational complexity: High · Java
vs Apache Doris: Operational complexity: High · Java
vs Apache Doris: C++