Apache Doris学习

https://doris.apache.org/zh-CN/docs/gettingStarted/what-is-apache-doris

介绍

Apache Doris 是一款基于 MPP 架构(大规模并行处理)的高性能、实时分析型数据库。它以高效、简单和统一的特性著称,能够在亚秒级的时间内返回海量数据的查询结果。Doris 既能支持高并发的点查询场景,也能支持高吞吐的复杂分析场景。

使用场景

在这里插入图片描述

整体架构

Apache Doris 采用 MySQL 协议,高度兼容 MySQL 语法,支持标准 SQL。用户可以通过各类客户端工具访问 Apache Doris,并支持与 BI 工具无缝集成。

存算一体架构

Apache Doris 存算一体架构精简且易于维护。它包含以下两种类型的进程:
在这里插入图片描述

  • Frontend (FE): 主要负责接收用户请求、查询解析和规划、元数据管理以及节点管理。

  • Backend (BE): 主要负责数据存储和查询计划的执行。数据会被切分成数据分片(Shard),在 BE 中以多副本方式存储。

整体架构和技术特点

在生产环境中,可以部署多个 FE 节点以实现容灾备份。每个 FE 节点都会维护完整的元数据副本。FE 节点分为以下三种角色:

角色功能
MasterFE Master 节点负责元数据的读写。当 Master 节点的元数据发生变更后,会通过 BDB JE 协议同步给 Follower 或 Observer 节点。
FollowerFollower 节点负责读取元数据。当 Master 节点发生故障时,可以选取一个 Follower 节点作为新的 Master 节点。
ObserverObserver 节点负责读取元数据,主要目的是增加集群的查询并发能力。Observer 节点不参与集群的选主过程。

FE 和 BE 进程都可以横向扩展。单个集群可以支持数百台机器和数十 PB 的存储容量。FE 和 BE 进程通过一致性协议来保证服务的高可用性和数据的高可靠性。存算一体架构高度集成,大幅降低了分布式系统的运维成本。

Apache Doris 的核心特性

  • 高可用: Apache Doris 的元数据和数据均采用多副本存储,并通过 Quorum 协议同步数据日志。当大多数副本完成写入后,即认为数据写入成功,从而确保即使少数节点发生故障,集群仍能保持可用性。Apache Doris 支持同城和异地容灾,能够实现双集群主备模式。当部分节点发生异常时,集群可以自动隔离故障节点,避免影响整体集群的可用性。

  • 高兼容: Apache Doris 高度兼容 MySQL 协议,**支持标准 SQL 语法,涵盖绝大部分 MySQL 和 Hive 函数。**通过这种高兼容性,用户可以无缝迁移和集成现有的应用和工具。Apache Doris 支持 MySQL 生态,用户可以通过 MySQL 客户端工具连接 Doris,使得操作和维护更加便捷。同时,可以使用 MySQL 协议对 BI 报表工具与数据传输工具进行兼容适配,确保数据分析和数据传输过程中的高效性和稳定性。

  • 实时数仓: 基于 Apache Doris 可以构建实时数据仓库服务。Apache Doris 提供了秒级数据入库能力,上游在线联机事务库中的增量变更可以秒级捕获到 Doris 中。依靠向量化引擎、MPP 架构及 Pipeline 执行引擎等加速手段,可以提供亚秒级数据查询能力,从而构建高性能、低延迟的实时数仓平台。

  • 湖仓一体: Apache Doris 可以基于外部数据源(如数据湖或关系型数据库)构建湖仓一体架构,从而解决数据在数据湖和数据仓库之间无缝集成和自由流动的问题,帮助用户直接利用数据仓库的能力来解决数据湖中的数据分析问题,同时充分利用数据湖的数据管理能力来提升数据的价值。

  • 灵活建模: Apache Doris 提供多种建模方式,如宽表模型、预聚合模型、星型/雪花模型等。数据导入时,可以通过 Flink、Spark 等计算引擎将数据打平成宽表写入到 Doris 中,也可以将数据直接导入到 Doris 中,通过视图、物化视图或实时多表关联等方式进行数据的建模操作。

