Apache Doris 开源最顶级基于MPP架构的高性能实时分析数据库

本文主要是介绍Apache Doris 开源最顶级基于MPP架构的高性能实时分析数据库,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

背景介绍

Apache Doris是一个基于MPP架构的易于使用,高性能和实时的分析数据库,以其极高的速度和易用性而闻名。海量数据下返回查询结果仅需亚秒级响应时间,不仅可以支持高并发点查询场景,还可以支持高通量复杂分析场景。

这些都使得 Apache Doris 成为报表分析、即席查询、统一数据仓库和数据湖查询加速等场景的理想工具。在 Apache Doris 上,用户可以构建各种应用,如用户行为分析、AB 测试平台、日志检索分析、用户画像分析、订单分析等。

2023年亚洲多丽丝峰会即将到来,热烈邀请您加入!单击“立即 🔗doris-summit.org.cn

🎉 版本 2.0.2 版本现已发布。2.0.2版本在标准基准测试上实现了超过10倍的性能提升,日志分析和湖仓场景全面提升,数据更新和写入效率更加高效稳定,支持更全面的多租户和资源隔离机制,在资源弹性和存储计算分离的方向上迈出了新的一步。它还为企业用户添加了一系列可用性功能。我们欢迎所有对2.0版本新功能有需求的用户进行部署和升级。在此处🔗查看发行说明。

🎉 1.2.7版本现已发布!它是完全进化的版本,建议所有用户升级到此版本。在此处🔗查看发行说明。

🎉 版本 1.1.5 现已发布。它是基于1.1版本的稳定性改进和错误修复版本。在此处🔗查看发行说明。

👀 查看官方网站,了解🔗Apache Doris的核心功能,博客和用户案例的完整列表。

图片

使用场景

如下图所示,经过各种数据集成和处理后,数据源通常存储在实时数据仓库 Apache Doris 和离线数据湖或数据仓库(在 Apache Hive、Apache Iceberg 或 Apache Hudi 中)。

图片

Apache Doris广泛应用于以下场景:

报告分析

实时仪表板 面向内部分析师和经理的报告 高度并发的用户导向或客户导向的报告分析:例如通常需要数千个QPS和以毫秒为单位的快速响应时间的网站分析和广告报告。一个成功的用户案例是,Doris 已被中国电子商务巨头 JD.com 用于广告报告,它每天接收 10 亿行数据,处理超过 10,000 QPS,并提供 99 毫秒的 150% 查询延迟。即席查询。面向分析师的自助式分析,具有不规则的查询模式和高吞吐量要求。小米基于Doris构建了增长分析平台(Growth Analytics,GA),利用用户行为数据进行业务增长分析,平均查询延迟为10秒,第95百分位查询延迟为30秒或更少,每天数万次SQL查询。

统一数据仓库建设。Apache Doris允许用户通过单一平台构建统一的数据仓库,省去处理复杂软件栈的麻烦。中国火锅连锁店海底捞与Doris建立了一个统一的数据仓库,以取代其由Apache Spark,Apache Hive,Apache Kudu,Apache HBase和Apache Phoenix组成的旧复杂架构。

数据湖查询。Apache Doris 通过使用外部表联合 Apache Hive、Apache Iceberg 和 Apache Hudi 中的数据来避免数据复制,从而实现出色的查询性能。

🖥️ 核心概念

📂 Apache Doris的架构 Apache Doris 的整体架构如下图所示。Doris 架构非常简单,只有两种类型的流程。

前端(FE):用户请求访问、查询解析和规划、元数据管理、节点管理等。

后端 (BE):数据存储和查询计划执行

这两种类型的进程都可以水平扩展,单个集群可以支持多达数百台机器和数十 PB 的存储容量。而这两类流程通过一致性协议保证了业务的高可用性和数据的高可靠性。这种高度集成的架构设计大大降低了分布式系统的运维成本。

图片

Apache Doris的整体架构

在接口方面,Apache Doris采用MySQL协议,支持标准SQL,与MySQL方言高度兼容。用户可以通过各种客户端工具访问 Doris,它支持与 BI 工具的无缝连接。

💾 存储引擎 Doris 使用列式存储引擎,按列编码、压缩和读取数据。这实现了非常高的压缩比,并大大减少了无关的数据扫描,从而更有效地利用了 IO 和 CPU 资源。Doris 支持多种索引结构,尽量减少数据扫描:

排序复合键索引:用户最多可以指定三列来形成复合排序键。这可以有效地修剪数据,以更好地支持高并发报告方案。最小/最大索引:这样可以有效筛选数值类型的等效性和范围查询。布隆过滤器:在高基数列的等价过滤和修剪中非常有效 反转索引:这样可以快速搜索任何字段。💿 存储模型 Doris 支持多种存储模型,并针对不同场景进行了优化:

聚合键模型:能够合并具有相同键的值列,并显着提高性能

唯一键模型:键在此模型中是唯一的,具有相同键的数据将被覆盖以实现行级数据更新。

重复密钥模型:这是一个详细的数据模型,能够详细存储事实数据表。

Doris 也支持强一致性的物化视图。物化视图自动选择和更新,大大降低了用户的维护成本。

🔍 查询引擎 Doris 在其查询引擎中采用 MPP 模型,实现节点之间和节点内部的并行执行。它还支持多个大型表的分布式随机连接,以处理复杂的查询。

