Doris与StarRocks

news2024/12/22 22:16:43

目录

Doris

Doris 架构

存储引擎

查询引擎

索引结构

存储模型

物化视图

使用场景

StarRocks

架构设计

架构选择

存算一体

节点

FE

BE

存算分离

节点

存储

缓存

适用场景

OLAP 多维分析

实时数据仓库

高并发查询

统一分析

Doris和StarRocks对比

大规模数据分析场景

Doris

StarRocks

对后端服务调用的支持

 Doris    

StarRocks

硬件所需对比

CPU

内存

存储

网络

操作系统

软件环境

其他配置

资源消耗对比

技术生态与社区支持

Doris

StarRocks


Doris和StarRocks都是高性能的分析型数据库,它们都适用于大规模数据集的快速查询和分析。

Doris

Apache Doris 是一个基于 MPP 架构的高性能、实时的分析型数据库,以极速易用的特点被人们所熟知,仅需亚秒级响应时间即可返回海量数据下的查询结果,不仅可以支持高并发的点查询场景,也能支持高吞吐的复杂分析场景。基于此,Apache Doris 能够较好的满足报表分析、即席查询、统一数仓构建、湖仓一体等使用场景,用户可以在此之上构建用户行为分析、AB 实验平台、日志检索分析、用户画像分析、订单分析等应用。

Apache Doris 最早是诞生于百度广告报表业务的 Palo 项目,2017 年正式对外开源,2018 年 7 月由百度捐赠给 Apache 基金会进行孵化,之后在 Apache 导师的指导下由孵化器项目管理委员会成员进行孵化和运营。目前 Apache Doris 社区已经聚集了来自不同行业数百家企业的 400 余位贡献者,并且每月活跃贡献者人数也超过 100 位。2022 年 6 月,Apache Doris 成功从 Apache 孵化器毕业,正式成为 Apache 顶级项目(Top-Level Project,TLP)

Apache Doris 如今在中国乃至全球范围内都拥有着广泛的用户群体,截止目前,Apache Doris 已经在全球超过 2000 家企业的生产环境中得到应用,在中国市值或估值排行前 50 的互联网公司中,有超过 80% 长期使用 Apache Doris,包括百度、美团、小米、京东、字节跳动、腾讯、网易、快手、微博、贝壳等。同时在一些传统行业如金融、能源、制造、电信等领域也有着丰富的应用。

Doris 架构

Doris架构

如图所示,Doris 架构非常简单,只有两类进程

  • Frontend(FE),主要负责用户请求的接入、查询解析规划、元数据的管理、节点管理相关工作。
  • Backend(BE),主要负责数据存储、查询计划的执行。 

这两类进程都是可以横向扩展的,单集群可以支持到数百台机器,数十 PB 的存储容量。并且这两类进程通过一致性协议来保证服务的高可用和数据的高可靠。这种高度集成的架构设计极大的降低了一款分布式系统的运维成本。

存储引擎

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

查询引擎

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

Doris查询引擎

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 也支持比较丰富的索引结构,来减少数据的扫描:

  • Sorted Compound Key Index:可以最多指定三个列组成复合排序键,通过该索引,能够有效进行数据裁剪,从而能够更好支持高并发的报表场景
  • Z-order Index :使用 Z-order 索引,可以高效对数据模型中的任意字段组合进行范围查询
  • Min/Max Index :有效过滤数值类型的等值和范围查询
  • Bloom Filter :对高基数列的等值过滤裁剪非常有效
  • Invert Index :能够对任意字段实现快速检索 

存储模型

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

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

  • Unique Key 模型:Key 唯一,相同 Key 的数据覆盖,实现行级别数据更新

  • Duplicate Key 模型:明细数据模型,满足事实表的明细存储

物化视图

Doris的物化视图是一种特殊的数据集合,它是根据定义的SELECT语句预先计算并存储在Doris中的。

物化视图可以大幅提高查询性能,特别是对于经常使用相同子查询结果的查询。

Doris自动维护物化视图的数据,确保与基表的数据一致性,无需额外的人工维护成本。此外,查询时Doris会自动选择最优的物化视图,直接从物化视图中读取数据并进行计算。

物化视图的创建是一个异步操作,用户提交创建任务后,Doris将在后台计算现有数据直到创建成功。创建物化视图的语法与PostgreSQL和Oracle一致,支持的聚合函数包括SUM、MIN、MAX、COUNT、BITMAP_UNION、HLL_UNION以及AGG_STATE。