技术特点

Doris 提供了高效的 SQL 接口,并完全兼容 MySQL 协议。其查询引擎基于 MPP(大规模并行处理)架构,能够高效执行复杂的分析查询,并实现低延迟的实时查询。通过列式存储技术对数据进行编码与压缩,显著优化了查询性能和存储压缩比。

使用接口

Apache Doris 采用 MySQL 协议,高度兼容 MySQL 语法,支持标准 SQL。用户可以通过各类客户端工具访问 Apache Doris,并支持与 BI 工具无缝集成。Apache Doris 当前支持多种主流的 BI 产品,包括 Smartbi、DataEase、FineBI、Tableau、Power BI、Apache Superset 等。只要支持 MySQL 协议的 BI 工具,Apache Doris 就可以作为数据源提供查询支持。

存储引擎

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

在Doris里有表、分区、桶的结构,分区和表是逻辑结构,桶对应实际的存储文件,通过分区能够加快索引速度

对于分区,有range 分区和list分区:

  • range: 例如把日期按照范围分区
  • list: 例如把邯郸和石家庄城市按照所属省份,都分到河北省对应的区

Apache Doris 也支持多种索引结构,以减少数据的扫描:

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

  • Min/Max Index: 有效过滤数值类型的等值和范围查询。

  • BloomFilter Index: 对高基数列的等值过滤裁剪非常有效。

  • Inverted Index: 能够对任意字段实现快速检索。

在存储模型方面,Apache Doris 支持多种存储模型,针对不同的场景做了针对性的优化:

  • 明细模型(Duplicate Key Model): 适用于事实表的明细数据存储。

  • 主键模型(Unique Key Model): 保证 Key 的唯一性,相同 Key 的数据会被覆盖,从而实现行级别数据更新。

  • 聚合模型(Aggregate Key Model): 相同 Key 的 Value 列会被合并,通过提前聚合大幅提升性能。

Apache Doris 也支持强一致的单表物化视图和异步刷新的多表物化视图:

  • 单表物化视图是数据库中的一种优化技术,指基于单个表的查询结果预先计算并存储为物理实体的视图。以下是其核心要点:在系统中自动刷新和维护,无需用户手动选择。
  • 多表物化视图可以借助集群内的调度或集群外的调度工具定时刷新,从而降低数据建模的复杂性。
查询引擎

Apache Doris 支持节点间和节点内并行执行,以及多个大型表的分布式 Shuffle Join,从而更好地应对复杂查询。
在这里插入图片描述

Doris 查询引擎是向量化引擎,所有内存结构均按列式布局,可显著减少虚函数调用,提高缓存命中率,并有效利用 SIMD 指令。在宽表聚合场景下,性能是非向量化引擎的 5-10 倍。
在这里插入图片描述

Doris 查询引擎是向量化引擎,所有内存结构均按列式布局,可显著减少虚函数调用,提高缓存命中率,并有效利用 SIMD 指令。在宽表聚合场景下,性能是非向量化引擎的 5-10 倍。

在这里插入图片描述

Doris 采用自适应查询执行(Adaptive Query Execution)技术,根据运行时统计信息动态调整执行计划。例如,通过运行时过滤(Runtime Filter)技术,可以在运行时生成过滤器并将其推送到 Probe 端,并自动将过滤器穿透到 Probe 端最底层的 Scan 节点,从而大幅减少 Probe 端的数据量,加速 Join 性能。Doris 的运行时过滤器支持 In/Min/Max/Bloom Filter。

pip_exec_3
在这里插入图片描述

Doris 使用 Pipeline 执行引擎,将查询分解为多个子任务并行执行,充分利用多核 CPU 的能力,同时通过限制查询线程数来解决线程膨胀问题。Pipeline 执行引擎减少数据拷贝和共享,优化排序和聚合操作,从而显著提高查询效率和吞吐量。

