Druid
是一个高性能的实时分析型数据库
核心设计结合了数据仓库,时间序列数据库和搜索系统的思想
OLAP 和 OLTP
OLAP 的全称是 On-Line Analytical Processing
OLTP 的全称是 On-Line Transaction Processing
OLTP 对应常见的关系型数据库
· MySQL
· 实时 OLAP 和离线 OLAP
· Hive + Hadoop,SparkSQL + HDFS,Kylin 等就是离线 OLAP
· 监控告警系统这种对实时性要求比较高的系统就是实时 OLAP
· Druid 就属于实时 OLAP
Druid 的核心特性
· 列式存储。列式存储的优势在于查询的时候可以只返回指定的列的数据,其次同一列数据往往具有很多共性,这带来另一个好处就是存储的时候压缩效果比较好。
· 可扩展的分布式架构
· 并行计算
· 数据摄入支持实时和批量。这里的实时的意思是输入摄入即可查
· 运维友好
· 云原生架构,高容错性
· 支持索引,便于快速查询。
· 基于时间的分区
· 自动聚合
OLAP 系统的共同特性
· 实时摄取可查询。换句话说就是数据查询无延迟,这个在一些对实时性要求比较高的场景下,比如监控告警,还是很重要的。
· 自动实时聚合。
· 高效的索引结构便于查询。
开源技术的补充
Druid 的架构
6 个不同的组件
· 流程图说明
· 实时查询:
· MiddleManager
· 这里 MiddleManager 主要负责查询正在进行摄入的数据查询,MiddleManager 再将请求分发到具体的 peon,也就是 task 的运行实体上
· 离线查询
· Historical
· 历史数据的查询是通过 Historical 查询的,然后数据返回到 Broker 进行汇总。这里需要注意的时候数据查询并不会落到 Deep Storage 上去,也就是查询的数据一定是 cache 到本地磁盘的
· Queries: Routers 将请求路由到 Broker,Broker 向 MiddleManager 和 Historical 进行数据查询
· Data/Segment:得两个功能说明---实时到离线得过程
· MiddleMan