Apache Druid 38.0.0 介绍与选型指南

Apache Druid 38.0.0 认知篇:实时分析数据库的 Master/Query/Data 架构、Segment 与 rollup 核心概念、官方 Local quickstart 原文示例及 ClickHouse/TimescaleDB/Pinot 选型对比,信息基于官方来源联网溯源(查询日期 2026-10-18)。

Apache DruidDruid时序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 Releasehttps://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 角色分工

角色组件职责
MasterCoordinator、OverlordSegment 均衡与加载管理;摄取任务调度
QueryBroker、RouterSQL/原生查询分发与汇聚;对外统一入口路由
DataHistorical、MiddleManagerHistorical 加载不可变 Segment 提供查询;MiddleManager 执行实时摄取任务
外部依赖深存储/元数据库/ZooKeeperSegment 持久化与共享、集群元数据、服务发现与选主

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 与 APIDruid 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):

  1. 下载解压(官方原文命令):
tar -xzf apache-druid-38.0.0-bin.tar.gz
cd apache-druid-38.0.0
  1. 启动服务(官方原文命令与回显节选):单机自动配置启动所有 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 目录,删除该目录即复位。

  1. 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.014088(apache/druid)38.0.0(2026-10-01)Java 17;Kafka/Kinesis 流摄取;深存储 S3/HDFS/GCS;Druid SQL
ClickHouse列式 OLAP,通用分析引擎Apache-2.050464(ClickHouse/ClickHouse)v26.9.21.9-stable(2026-10-17)自有协议+MySQL/PG 接口;MergeTree 家族;月度大版本高频迭代
TimescaleDBPostgreSQL 扩展的时序数据库Apache-2.0 + Timescale License(部分高级特性 TSL)23710(timescale/timescaledb)2.30.2(2026-09-29)完整 PostgreSQL 生态与 SQL; hypertable 自动分区;云/自托管
Apache Pinot实时 OLAP(用户面/低延迟查询)Apache-2.06159(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。

八、参考链接