当前位置:网站首页>Apache Doris系列之:深入认识实时分析型数据库Apache Doris
Apache Doris系列之:深入认识实时分析型数据库Apache Doris
2022-07-30 22:45:00 【目标博客专家】
一、Doris介绍
- Apache Doris基于MPP架构的高性能、实时的分析型数据库,仅需亚秒级响应时间即可返回还量数据下的查询结果,不仅可以支持高并发的点查询场景,也能支持高吞吐的复杂分析场景。
- Apache Doris能够较好的满足报表分析、即席查询、统一数仓构建、数据湖联邦查询加速等使用场景,用户可以在此之上构建用户行为分析、AB实验平台、日志检索分析、用户画像分析、订单分析等应用。
二、使用场景
- 数据源经过各种数据集成和加工处理后,通常会入库到实时数仓Doris和离线湖仓,Apache Doris被广泛应用在以下场景中。
报表分析:
- 实时看板(Dashboards)
- 面向企业内部分析师和管理者的报表
- 面向用户或者客户的高并发报表分析。比如面向网站主的站点分析、面向广告主的广告报表,并发通常要求成千上万的QPS,查询延时要求毫秒级响应。著名的电商公司京东在广告报表中使用 Apache Doris ,每天写入 100 亿行数据,查询并发 QPS 上万,99 分位的查询延时 150ms。
即席查询:
- 面向分析师的自助分析,查询模式不固定,要求较高的吞吐。小米公司基于 Doris 构建了增长分析平台(Growing Analytics,GA),利用用户行为数据对业务进行增长分析,平均查询延时 10s,95 分位的查询延时 30s 以内,每天的 SQL 查询量为数万条。
统一数仓构建:
- 一个平台满足统一的数据仓库建设需求,简化繁琐的大数据软件栈。海底捞基于 Doris 构建的统一数仓,替换了原来由 Spark、Hive、Kudu、Hbase、Phoenix 组成的旧架构,架构大大简化。
数据湖联邦查询:
- 通过外表的方式联邦分析位于 Hive、Iceberg、Hudi 中的数据,在避免数据拷贝的前提下,查询性能大幅提升。
三、技术概述
Doris整体架构如下图所示,Doris架构非常简单,只有两类进程:
- Frontend(FE),主要负责用户请求的接入、查询解析规划、元数据的管理、节点管理相关工作。
- Backend(BE),主要负责数据存储、查询计划的执行。
这两类进程都是可以横向扩展的,单集群可以支持到数百台机器,数十PB的存储容量。这两类进程通过一致性协议来保证服务的高可用和数据的高可靠。这种高度集成的架构设计极大的降低了一款分布式系统的运维成本。
- 在使用接口方面,Doris 采用 MySQ L 协议,高度兼容 MySQL 语法,支持标准 SQL,用户可以通过各类客户端工具来访问 Doris,并支持与 BI 工具的无缝对接。
- 在存储引擎方面,Doris采用列式存储,按列进行数据的编码压缩和读取,能够实现极高的压缩比,同时减少大量非相关数据的扫描,从而更加有效利用IO和CPU资源。
Doris支持比较丰富的索引结构,来减少数据的扫描:
- Sorted Compound Key Index,可以最多指定三个列组成复合排序键,通过该索引,能够有效进行数据裁剪,从而能够更好支持高并发的报表场景。
- Z-order Index:使用Z-order索引,可以高效对数据模型中的任意字段组合进行范围查询。
- Min/Max:有效过滤数值类型的等值和范围查询
- Bloom Filter:对高基数列的等值过滤裁剪非常有效。
- Invert Index:能够对任意字段实现快速检索
在存储模型方面,Doris支持多种存储模型,针对不同的场景做了针对性的优化:
- Aggregate Key模型:相同key的Value列合并,通过提前聚合大幅提升性能
- Unique Key模型:Key唯一,相同Key的数据覆盖,实现行级别数据更新
- Duplicate Key模型:明细数据模型,满足事实表的明细存储
Doris也支持强一致的物化视图,物化视图的更新和选择都在系统内自动进行,不需要用户手动选择,从而大幅度减少了物化视图维护的代价。
在查询引擎方面,Doris采用MPP的模型,节点间和节点内都并行执行,也支持多个大表的分布式Shuffle Join,从而能够更好应对复杂查询。
Doris查询引擎是向量化的查询引擎,所有的内存结构能够按照列式布局,能够达到大幅度减少虚函数调用、提升Cache命中率,高效利用SIMD指令的效果。在宽表聚合场景下性能是非向量化引擎的5-10倍。
Doris采用了Adaptive Query Execution 技术,可以根据Runtime Statistics来动态调整执行计划,比如通过Runtime Filter技术能够在运行时生成Filter到Probe侧,并且能够将Filter自动穿透到Probe侧最底层的Scan节点,从而大幅减少Probe都数据量,加速Join性能。Doris都Runtime Filter支持In/Min/Max/Bloom Filter。
在优化器方面 Doris 使用 CBO 和 RBO 结合的优化策略,RBO 支持常量折叠、子查询改写、谓词下推等,CBO 支持 Join Reorder。目前 CBO 还在持续优化中,主要集中在更加精准的统计信息收集和推导,更加精准的代价模型预估等方面。
边栏推荐
- Detailed operator
- Go语学习笔记 - gorm使用 - 事务操作 Web框架Gin(十一)
- MySQL 8.0.29 set and modify the default password
- 【MySQL】MySQL中对数据库及表的相关操作
- 编码与进制
- 2022.7.28
- 力扣题(2)—— 两数相加
- "Code execution cannot continue because MSVCP140.dll was not found, reinstalling the program may resolve the problem, etc." Solutions
- language code table
- “由于找不到MSVCP140.dll,无法继续执行代码,重新安装程序可能会解决此问题等”解决方案
猜你喜欢
cnpm installation steps
OpenCV笔记(二十):滤波函数——filter2D
MySql 5.7.38下载安装教程 ,并实现在Navicat操作MySql
EasyExcel comprehensive course combat
【导航规划】导航规划背景知识总结
Detailed operator
ClickHouse to create a database to create a table view dictionary SQL
打动中产精英群体,全新红旗H5用产品力跑赢需求
[MySQL] Related operations on databases and tables in MySQL
只会纯硬件,让我有点慌
随机推荐
力扣题(3)—— 无重复字符的最长子串
【翻译】作为混沌网的LFX门徒的经验
MYSQL JDBC Book Management System
【MySQL】MySQL中对数据库及表的相关操作
2sk2225代换3A/1500V中文资料【PDF数据手册】
【MySQL】Mysql事务以及权限管理
go版本升级
EasyExcel综合课程实战
VS2017 compile Tars test project
cnpm的安装与使用
TCP 连接 三次握手 四次挥手
DistSQL in-depth analysis: creating a dynamic distributed database
"Code execution cannot continue because MSVCP140.dll was not found, reinstalling the program may resolve the problem, etc." Solutions
Uni-app 小程序 App 的广告变现之路:激励视频广告
【Summary】机器人方法汇总
ML's shap: Based on FIFA 2018 Statistics (2018 Russia World Cup) team match star classification prediction data set using RF random forest + calculating SHAP value single-sample force map/dependency c
ThinkPHP high imitation blue play cloud network disk system source code / docking easy payment system program
cookie和session区别
科技的成就(三十一)
力扣题(2)—— 两数相加