Apache Druid 38.0.0 介绍与选型指南
Apache Druid 38.0.0 认知篇:实时分析数据库的 Master/Query/Data 架构、Segment 与 rollup 核心概念、官方 Local quickstart 原文示例及 ClickHouse/TimescaleDB/Pinot 选型对比,信息基于官方来源联网溯源(查询日期 2026-10-18)。
Apache Druid 38.0.0 介绍与选型指南
目标:本篇为 A1 认知篇,基于 Apache Druid 官方网站、GitHub 官方仓库 Release 与官方文档联网溯源整理(查询日期 2026-10-18),不涉及本地安装实测;本地安装实测属 B1 安装指南职责。
一、信息基准
1.1 查询日期与版本依据
| 项目 | 内容 |
|---|---|
| 查询日期 | 2026-10-18 |
| 本次介绍版本 | Apache Druid 38.0.0(官方最新稳定版) |
| 版本依据 | GitHub 官方仓库 apache/druid releases/latest 实查:tag druid-38.0.0,发布时间 2026-10-01;官方文档(docs/latest)与本版本同步 |
| 发布规模 | 官方 Release 说明:包含超过 250 项新特性、修复、性能与文档改进,来自 37 位贡献者(来源:38.0.0 Release 说明,查询日期 2026-10-18) |
1.2 官方来源清单
| 来源 | URL |
|---|---|
| 项目主页 | https://druid.apache.org/ |
| 官方文档(含 Local quickstart) | https://druid.apache.org/docs/latest/tutorials/ |
| SQL API 文档 | https://druid.apache.org/docs/latest/api-reference/sql-api/ |
| GitHub 官方仓库 | https://github.com/apache/druid |
| 官方下载页 | https://druid.apache.org/downloads.html |
| 38.0.0 Release | https://github.com/apache/druid/releases |
二、软件概述
本文介绍 Apache Druid 38.0.0(最新稳定版,2026-10-01 发布)。Druid 是一款高性能实时分析型数据库,主要面向事件流与时序类数据的 OLAP 场景:以列式存储、时间优先分区、段(Segment)不可变设计与 rollup 预聚合为核心,在亚秒级查询延迟下同时承载高并发仪表盘与大规模明细钻取。数据摄取覆盖流式(Kafka/Kinesis)与批式(HDFS/对象存储/HTTP)双链路,查询入口支持 Druid SQL 与原生 JSON 查询(来源:druid.apache.org 官网与文档,查询日期 2026-10-18)。
- 许可:Apache License 2.0。
- 维护方:Apache Software Foundation 顶级项目(2020 年毕业;商业化脉络为 Imply)。
- 形态:分布式集群(可单机 quickstart 起步),依赖三件外部设施:深存储(S3/HDFS/GCS)、元数据库(PostgreSQL/MySQL)、ZooKeeper(quickstart 内置)。
- 社区活跃度:GitHub 14088 stars / 3803 forks,主分支最近推送 2026-10-18(查询日期 2026-10-18,GitHub API 实查)。
三、核心架构与核心概念
3.1 角色分工
| 角色 | 组件 | 职责 |
|---|---|---|
| Master | Coordinator、Overlord | Segment 均衡与加载管理;摄取任务调度 |
| Query | Broker、Router | SQL/原生查询分发与汇聚;对外统一入口路由 |
| Data | Historical、MiddleManager | Historical 加载不可变 Segment 提供查询;MiddleManager 执行实时摄取任务 |
| 外部依赖 | 深存储/元数据库/ZooKeeper | Segment 持久化与共享、集群元数据、服务发现与选主 |
3.2 核心概念
- Datasource 与 Segment:数据按数据源组织,物理上切成按时间排序的不可变 Segment 深存于对象存储,Historical 按需加载缓存于本地。
- 时间分区与 rollup:按
__time主键组织数据;摄取时可按维度聚合(rollup),以空间换查询速度,明细数据可关 rollup 保留。 - 流批一体摄取:Kafka/Kinesis 订阅式实时任务与批式任务共用同一套 Segment 机制,读写分离。
- Druid SQL 与原生查询:SQL 经 Planner 翻译为原生 JSON 查询执行;SQL API 通过 Router/Broker 的
/druid/v2/sql端点访问。
四、功能特性
以下特性均可在官方文档相应章节查证(查询日期 2026-10-18):
| 特性域 | 说明 |
|---|---|
| 亚秒级 OLAP | 列存 + 倒排/位图索引 + Segment 缓存,支撑高并发仪表盘与交互式钻取 |
| 实时摄取 | Kafka/Kinesis 订阅任务(带事务语义),数据秒级可查 |
| 预聚合 | 摄取期 rollup 压缩存储成本,配合 Compaction 自动压实 |
| 多类型索引 | 位图索引、范围/文本/空间索引,支持过滤与检索型查询 |
| 近似计算 | HyperLogLog、Theta/Quantiles sketch 等官方扩展,支撑基数/分位高基数场景 |
| SQL 与 API | Druid SQL(含 EXPLAIN/INSERT/MSQ 批式 SQL)、HTTP API、Web Console(8888 端口) |
| 多租户与治理 | 静态配额与规则驱动的 Segment 生命周期(Tier/保留/降冷)管理 |
- 38.0.0(2026-10-01)为 38 线首个发布;官方提供 x64/arm64 二进制包,运行要求 Java 17(Local quickstart 前置:Linux/macOS/类 Unix、Java 17、Python 3、Perl 5、建议 6 GiB 内存)。
五、快速上手(引自官方文档,不本地实测)
官方 Local quickstart(原文引自 https://druid.apache.org/docs/latest/tutorials/ ,查询日期 2026-10-18):
- 下载解压(官方原文命令):
tar -xzf apache-druid-38.0.0-bin.tar.gz
cd apache-druid-38.0.0
- 启动服务(官方原文命令与回显节选):单机自动配置启动所有 Druid 服务与 ZooKeeper:
./bin/start-druid
Starting Apache Druid.
Open http://localhost:8888/ in your browser to access the web console.
Running command[zk]: bin/run-zk conf
Running command[broker]: bin/run-druid broker ...
Running command[router]: bin/run-druid router ...
Running command[coordinator-overlord]: bin/run-druid coordinator-overlord ...
Running command[historical]: bin/run-druid historical ...
Running command[middleManager]: bin/run-druid middleManager ...
官方说明:Web Console 位于 http://localhost:8888;Druid 最多可占用系统内存的 80%,可用 ./bin/start-druid -m 16g 显式指定;全部持久化状态(元数据与 Segment)位于 var 目录,删除该目录即复位。
- SQL 查询(官方 SQL API 文档示例,POST
http://ROUTER_IP:ROUTER_PORT/druid/v2/sql):
{
"query": "SELECT * FROM wikipedia WHERE user='BlueMoon2662'",
"header": true,
"typesHeader": true,
"sqlTypesHeader": true
}
说明:quickstart 建议配套 6 GiB 以上内存的机器;按官方指引可在 Web Console 中通过"Load data"向导完成示例数据(如 wikipedia 事件流)的摄取后执行上述查询。完整链路见官方教程与本专栏 B1/B3 部署文档。
六、适用场景与限制
6.1 适用场景
- 用户行为与埋点事件的实时分析:高并发仪表盘、漏斗/留存/路径类 OLAP 查询。
- 运维与业务监控时序看板:高频写入 + 固定模式聚合查询 + 历史分层降冷。
- 广告与营销分析:曝光/点击流的大基数维度统计(配合 sketch 近似计算)。
- 需要流批一体摄取 + 亚秒查询的长周期明细库(替代"实时链路+历史数仓"两套栈)。
6.2 限制与风险
- 非 join 密集型引擎:跨大数据源关联能力有限,宽表/星型建模才是正确姿势,复杂 Join 场景应选 Doris/ClickHouse 类 MPP 库。
- 组件与外部依赖多(深存储/元数据库/ZooKeeper),运维复杂度显著高于单机引擎;quickstart 单机形态不适合生产。
- 明细数据关 rollup 后存储成本高,需通过分区/压实/保留规则精细治理。
- 版本线推进快(已到 38),跨大版本升级需逐版核对 Upgrade notes(官方 Release 说明明示存在升级注意事项与不兼容变更)。
七、同类选型对比
对比维度:许可、社区活跃度(GitHub stars + 最近发版)、版本节奏、兼容矩阵。数据为 GitHub API 实查,查询日期 2026-10-18。
| 项目 | 定位 | 许可 | GitHub stars | 最近发版(2026-10-18 实查) | 兼容矩阵 |
|---|---|---|---|---|---|
| Apache Druid 38.0.0 | 实时事件流分析数据库(时序优先 + rollup) | Apache-2.0 | 14088(apache/druid) | 38.0.0(2026-10-01) | Java 17;Kafka/Kinesis 流摄取;深存储 S3/HDFS/GCS;Druid SQL |
| ClickHouse | 列式 OLAP,通用分析引擎 | Apache-2.0 | 50464(ClickHouse/ClickHouse) | v26.9.21.9-stable(2026-10-17) | 自有协议+MySQL/PG 接口;MergeTree 家族;月度大版本高频迭代 |
| TimescaleDB | PostgreSQL 扩展的时序数据库 | Apache-2.0 + Timescale License(部分高级特性 TSL) | 23710(timescale/timescaledb) | 2.30.2(2026-09-29) | 完整 PostgreSQL 生态与 SQL; hypertable 自动分区;云/自托管 |
| Apache Pinot | 实时 OLAP(用户面/低延迟查询) | Apache-2.0 | 6159(apache/pinot) | release-1.5.1(2026-06-05) | Kafka/流优先;无深存储强依赖(支持对象存储 Tier);Star-Tree 索引 |
选型建议:事件流高并发亚秒分析且能承担运维复杂度时选 Druid 或 Pinot(Pinot 在用户面低延迟查询上更聚焦,Druid 生态与 sketch 能力更全);要一个通用 OLAP + 大 SQL 生态则选 ClickHouse;团队已有 PostgreSQL 能力且以时序为主、想复用 PG 运维体系选 TimescaleDB;运维人力有限的小团队更应优先考虑托管形态(云上 Timescale/ClickHouse 服务)而非自建 Druid。
八、参考链接
- 项目主页:https://druid.apache.org/
- 官方文档与 Local quickstart(快速上手出处):https://druid.apache.org/docs/latest/tutorials/
- SQL API 文档:https://druid.apache.org/docs/latest/api-reference/sql-api/
- 设计文档:https://druid.apache.org/docs/latest/design/
- GitHub 官方仓库:https://github.com/apache/druid
- 38.0.0 Release:https://github.com/apache/druid/releases
- 官方下载页:https://druid.apache.org/downloads.html