Doris--基础--1.1--理论--介绍

Doris–基础–1.1–理论–介绍


1、介绍

  1. 是一个基于 MPP 架构的高性能、实时的分析型数据库
  2. 可以满足多种数据分析需求,例如固定历史报表,实时数据分析,交互式数据分析和探索式数据分析等。
  3. 使用场景:
    1. 报表分析
    2. 即席查询
    3. 统一数仓构建
    4. 数据湖联邦查询
  4. 用户可以在上面构建用户行为分析、AB 实验平台、日志检索分析、用户画像分析、订单分析等应用。

1.1、特点

  1. 极速易用
    1. 高度兼容MySql协议
    2. 支持在线表结构变更高度集成,不依赖于外部存储系统
  2. 仅需亚秒级响应时间即可返回海量数据下的查询结果
  3. 支持高并发的点查询场景
  4. 支持高吞吐的复杂分析场景
  5. 性能卓越
    1. TPC-H、TPC-DS性能领先,性价比高
    2. 高并发查询,100台集群可达10w QPS
    3. 流式导入单节点50MB/s,小批量导入毫秒延迟。
  6. 扩展性强:架构优雅,单集群可以水平扩展至200台以上
  7. 高可用性:多副本,元数据高可用

1.2、核心特性

  1. 列式存储
  2. 基于MPP(大规模并行处理)架构的分析型数据库
  3. 性能卓越,PB级别数据毫秒/秒级响应
  4. 支持标准SQL语言,兼容MySQL协议
  5. 高效的聚合表技术
  6. 新型预聚合技术Rollup
  7. 高性能、高可用、高可靠
  8. 极简运维,弹性伸缩

1.3、什么是MPP

MPP(Massively Parallel Processing),即大规模并行处理,在数据库非共享集群中,每个节点都有独立的磁盘存储系统和内存系统,业务数据根据数据库模型和应用特点划分到各个节点上,每台数据节点通过专用网络或者商业通用网络互相连接,彼此协同计算,作为整体提供数据库服务。非共享数据库集群有完全的可伸缩性、高可用、高性能、优秀的性价比、资源共享等优势。

简单来说,MPP 是将任务并行的分散到多个服务器和节点上,在每个节点上计算完成后,将各自部分的结果汇总在一起得到最终的结果(与 Hadoop 相似)。

1.4、哪些公司使用

在中国市值或估值排行前 50 的互联网公司中,有以下公司长期在使用Doris。

在这里插入图片描述

2、使用场景

数据来源—> 数据存储—> 数据分析–>报表展示(BI)

在这里插入图片描述

数据来源—> 数据仓库—> 数据查询–>报表展示(BI)

在这里插入图片描述

数据来源—> 数据仓库(实时数仓和离线数仓)—> 报表展示(BI)

在这里插入图片描述

2.1、报表分析

  1. 实时看板(Dashboards)
  2. 面向企业内部分析师和管理者的报表
  3. 面向用户或者客户的高并发报表分析(Customer Facing Analytics)。
    1. 比如:面向网站主的站点分析、面向广告主的广告报表,并发通常要求成千上万的 QPS,查询延时要求毫秒级响应。
    2. 著名的电商公司京东在广告报表中使用 Apache Doris,每天写入 100 亿行数据,查询并发 QPS 上万,99 分位的查询延时 150ms。

2.2、即席查询(Ad-hoc Query)

面向分析师的自助分析,查询模式不固定,要求较高的吞吐。

小米公司基于 Doris 构建了增长分析平台(Growing Analytics,GA),利用用户行为数据对业务进行增长分析,平均查询延时 10s,95 分位的查询延时 30s 以内,每天的 SQL 查询量为数万条。

2.3、统一数仓构建

一个平台满足统一的数据仓库建设需求,简化繁琐的大数据软件栈。

海底捞基于 Doris 构建的统一数仓,替换了原来由 Spark、Hive、Kudu、Hbase、Phoenix 组成的旧架构,架构大大简化。