为了保证物化视图与基表之间的数据一致性,Doris将基表上的导入、删除等操作同步到物化视图,并采用增量更新提高更新效率。

使用物化视图时,用户不需要更改查询,Doris会根据当前查询语句自动选择最优的物化视图。用户可以使用EXPLAIN命令检查当前查询是否使用了物化视图。

此外,Doris还支持创建异步物化视图,这允许

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue3中组件的多种写法

SFC单文件组件,一个vue写一个组件 使用 defineComponent h函数 去进行组件编写 使用 defineComponent JSX/TSX 去进行组件编写 需要安装插件pnpm i vitejs/plugin-vue-jsx -D 引入 配置 使用组件

Android的OkHttp使用和原理

前言 OkHttp的出现代替了HttpUrlConnection,被谷歌官方收纳为底层的网络框架。特点如下: 支持HTTP/2框架下的socket复用通过连接池减少连接的延时使用GZIP进行数据压缩使用缓存技术避免重复请求 当网络出现问题时,OkHttp会静默重新恢复连接…

uniapp组件使用

uni-popup 默认z-index是99 https://uniapp.dcloud.net.cn/component/uniui/uni-popup.html#uni-popup-%E5%BC%B9%E5%87%BA%E5%B1%82 uni-icons uniapp自带图标&#xff1a;https://hellouniapp.dcloud.net.cn/pages/extUI/icons/icons <uni-icons type"left"…

基于JAVA的在线教育系统设计与实现,源码、部署+讲解

摘 要 随着信息化的日益发展&#xff0c;互联网信息技术的发展日新月异。互联网在线教育模式也在不断的被革新。从传统的线下辅导授课&#xff0c;转变成现在的线上教育遍地开花。线上教育已经犹如雨后春笋一般冒芽而出&#xff0c;这为我们的生活带来了许多变动。 基于网络…

江协科技STM32学习笔记(第12章 PWR电源控制)

第12章 PWR电源控制 12.1 PWR电源控制 12.1.1 PWR简介 芯片在3种低功耗模式下&#xff0c;是没法直接再下载程序的。这是因为芯片在睡眠&#xff0c;不会关注调试端口了。解决办法就是&#xff1a;1.按住复位键不动&#xff1b;2.点下载按钮&#xff1b;3.及时从开复位键。这…

怎样使用sudo的时候不需要输入密码?

在Ubuntu等Linux系统下&#xff0c;经常要在个人账户使用sudo命令来执行一些需要root权限的命令&#xff0c;但是需要输入该账户的密码&#xff0c;有时候显得很繁琐&#xff0c; 那么怎样使用sudo的时候不需要输入密码呢&#xff1f; 有如下两种方法&#xff1a; 常规方法1…

颠覆传统 北大新型MoM架构挑战Transformer模型,显著提升计算效率

挑战传统的Transformer模型设计 在深度学习和自然语言处理领域&#xff0c;Transformer模型已经成为一种标准的架构&#xff0c;广泛应用于各种任务中。传统的Transformer模型依赖于一个固定的、按深度排序的层次结构&#xff0c;每一层的输出都作为下一层的输入。这种设计虽然…

Spring Boot集成selenium实现自动化测试

1.什么是selenium&#xff1f; Selenium 是支持web 浏览器自动化的一系列工具和 库的综合项目。 它提供了扩展来模拟用户与浏览器的交互&#xff0c;用于扩展浏览器分配的分发 服务器&#xff0c; 以及用于实现W3C WebDriver 规范 的基础结构&#xff0c; 该规范允许您为所有主…

全国各地认可再+4,美创入选ZJCERT等多省市网络数据安全支撑单位

近一个月以来&#xff0c;美创科技连获多省市认可&#xff0c;相继入选&#xff1a; ZJCERT网络安全应急服务支撑单位 杭州市委网信办网络安全技术服务单位 南通市网络和数据安全技术支撑单位 济南市卫生健康系统网络和数据安全应急技术支撑单位 ZJCERT第三届网络安全应急服…

力扣3148. 矩阵中的最大得分

题目 给你一个由 正整数 组成、大小为 m x n 的矩阵 grid。你可以从矩阵中的任一单元格移动到另一个位于正下方或正右侧的任意单元格&#xff08;不必相邻&#xff09;。从值为 c1 的单元格移动到值为 c2 的单元格的得分为 c2 - c1 。 你可以从 任一 单元格开始&#xff0c;并…

