当前位置: 首页 > news >正文

Doris与StarRocks

目录

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还支持创建异步物化视图,这允许

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • linux网络配置脚本
  • 《机器学习by周志华》学习笔记-决策树-04多变量决策树
  • 【重学c++primer】第五章第二节 深入浅出:左值和右值
  • LabVIEW VI 多语言动态加载与运行的实现
  • Cesium天空盒子(Skybox)制作(js代码)和显示
  • C语言中的函数sscanf()用法
  • Golang基于DTM的分布式事务TCC实战
  • Golang | Leetcode Golang题解之第343题整数拆分
  • 16.2 TensorFlow 与 Keras 基础
  • 图表:调用FluentUI中的折线图散点图和饼状图
  • 八股之数据库
  • 无缝融入,即刻智能[二]:Dify-LLM平台(聊天智能助手、AI工作流)快速使用指南,42K+星标见证专属智能方案
  • 第二章 pytorch回归问题
  • Java、python、php版的企业单位考勤打卡管理系统的设计与实现(源码、调试、LW、开题、PPT)
  • 深度学习·Pytorch
  • JavaScript 如何正确处理 Unicode 编码问题!
  • [译]CSS 居中(Center)方法大合集
  • 【React系列】如何构建React应用程序
  • Android 初级面试者拾遗(前台界面篇)之 Activity 和 Fragment
  • ES6之路之模块详解
  • Flex布局到底解决了什么问题
  • Java小白进阶笔记(3)-初级面向对象
  • Laravel 菜鸟晋级之路
  • mysql 数据库四种事务隔离级别
  • Phpstorm怎样批量删除空行?
  • spring boot 整合mybatis 无法输出sql的问题
  • vue和cordova项目整合打包,并实现vue调用android的相机的demo
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 分布式事物理论与实践
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 简单易用的leetcode开发测试工具(npm)
  • 开放才能进步!Angular和Wijmo一起走过的日子
  • 聊聊directory traversal attack
  • 项目实战-Api的解决方案
  • 学习笔记DL002:AI、机器学习、表示学习、深度学习,第一次大衰退
  • 源码安装memcached和php memcache扩展
  • 在electron中实现跨域请求,无需更改服务器端设置
  • 怎么将电脑中的声音录制成WAV格式
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • 基于django的视频点播网站开发-step3-注册登录功能 ...
  • 整理一些计算机基础知识!
  • ​configparser --- 配置文件解析器​
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • # 利刃出鞘_Tomcat 核心原理解析(七)
  • #13 yum、编译安装与sed命令的使用
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • $().each和$.each的区别
  • (70min)字节暑假实习二面(已挂)
  • (DenseNet)Densely Connected Convolutional Networks--Gao Huang
  • (不用互三)AI绘画工具应该如何选择
  • (力扣)1314.矩阵区域和
  • (七)Appdesigner-初步入门及常用组件的使用方法说明
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • (转) Android中ViewStub组件使用