2.4、数据湖联邦查询

通过外表的方式联邦分析位于 Hive、Iceberg、Hudi 中的数据,在避免数据拷贝的前提下,查询性能大幅提升。

3、技术概述

3.1、Doris整体架构

在这里插入图片描述

  1. Doris 架构非常简单,只有两类进程
    1. Frontend
    2. Backend
  2. Frontend(FE):负责用户请求的接入、查询解析规划、元数据的管理、节点管理相关工作。
  3. Backend(BE):负责数据存储、查询计划的执行。
  4. 这两类进程都是可以横向扩展的,单集群可以支持到数百台机器,数十 PB 的存储容量。
  5. 这两类进程通过一致性协议来保证服务的高可用和数据的高可靠。这种高度集成的架构设计极大的降低了一款分布式系统的运维成本。

3.1、在使用接口方面

  1. 采用 MySQL 协议
  2. 高度兼容 MySQL 语法
  3. 支持标准 SQL
  4. 用户可以通过各类客户端工具来访问 Doris,并支持与 BI 工具的无缝对接。

3.2、在存储引擎方面

采用列式存储,按列进行数据的编码压缩和读取,能够实现极高的压缩比,同时减少大量非相关数据的扫描,从而更加有效利用 IO 和 CPU 资源。

3.2.1、支持比较丰富的索引结构,来减少数据的扫描

3.2.1.1、Sorted Compound Key Index:

可以最多指定三个列组成复合排序键,通过该索引,能够有效进行数据裁剪,从而能够更好支持高并发的报表场景

3.2.1.2、Z-order Index

使用 Z-order 索引,可以高效对数据模型中的任意字段组合进行范围查询

3.2.1.3、Min/Max

有效过滤数值类型的等值和范围查询

3.2.1.4、Bloom Filter

对高基数列的等值过滤裁剪非常有效

3.2.1.5、Invert Index

能够对任意字段实现快速检索

3.2.2、支持多种存储模型,针对不同的场景做了针对性的优化:

3.2.2.1、Aggregate Key 模型

相同 Key 的 Value 列合并,通过提前聚合大幅提升性能

3.2.2.2、Unique Key 模型

Key 唯一,相同 Key 的数据覆盖,实现行级别数据更新

3.2.2.3、Duplicate Key 模型

明细数据模型,满足事实表的明细存储

3.3、在物化视图方面

  1. 支持强一致的物化视图
  2. 物化视图的更新和选择都在系统内自动进行,不需要用户手动选择,从而大幅减少了物化视图维护的代价。

3.4、在查询引擎方面

在这里插入图片描述

  1. Doris 采用 MPP 的模型,节点间和节点内都并行执行
  2. 支持多个大表的分布式 Shuffle Join,从而能够更好应对复杂查询。

3.5、向量化的查询引擎

  1. Doris 查询引擎是向量化的查询引擎
  2. 所有的内存结构能够按照列式布局,能够达到大幅减少虚函数调用、提升 Cache 命中率,高效利用 SIMD 指令的效果。在宽表聚合场景下性能是非向量化引擎的 5-10 倍。

3.6、Adaptive Query Execution 技术

在这里插入图片描述

Doris 采用了 Adaptive Query Execution 技术, 可以根据 Runtime Statistics 来动态调整执行计划,比如通过 Runtime Filter 技术能够在运行时生成生成 Filter 推到 Probe 侧,并且能够将 Filter 自动穿透到 Probe 侧最底层的 Scan 节点,从而大幅减少 Probe 的数据量,加速 Join 性能。

Doris 的 Runtime Filter 支持 In/Min/Max/Bloom Filter。

3.7、在优化器方面

  1. 使用 CBO 和 RBO 结合的优化策略
  2. RBO 支持
    1. 常量折叠
    2. 子查询改写
    3. 谓词下推等
  3. CBO 支持
    1. Join Reorder
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值