Ubuntu+QT编译QTXlsx库

1.在GitHub上下载QT Xlsx 的源码&#xff0c;网站链接如下&#xff08;需要科学上网&#xff09; https://github.com/dbzhang800/QtXlsxWriter 下载好的内容如下 然后在目录下右击启动终端 输入如下命令 先输入qmake qtxlsx.pro再输入make最后sudo make install 注意&…

医药企业如何选择数字化营销模式

有产品&#xff0c;有市场&#xff0c;便有了窜货这一现象&#xff0c;经销商之间窜货不仅伤害了生产企业的渠道和价格体系&#xff0c;还影响企业的形象&#xff0c;降低了企业品牌的价值。而这一问题的根源就是企业对产品的营销管理信息不对称&#xff0c;而数字化营销被视为…

【常见算法题】斐波那契数列(矩阵快速幂)

一、题目描述 大家都知道斐波那契数列&#xff0c;现在要求输入一个正整数 n &#xff0c;请你输出斐波那契数列的第 n 项。 斐波那契数列满足如下 二、解题思路 2.1 普通处理方式 使用递归直接计算 int fib(int n) {if (n 1 || n 2) return 1;return fib(n - 1) fib(n…

实现信创Linux麦克风摄像头录制(源码,银河麒麟、统信UOS)

随着信创国产化浪潮的来临&#xff0c;在国产操作系统上的应用开发的需求越来越多&#xff0c;其中一个就是需要在银河麒麟或统信UOS上实现录制摄像头视频和麦克风声音&#xff0c;将它们录制成一个mp4文件。那么这个要如何实现了&#xff1f; 一. 技术方案 要完成这些功能&a…

北大研究生公选课资料现已公开,数据库学习秘籍速来get!

为促进基础软件在中国高校的传播&#xff0c;进一步提高在校研究生对基础软件的学习和开发实践能力&#xff0c;拓数派与开源联盟 PG 分会携手合作&#xff0c;走进北京大学&#xff0c;进行了北大软件与微电子学院 2024 年《北京大学 PostgreSQL 内核开发&#xff1a;从入门到…

构建高效沃尔玛自养号测评系统:技术策略与实战指南

搭建沃尔玛自养号测评技术系统是一个涉及多方面技术和资源投入的过程&#xff0c;旨在通过自行构建和掌控测评环境&#xff0c;利用真实国外买家的信息和资料来创建买家账号&#xff0c;模拟真实的购买和评价过程&#xff0c;从而提升商品权重和销量。以下是搭建该系统的主要步…

mysql Ubuntu安装与远程连接配置

一、安装&#xff08;Ubuntu22环境安装mysql8&#xff09; 这里使用Xshell链接Ubuntu和mysql windows进行操作&#xff0c;特别提醒&#xff1a;安装之前建议对Ubuntu快照处理备份&#xff0c;避免安装中出错导致Ubuntu崩溃。 查看是否安装的有可以用指令&#xff1a;ps -ef|…

IOS 05 OC和Swift混合编程

为什么需要使用OC和Swift混合编程&#xff1f; 在真实项目开发过程中&#xff0c;大部分时候我们往往都会使用到OC和Swift混合编程&#xff0c;主要原因如下&#xff1a; 老项目是OC语言实现的&#xff0c;但需要引用Swift的框架&#xff1b;新项目是Swift实现的&#xff0c;…

【操作系统】二、进程管理:1.进程与线程(程序、进程(PCB、状态转换、原语、进程间通信)、线程(多线程模型))

二、进程与线程 文章目录 二、进程与线程1.程序1.1顺序执行的特征1.2并发执行的特征 2.进程Process2.1定义&#xff08;组织&#xff09;2.1.1程序段2.1.2数据段2.1.3进程控制块PCB1&#xff09;内容2&#xff09;作用3&#xff09;进程组织方式 2.2特征2.3进程的状态与转换2.3…

云服务器是什么?云服务器可以用来干什么?

云服务器&#xff0c;顾名思义&#xff0c;是指运行在云计算环境中的虚拟服务器。与传统的物理服务器相比&#xff0c;云服务器不需要用户自行购买、搭建和维护硬件设备&#xff0c;而是通过互联网从云服务提供商处获取计算资源、存储空间和网络服务。用户可以根据自己的需求&a…