Apache Druid vs Kafka Streams
Apache Druid
druid.apache.orgKafka Streams
kafka.apache.orgSide by side
| Figure | Apache Druid | Kafka Streams |
|---|---|---|
| Price from | Free | Free |
| Free plan | Yes | Yes |
| Free trial | — | — |
| Open source | — | — |
| Web | Yes | — |
| Windows | — | Yes |
| macOS | Yes | Yes |
| Linux | Yes | Yes |
| API | Yes | — |
| Self-hosted | Yes | Yes |
| Plans published | 1 | 1 |
| Spec score · Stream Analytics Software | 9.0 (#2) | 7.9 (#15) |
| Architecture | Loosely coupled ingestion, query, and orchestration components with deep storage support scale-up and scale-out. | Kafka Streams requires no separate processing cluster and uses Kafka as its internal messaging layer. |
| Deployment | Druid can run on commodity hardware in *NIX environments and is designed to run in AWS, GCP, Azure, and other cloud environments. | Kafka Streams applications can be deployed to containers, virtual machines, bare metal, or cloud environments. |
| Integrations | Core extensions support systems and formats including S3, HDFS, Google Cloud Storage, Azure, Kafka, Kinesis, Avro, ORC, Parquet, MySQL, and PostgreSQL. | Kafka's ecosystem includes tools for stream processing, Hadoop integration, monitoring, and deployment, and Kafka Connect provides connectors for external systems. |
| License | Apache Druid and its documentation are licensed under the Apache License, Version 2.0. | Apache Software Foundation software is licensed under the Apache License 2.0. |
| Purpose | Apache Druid is a high-performance real-time analytics database for sub-second queries on streaming and batch data at scale. | Kafka Streams is a client library for building applications and microservices whose input and output data are stored in Kafka clusters. |
| Security | Security features include TLS, authentication, and authorization, but they are disabled by default and the documentation says to configure them for production. | Kafka Streams natively integrates with Kafka security features, including encryption in transit, client authentication, and client authorization. |
| Support | The project directs users to its community network for help using Druid. | The Kafka project provides user, developer, JIRA, and commit mailing lists for community support and project communication. |
Plans
In their own words
Apache Druid
Apache Druid is a free, open-source analytics database for querying streaming and batch data. It is designed to return OLAP queries in milliseconds, including on high-cardinality datasets with billions to trillions of rows. The project describes applications ranging from hundreds to 100,000 queries per second. Native Apache Kafka and Amazon Kinesis integrations support low-latency ingestion and querying as data arrives. Druid organizes ingested data into columnar, time-indexed, encoded and compressed storage. Queries can use Druid SQL or JSON-over-HTTP, and joins are available during ingestion or at query time. Its web console can load data, manage datasources and tasks, show server status and run queries. Extensions connect to storage, databases and formats including S3, HDFS, Azure, PostgreSQL, Avro, ORC and Parquet. Druid can be self-hosted on Linux, macOS and other Unix-like systems; Windows is not supported. The local quickstart needs at least 6 GiB of RAM and Java 17. Production security controls require configuration.
Kafka Streams
Kafka Streams is a free client library for building applications and microservices that use data stored in Kafka clusters. It processes Kafka data with event-time handling, windowing, and real-time queries of application state. The Streams DSL provides operations such as mapping, filtering, joins, and aggregations, while the Processor API supports custom processors and state stores. Fault-tolerant local state supports stateful work such as windowed joins and aggregations, and the library offers exactly-once processing semantics. Applications can run on one machine or scale across multiple machines, and can be deployed in containers, virtual machines, on bare metal, or in cloud environments. Kafka Streams uses Kafka as its internal messaging layer and does not require a separate processing cluster. It supports Java and Scala and integrates with Kafka security features for encryption in transit, client authentication, and authorization. The software is licensed under Apache License 2.0. The Apache Software Foundation says it does not sell its software or provide formal or commercial support for its packages; project communication is available through community mailing lists.