在优化器方面,Doris 采用 CBO、RBO 和 HBO 相结合的优化策略。RBO 支持常量折叠、子查询重写和谓词下推等优化,CBO 支持 Join Reorder 等优化,HBO 能够基于历史查询信息推荐最优执行计划。多种优化措施确保 Doris 能够在各类查询中枚举出性能优异的查询计划。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/38579.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于springboot的新闻推荐系统(045)

摘要 随着信息互联网购物的飞速发展,国内放开了自媒体的政策,一般企业都开始开发属于自己内容分发平台的网站。本文介绍了新闻推荐系统的开发全过程。通过分析企业对于新闻推荐系统的需求,创建了一个计算机管理新闻推荐系统的方案。文章介绍了…

Jboss漏洞再现

一、CVE-2015-7501 1、开环境 2、访问地址 / invoker/JMXInvokerServlet 出现了让下载的页面,说明有漏洞 3、下载ysoserial工具进行漏洞利用 4、在cmd运行 看到可以成功运行,接下来去base64编码我们反弹shell的命令 5、执行命令 java -jar ysoserial-…

(二)VMware:VMware虚拟机安装CentOS教程

目录 1、准备CentOS 7镜像1.1、官网镜像下载1.2、清华大学开源镜像下载​1.3、阿里云开源镜像下载 2、使用 VMware安装CentOS 72.1、创建虚拟机2.2、选择自定义安装2.3、硬件兼容性,保持默认2.4、选择下载的ISO镜像2.5、设置虚拟机名称以及存放磁盘位置2.6、按照需求…

哈尔滨工业大学DeepSeek公开课人工智能:从图灵测试到DeepSeek|附视频和PPT下载方法

导 读 INTRODUCTION 今天给大家分享一份哈尔滨工业大学发布的《从图灵测试到DeepSeek》,由哈尔滨工业大学人工智能学院执行院长兼计算学部副主任张伟男教授带你穿越AI发展简史,解锁从图灵测试的奠基性思想到DeepSeek大模型的技术突破,带你领…

【算法笔记】图论基础(一):建图、存图、树和图的遍历、拓扑排序、最小生成树

目录 何为图论图的概念 图的一些基本概念有向图和无向图带权图连通图和非连通图对于无向图对于有向图 度对于无向图对于有向图一些结论 环自环、重边、简单图、完全图自环重边简单图 稀疏图和稠密图子图、生成子图同构 图的存储直接存边邻接矩阵存边邻接表存边链式前向星存边 图…

vue 对接 paypal 订阅和支付

一个是支付一个是订阅,写的时候尝试把他们放到一个里面,但是会报错,所以分开写了 我们的页面,前三个为订阅最后一个是支付,我把他们放到一个数组里面循环展示的,所以我们判断的时候只要判断id是否为4&#…

(四)---四元数的基础知识-(定义)-(乘法)-(逆)-(退化到二维复平面)-(四元数乘法的导数)

使用四元数的原因 最重要的原因是因为传感器的角速度计得到的是三个轴的角速度, 这三个轴的角速度合成一个角速度矢量, 结果就是在微小时间内绕着这个角速度矢量方向为轴旋转一定角度. 截图来源网址四元数 | Crazepony开源四轴飞行器

Android10 系统截屏功能异常的处理

客户反馈的问题,设备上使用状态栏中“长截屏”功能,截屏失败且出现系统卡死问题。 在此记录该问题的处理 一现象: 设备A10上使用系统“长截屏”功能,出现截屏失败,系统死机。 二复现问题并分析 使用设备操作该功能&…

工业软件的破局与重构:从技术依赖到自主创新的未来路径

工业软件作为现代工业的“神经与大脑”,不仅是制造业数字化转型的核心工具,更是国家工业竞争力的战略制高点。近年来,中国工业软件市场在政策驱动与技术迭代中迅猛发展,但核心技术受制于人的困境仍待突破。如何实现从“跟跑”到“…

Git基础

