Apache Doris 是一个高性能、简单易用、支持实时的 MPP 架构分析型数据库
一、MPP 架构
- 介绍
- 全称 Massively Parallel Processor,翻译过来就是大规模并行处理
- 在数据库非共享集群中,每个节点都有独立的磁盘存储系统和内存系统,业务数据根据数据库模型和应用特点划分到各个节点上
- 每台数据节点通过专用网络或者商业网络互相连接,彼此协同计算,作为整体提供数据库服务
- 非共享数据库集群有完全的可伸缩性、高可用、高性能、优秀的性价比、资源共享等优势
- MPP 是将任务并行的分散到多个服务器和节点上,在每个几点计算完成后,将各自部分的结果汇总在一起得到最终的结果
- 简单来说
- MPP 是将任务并行的分散到多个服务器和节点上,在每个节点上计算完成后,将各自部分的结果汇总在一起得到最终的结果(和 Hadoop 相似),仅需亚秒级响应时间即可获得查询结果,有效地支持实时数据分析
二、OLTP、OLAP
- 联机事务处理 OLTP On-Line Transaction Processing
- 操作型处理,主要目标是做数据处理,针对具体业务在数据库联机的日常操作,通常对少数记录进行查询和修改
- 传统的关系型数据库系统(RDBMS)作为数据管理的主要手段,主要用于操行型处理
- 联机分析处理 OLAP On-Line Analytical Processing
- 分析型处理,主要目标是做数据分析,针对某些主题的历史数据进行复杂的多维分析,支持管理决策
- 数据仓库是 OLAP 系统的一个典型示例,主要用于数据分析
- 引擎分类
- M OLAP,基于多维数组的存储模型,特点是对数据进行预计算,空间换效率,明细和聚合数据都保存在 cube 中
- R OLAP,完全基于关系模型进行存储数据,不需要预计算,按需即时查询,明细和汇总数据都保存在关系型数据库事实表中
- H OLAP,混合模型,细节数据以 R OLAP 存放,聚合数据以 M OLAP 存放,这种方式相对灵活,且更加高效
三、Doris 概述
- Apache Doris 是一个现代化的基于 MPP 大规模并行处理 技术的分析型数据库产品,可以满足多种数据分析需求
- 例如:固定历史报表、实时数据分析、交互式数据分析和探索式数据分析等
- 核心特性
- 列式存储
- 基于 MPP 架构的分析型数据库
- 性能卓越,PB 级别数据毫秒/秒级响应
- 支持标准 SQL 语言,兼容 MySQL 协议
- 高效的聚合表技术
- 新型预聚合技术 Rollup
- 高性能、高可靠、高可用
- 极简运维,弹性伸缩
四、整体架构
- Doris = Google Mesa + Apache Impala + ORC 列式存储
- Doris 整合了 Google Mesa 数据模型,Apache Impala MPP Query Engine 和 Apache ORCFile 存储格式、编码和压缩技术
- 极简架构
- MySQL Tools(MySQL Networking) -> FE (Follower,Java) + FE (Leader,Java) -> BE (C++) + BE(C++)
- FE Frontend 即 Doris 的前端节点,以 Java 语言为主,主要负责用户请求的接入、查询解析规划、元数据的管理、节点管理相关工作。
- BE Backend 即 Doris 的后端节点,以 C++ 语言为主,主要负责数据存储、查询计划的执行
- MySQL Tools(MySQL Networking) -> FE (Follower,Java) + FE (Leader,Java) -> BE (C++) + BE(C++)
五、总结
- Doris 使用 MPP 引擎驱动的 ROLAP 模式,可以简化模型设计,减少预计算的代价,并通过强大的实时计算能力,可以支撑良好的实时交互体验
- Doris 是一个 ROLAP 引擎,可以满足 灵活多维分析、明细 + 聚合、主键更新
- 使用场景
- 一般用于数据处理后半段,存储处理完的数据,给前端提供实时查询