图片

Doris 查询引擎是矢量化的,所有内存结构都以列格式布局。这可以在很大程度上减少虚拟函数调用,提高缓存命中率,并有效利用 SIMD 指令。Doris 在宽表聚合场景中提供的性能是非矢量化引擎的 5-10 倍。

图片

Apache Doris 使用自适应查询执行技术,根据运行时统计信息动态调整执行计划。例如,它可以生成运行时过滤器,将其推送到探测端,并自动渗透到底部的 Scan 节点,从而大大减少探测中的数据量并提高连接性能。Doris 中的运行时过滤器支持 In/Min/Max/Bloom 过滤器。

🚅 查询优化器 在优化器方面,Doris 使用了 CBO 和 RBO 的组合。RBO 支持常量折叠、子查询重写、谓词下推,CBO 支持联接重新排序。Doris CBO正在不断优化,以实现更准确的统计信息收集和推导,以及更准确的成本模型预测。Apache Doris已成功从Apache孵化器毕业,并于2022年<>月成为顶级项目。

目前,Apache Doris 社区已经聚集了来自不同行业的近 400 家公司的 200 多名贡献者,每月活跃贡献者数量接近 100 人。Apache Doris已成功从Apache孵化器毕业,并于2022年<>月成为顶级项目。

目前,Apache Doris 社区已经聚集了来自不同行业的近 400 家公司的 200 多名贡献者,每月活跃贡献者数量接近 100 人。

图片

这篇关于Apache Doris 开源最顶级基于MPP架构的高性能实时分析数据库的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/365884

相关文章

Go标准库常见错误分析和解决办法

《Go标准库常见错误分析和解决办法》Go语言的标准库为开发者提供了丰富且高效的工具,涵盖了从网络编程到文件操作等各个方面,然而,标准库虽好,使用不当却可能适得其反,正所谓工欲善其事,必先利其器,本文将... 目录1. 使用了错误的time.Duration2. time.After导致的内存泄漏3. jsO

SpringBoot实现数据库读写分离的3种方法小结

《SpringBoot实现数据库读写分离的3种方法小结》为了提高系统的读写性能和可用性,读写分离是一种经典的数据库架构模式,在SpringBoot应用中,有多种方式可以实现数据库读写分离,本文将介绍三... 目录一、数据库读写分离概述二、方案一:基于AbstractRoutingDataSource实现动态

C# WinForms存储过程操作数据库的实例讲解

《C#WinForms存储过程操作数据库的实例讲解》:本文主要介绍C#WinForms存储过程操作数据库的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、存储过程基础二、C# 调用流程1. 数据库连接配置2. 执行存储过程(增删改)3. 查询数据三、事务处

Spring事务中@Transactional注解不生效的原因分析与解决

《Spring事务中@Transactional注解不生效的原因分析与解决》在Spring框架中,@Transactional注解是管理数据库事务的核心方式,本文将深入分析事务自调用的底层原理,解释为... 目录1. 引言2. 事务自调用问题重现2.1 示例代码2.2 问题现象3. 为什么事务自调用会失效3

mysql数据库重置表主键id的实现

《mysql数据库重置表主键id的实现》在我们的开发过程中,难免在做测试的时候会生成一些杂乱无章的SQL主键数据,本文主要介绍了mysql数据库重置表主键id的实现,具有一定的参考价值,感兴趣的可以了... 目录关键语法演示案例在我们的开发过程中,难免在做测试的时候会生成一些杂乱无章的SQL主键数据,当我们

Java异常架构Exception(异常)详解

《Java异常架构Exception(异常)详解》:本文主要介绍Java异常架构Exception(异常),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. Exception 类的概述Exception的分类2. 受检异常(Checked Exception)

找不到Anaconda prompt终端的原因分析及解决方案

《找不到Anacondaprompt终端的原因分析及解决方案》因为anaconda还没有初始化,在安装anaconda的过程中,有一行是否要添加anaconda到菜单目录中,由于没有勾选,导致没有菜... 目录问题原因问http://www.chinasem.cn题解决安装了 Anaconda 却找不到 An

Spring定时任务只执行一次的原因分析与解决方案

《Spring定时任务只执行一次的原因分析与解决方案》在使用Spring的@Scheduled定时任务时,你是否遇到过任务只执行一次,后续不再触发的情况?这种情况可能由多种原因导致,如未启用调度、线程... 目录1. 问题背景2. Spring定时任务的基本用法3. 为什么定时任务只执行一次?3.1 未启用

Spring Boot 整合 MyBatis 连接数据库及常见问题

《SpringBoot整合MyBatis连接数据库及常见问题》MyBatis是一个优秀的持久层框架,支持定制化SQL、存储过程以及高级映射,下面详细介绍如何在SpringBoot项目中整合My... 目录一、基本配置1. 添加依赖2. 配置数据库连接二、项目结构三、核心组件实现(示例)1. 实体类2. Ma

C++ 各种map特点对比分析

《C++各种map特点对比分析》文章比较了C++中不同类型的map(如std::map,std::unordered_map,std::multimap,std::unordered_multima... 目录特点比较C++ 示例代码 ​​​​​​代码解释特点比较1. std::map底层实现:基于红黑