一、git概述 git简介 什么是Git? Git是一个分布式版本控制工具,主要用于管理开发过程中的源代码文件(Java类、ml文件、html页面等)。通过Gt仓库来存储和管理这些文件,Git仓库分为两种: ●本地仓库:开发人员自己电脑上的Git仓库…

Idea中使用Git插件_合并当前分支到master分支_冲突解决_很简单---Git工作笔记005

由于之前用svn习惯了,用的git少,其实在idea中使用git,解决冲突,合并分支,非常的简单,一起来看一下吧. 一定要注意操作之前,一定要确保自己的分支代码,都已经commit提交了,并且push到远程了. 不要丢东西. 可以看到首先,在idea的左下角有个 git,点开以后 可以看到有显示的分支…

大数据学习栈记——HBase操作(shell java)

本文介绍HBase在shell终端的常见操作以及如何利用java api操作HBase,操作系统:Ubuntu24.04 参考: https://blog.51cto.com/u_16099228/8016429 https://blog.csdn.net/m0_37739193/article/details/73618899 https://cloud.tencent.com/d…

【DETR】训练自己的数据集以及YOLO数据集格式(txt)转化成COCO格式(json)

目录 1.DETR介绍2.数据集处理3.转化结果可视化4.数据集训练4.1修改pth文件4.2类别参数修改4.3训练 5.成功运行!6.参考文献 1.DETR介绍 DETR(Detection with TRansformers)是基于transformer的端对端目标检测,无NMS后处理步骤,无anchor。 代码…

HashMap学习总结——JDK17

文章目录 HashMap构造方法HashMap(int initialCapacity, float loadFactor)loadFactor 加载因子initialCapacity 初始容量tableSizeFor(int cap) 计算前导零 HashMap(Map<? extends K, ? extends V> m) put(K key, V value)hash(Object key) 求hash值putVal(int hash, …

Linux:进程信号

✨✨所属专栏&#xff1a;Linux✨✨ ✨✨作者主页&#xff1a;嶔某✨✨ Linux&#xff1a;进程信号 在讲信号之前&#xff0c;我们先来从生活中的事情来确定信号的一些特性。 我在网上买了商品&#xff0c;我在等快递。但是在快递没来之前我知道快递来的时候我应该怎么处理。…

c#知识点补充2

1.非静态类能否调用静态方法可以 2.对string类型扩展方法&#xff0c;如何进行 类用静态类&#xff0c;参数是this 调用如下 3.out的用法 一定要给a赋值 这种写法不行 这样才行 4.匿名类 5.委托的使用 无论是匿名委托&#xff0c;还是具命委托&#xff0c;委托实例化后一定要…

0322-数据库、前后端

前端 <!DOCTYPE html> <html> <head> <meta charset"UTF-8"> <title>Insert title here</title> <script srcjs/jquery-3.7.1.min.js></script> <script> //jquaryajax发起请求 //传参形式不同 post用data{}…

Spring Boot02(数据库、Redis)02---java八股

MySQL和Redis的区别&#xff1f; 1. 数据类型&#xff1a; MySQL是一种关系型数据库&#xff0c;表结构化存储&#xff0c;使用 SQL 查询。支持表、列、行等结构化数据。 Redis是一种基于内存的缓存系统&#xff0c;支持多种数据结构&#xff0c;如字符串、哈希表、列表、集合、…

VulnHub-Web-Machine-N7通关攻略

一、信息收集 第一步&#xff1a;确定靶机IP为192.168.0.107 第二步&#xff1a;扫描后台及开放端口 第三步&#xff1a;进行敏感目录及文件扫描 http://192.168.0.107/index.html (CODE:200|SIZE:1620) http://192.168.0.107/server-status (CODE:403|SIZ…

【AI News | 20250322】每日AI进展

AI Repos 1、DeTikZify 可以把草图或图形转换成TikZ代码的模型&#xff0c;可用来绘制复杂的科学图表&#xff0c;输入草图或文字描述即可转换成TikZ代码。DeTikZify强大的地方在于它能理解图表的语义信息&#xff0c; 能识别图表中的不同组成部分及其含义&#xff0c;比如坐标…