Apache Doris:下一代实时数据仓库

Apache Doris:下一代实时数据仓库

  • 概念
  • 架构设计
    • 快速的原因——其性能的架构设计、特性和机制
      • 基于成本的优化器
      • 面向列的数据库的快速点查询
      • 数据摄取
      • 数据更新
      • 服务可用性和数据可靠性
      • 跨集群复制
      • 多租户管理
      • 便于使用
      • 半结构化数据分析
      • 据仓一体
      • 分层存储
  • 词条
    • 诞生

概念

  • Apache Doris 是一个开源实时数据仓库。它可以从各种数据源收集数据,包括关系数据库(MySQL、PostgreSQL、SQL Server、Oracle等)、日志和来自物联网设备的时间序列数据。能够进行报告、即席分析、联合查询和日志分析,因此可用于支持仪表板、自助式 BI、A/B 测试、用户行为分析等。

Apache Doris 同时支持批量导入和流式写入。可以与 Apache Spark、Apache Hive、Apache Flink、Airbyte、DBT 和 Fivetran 很好地集成。还可以连接到 Apache Hive、Apache Hudi、Apache Iceberg、Delta Lake 和 Apache Paimon 等数据湖
在这里插入图片描述

  • 作为实时 OLAP引擎,Apache Doris 在查询速度上具有竞争优势。根据TPC-H和SSB-Flat基准测试结果,Doris可以提供比Presto、Greenplum和ClickHouse更快的性能。
    至于其自我进化,过去两年无论是复杂查询还是平表分析,速度都提高了10倍以上。

架构设计

快速的原因——其性能的架构设计、特性和机制

基于成本的优化器

  • Apache Doris 有一个基于成本的优化器(CBO),可以为复杂的大查询找出最有效的执行计划。具有完全矢量化的执行引擎,可以减少虚拟函数调用和缓存未命中的问题。基于MPP(大规模并行处理),可以充分发挥用户的机器和内核。在 Doris 中,查询执行是数据驱动的,意味着查询是否被执行取决于其相关数据是否准备好,这可以更有效地利用 CPU。

面向列的数据库的快速点查询

  • Apache Doris 是一个面向列的数据库,因此它可以使数据压缩和数据分片变得更容易更快。但这可能不适合诸如面向客户的服务之类的情况。在这些情况下,数据平台必须同时处理大量用户的请求(这些请求称为“高并发点查询”),而拥有列式存储引擎将放大每秒的 I/O 操作,尤其是当数据排列在平面表中时。
    为了解决这个问题,Apache Doris 启用了混合存储,这意味着同时拥有行存储和列存储。
    在这里插入图片描述
  • 另外,由于点查询都是简单查询,因此调用查询规划器是不必要和浪费的,因此 Doris 为它们执行短路计划以减少开销。
    高并发点查询开销的另一个大来源是SQL解析。为此,Doris 准备了声明。预先计算 SQL 语句并缓存它们,以便可以复用于类似的查询。
  • 架构精简:系统只有Frontend(FE)和Backend(BE)两个模块,其中FE节点负责用户请求的接入、查询计划的解析、元数据存储及集群管理等工作,BE节点负责数据存储和查询计划的执行,自身就是一个完备的分布式数据库管理系统,用户无需安装任何第三方管控组件即可运行起Apache Doris 集群,并且部署和升级过程都非常简易。同时,任一模块都可以支持横向拓展,集群最高可以拓展到数百个节点,支持存储超过10PB的超大规模数据。
    在这里插入图片描述
  • 性能优异:自带高效的列式存储引擎,减少数据扫描量的同时还实现了超高的数据压缩比。同时Doris还提供了丰富的索引结构来加速数据读取与过滤,利用分区分桶裁剪功能,Doris可以支持在线服务业务的超高并发,单节点最高可支持上千QPS。更进一步,Apache Doris 结合了向量化执行引擎来充分发挥现代化CPU并行计算能力,辅以智能物化视图技术实现预聚合加速,并可以通过查询优化器同时进行基于规划和基于代价的查询优化。通过上述多种方式,实现了极致的查询性能。

数据摄取

  • Apache Doris 提供了一系列数据摄取方法。

  • 1.实时流写入:
    Stream Load:可以应用此方法通过 HTTP 写入本地文件或数据流。具有线性可扩展性,在某些用例中可以达到每秒 1000 万条记录的吞吐量。
    Flink-Doris-Connector:通过内置的 Flink CDC,该连接器将 OLTP 数据库中的数据提取到 Doris。至此,我们已经实现了MySQL、Oracle的数据自动同步到Doris。
    例程加载:这是从 Kafka 消息队列订阅数据。
    Insert Into:当您尝试在 Doris 内部进行 ETL 时(例如将数据从一个 Doris 表写入另一个 Doris 表)尤其有用。

  • 2.批量写入:
    Spark Load:通过这种方法,您可以在写入 Doris 之前利用 Spark 资源对来自 HDFS 和对象存储的数据进行预处理。
    Broker Load:支持 HDFS 和 S3 协议。
    insert into select from :这个简单的语句允许您将 Doris 连接到各种存储系统、数据湖和数据库。

  • 生态丰富:提供丰富的数据同步方式,支持快速加载来自本地、Hadoop、Flink、Spark、Kafka、SeaTunnel等系统中的数据,也可以直接访问MySQL、PostgreSQL、Oracle、S3、Hive、Iceberg、Elasticsearch等系统中的数据而无需数据复制。同时存储在Doris中的数据也可以被 Spark、Flink 读取,并且可以输出给上游数据应用进行展示分析。

数据更新

  • 1.对于数据更新,Apache Doris 需要提供的是,它同时支持 Merge on Read 和 Merge on Write,前者用于低频批量更新,后者用于实时写入。
  • 使用Merge on Write,当您执行查询时,最新的数据就已经准备好了,因此与Merge on Read相比,它可以将查询速度提高5到10倍。
  • 从实现的角度来看,以下是一些常见的数据更新操作,Doris 都支持:
    Upsert:替换或更新整行
    部分列更新:仅更新一行中的几列
    条件更新:通过组合几个条件过滤掉一些数据,以便替换或删除它
    Insert Overwrite:重写表或分区
  • 在某些情况下,数据更新是并发发生的,这意味着有大量新数据进入并试图修改现有数据记录,因此更新顺序非常重要。这就是为什么 Doris 允许您通过事务提交的顺序或序列列(您提前在表中指定的内容)来决定顺序。Doris 还支持根据指定谓词删除数据,这就是条件更新的方式。

服务可用性和数据可靠性

  • 除了查询和数据摄取方面的快速性能之外,Apache Doris 还提供服务可用性保证,具体如下:
    从架构上来说,Doris 有两个进程:前端和后端。它们都很容易扩展。
  • 前端节点管理集群、元数据并处理用户请求;后端节点执行查询并能够自动数据平衡和自动恢复。支持集群升级和扩展,避免服务中断。
    在这里插入图片描述
    • 稳定可靠:支持数据多副本存储,集群具备自愈功能,自身的分布式管理框架可以自动管理数据副本的分布、修复和均衡,副本损坏时系统可以自动感知并进行修复。节点扩容时,仅需一条SQL命令即可完成,数据分片会自动在节点间均衡,无需人工干预或操作。无论是扩容、缩容、单节点故障还是在升级过程中,系统都无需停止运行,可正常提供稳定可靠的在线服务。

跨集群复制

  • 企业用户,尤其是金融或电子商务领域的用户,需要备份其集群或整个数据中心,以防出现不可抗力。所以Doris 2.0 提供了跨集群复制(CCR)。通过 CCR,用户可以做很多事情:
    灾难恢复:用于快速恢复数据服务
    读写分离:主集群+从集群;一本用于阅读,一本用于写作
    集群隔离升级:对于集群扩展,CCR允许用户预先创建备份集群进行试运行,以便清除可能的不兼容问题和错误。
    测试表明 Doris CCR 可以达到几分钟的数据延迟。最好的情况下可以达到硬件环境的速度上限。
    在这里插入图片描述

多租户管理

  • Apache Doris 具有复杂的基于角色的访问控制,它允许在数据库、表、行和列级别进行细粒度的权限控制。
    在这里插入图片描述
  • 对于资源隔离,Doris 曾经实施了一个硬隔离方案,将后端节点划分为资源组,并将资源组分配给不同的工作负载。这个硬隔离计划简单又整洁。但有时用户需要更充分地利用其计算资源,因为某些资源组处于空闲状态。
    在这里插入图片描述
  • 因此,Doris 2.0 引入了工作负载组,而不是资源组。为工作负载组设置了关于其可以使用的资源数量的软限制。当达到该软限制时,同时有一些空闲资源可用。空闲资源将在工作负载组之间共享。用户还可以根据对空闲资源的访问来确定工作负载组的优先级。
    在这里插入图片描述

便于使用

  • Apache Doris 提供了许多功能,而且也易于使用。它支持标准SQL,并兼容MySQL协议和市场上大多数BI工具。
    我们为提高可用性所做的另一项努力是称为“轻架构更改”的功能。这意味着如果用户需要添加或删除表中的某些列,他们只需要更新前端的元数据,而不必修改所有数据文件。
  • 简单易用:支持标准ANSI SQL语法,包括单表聚合、排序、过滤和多表Join、子查询等,还支持窗口函数、Grouping Set等复杂SQL语法,同时用户可以通过UDF和UDAF等自定义函数来拓展系统功能。除此以外,Apache Doris 还实现了MySQL协议兼容,用户可以通过各类客户端工具来访问Doris,并支持与BI工具的无缝对接。

半结构化数据分析

半结构化数据的常见示例包括日志、可观测性数据和时间序列数据。这些案例需要无模式支持、较低的成本以及多维分析和全文搜索的能力。
在文本分析中,人们大多使用 LIKE 算子,因此我们花了很多精力来提高它的性能,包括将 LIKE 算子下推到存储层(以减少数据扫描),并引入 NGram Bloomfilter, Hyperscan 正则表达式匹配库和 Volnitsky 算法(用于子字符串匹配)。
在这里插入图片描述
我们还引入了用于文本标记化的倒排索引。它是模糊关键字搜索、全文搜索、等价查询和范围查询的强大工具。

据仓一体

为了让用户构建高性能的数据湖和统一的查询网关,Doris 可以映射、缓存和自动刷新来自外部源的元数据。它支持 Hive Metastore 和几乎所有开放数据 Lakehouse 格式。您可以将其连接到关系数据库、Elasticsearch 和许多其他来源。它允许您在外部表上重用自己的身份验证系统,例如 Kerberos 和 Apache Ranger。

  • 基准测试结果显示,Apache Doris 在 Hive 表的查询中比 Trino 快 3~5 倍。它是以下几个特征的共同结果:
    高效的查询引擎
    热数据缓存机制
    计算节点
    Doris 视图
  • 计算节点是 2.0 版本中新引入的数据湖解决方案。与普通后端节点不同,计算节点是无状态的,不存储任何数据。它们也不参与集群扩展期间的数据平衡。这样,他们就可以在计算高峰期灵活、轻松地加入集群。
    另外,Doris还允许将外部表的计算结果写入Doris中形成视图。这与物化视图的思路类似:用空间换取速度。对外部表执行查询后,可以将结果放入Doris内部。当后续有类似的查询时,系统可以直接从 Doris 读取先前查询的结果,从而加快速度。

分层存储

  • 分层存储的主要目的是省钱。分层存储是指将热数据和冷数据分离到不同的存储中,热数据是经常访问的数据,冷数据是不经常访问的数据。它允许用户将热数据放入快速但昂贵的磁盘(例如SSD和HDD)中,将冷数据放入对象存储中。
  • 在这里插入图片描述
  • 粗略来说,对于80%冷数据组成的数据资产,分层存储可以降低您70%的存储成本。

词条

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

诞生

  • Apache Doris 最早是诞生于百度广告报表业务的 Palo 项目,2017 年正式对外开源,2018 年 7 月由百度捐赠给 Apache 基金会进行孵化,之后在 Apache 导师的指导下由孵化器项目管理委员会成员进行孵化和运营。 [4-5]Apache Doris 社区已经聚集了来自不同行业近百家企业的 300 余位贡献者,并且每月活跃贡献者人数也接近 100 位。2022 年 6 月,Apache Doris 成功从 Apache 孵化器毕业,正式成为 Apache 顶级项目(Top-Level Project,TLP)。
  • Apache Doris可以满足多种数据分析需求,例如固定历史报表,实时数据分析,交互式数据分析和探索式数据分析等,令数据分析工作简单高效。

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

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

相关文章

Security认证要点速记

登录校验流程 springSecurity已经为我们默认实现了一个用不着的登录功能,我们需要自己实现个符合我们需求的登录功能,所以我们需要去了解默认登录功能的流程,对其中的部分进行替换 SpringSecurity底层就是过滤器链,包含实现了各种…

HarmonyOS Next应用开发之系统概述

一、鸿蒙系统概述 鸿蒙系统可以分为华为鸿蒙系统(HUAWEI HarmonyOS)和开源鸿蒙系统(OpenHarmony),华为鸿蒙系统是基于OpenHarmony基础之上开发的商业版操作系统。他们二者的关系可以用下图来表示: 1.1、…

使用Go编写的持续下行测速脚本,快速消耗流量且不伤硬盘

介绍 使用go语言编写的持续下行测速脚本,可用于任意平台使用,通过指定URL清单文本文件自动遍历测速,支持多线程,支持多平台 特性 轻量级,无依赖采用内存进行缓存数据,不占用磁盘(如果内存较小请使用gcd项目),最大程度减少磁盘IO,保护硬盘寿命可自定义最大下载文件…

30米全国地表覆盖数据分享

我们在《136G全国1m土地覆盖数据》一文中,为你分享过全国1米土地覆盖数据。 现在再为你分享30米全国地表覆盖数据,你可以在文末查看该数据的领取方法。 30米全国地表覆盖数据 土地覆盖数据是各项研究中经常使用的数据。 它不仅可以帮助我们快速进行用…

开发个人Go-ChatGPT--6 OpenUI

开发个人Go-ChatGPT–6 OpenUI Open-webui Open WebUI 是一种可扩展、功能丰富且用户友好的自托管 WebUI,旨在完全离线运行。它支持各种 LLM 运行器,包括 Ollama 和 OpenAI 兼容的 API。 功能 由于总所周知的原由,OpenAI 的接口需要密钥才…

【南京蓝领新材料】水力颗粒分离器工作原理

水力颗粒分离器工作原理 在装置内部设有一个具有一定空间的滤网,雨水从进水管流入,先进入滤网过滤,雨水中的悬浮物和漂浮物将被拦截在此滤网内。 在装置底部有三个腔室,当雨水中小的颗粒物流到每个腔室挡墙前时,颗粒物…

CTFShow的36D杯

神光 还是想了一下,但那个异或搞不出来,都是对dword_41A038操作,想起开头就给了 key ,还有反调试应该是要调试的 输出的应该就是 flag ,只是为什么是乱码呢? 放 od 再试试,直接就出 flag 了&am…

最受老板欢迎的监控员工电脑软件推荐!(6款真实测评)

你有没有遇到以下这种情况: 早晨刚到公司打开电脑,老板对着旁边同事大发雷霆突然发问: 小丽,你昨天上班期间刷抖音了? 你吓得瑟瑟发抖,老板咋知道的呢? 跟其他同事讨论才晓得,原…

AI绘画杀死了设计师!?恰恰相反……

与大多数人想象的不同,ChatGPT等各种AI工具爆火之后,受到冲击最大的居然是设计师、作家、翻译等具有创造性的工作,以体力劳动为主的蓝领反而最不易被替代。 以城市数据团做过的一项研究为例,他们对中国1639种职业进行了GPT替代风险…

网页报错err_connection_timed_out 怎么办?教你快速修复错误代码

遇到网页错误提示“ERR_CONNECTION_TIMED_OUT”时,通常表示你的网络浏览器无法在规定时间内从服务器获取数据。这种错误不仅会阻碍你访问特定网站,而且可能会引起一些疑惑和不便。首先,这个问题可能是由于网络连接问题、服务器响应延迟或配置…

Python 轻松生成多种条形码、二维码 (Code 128、EAN-13、QR code等)

条形码和二维码是现代信息交换和数据存储的重要工具,它们将信息以图形的形式编码,便于机器识别和数据处理,被广泛应用于物流、零售、医疗、教育等各领域。 本文将介绍如何使用Python快速生成各种常见的条形码如Code 128、EAN-13,…

从传统到智能:安全帽AI检测算法助力工地/矿山/工厂/电力巡检安全监管

随着科技的快速发展,人工智能(AI)技术已经渗透到我们生活的方方面面,特别是在建筑工地这一对安全要求极高的领域中,AI技术的应用更是显得尤为重要。其中,安全帽AI检测算法以其高效、准确的特性,…

c++ 多边形 xyz 数据 获取 中心点方法,线的中心点取中心值搞定 已解决

有需求需要对。多边形 获取中心点方法&#xff0c;绝大多数都是 puthon和java版本。立体几何学中的知识。 封装函数 point ##########::getCenterOfGravity(std::vector<point> polygon) {if (polygon.size() < 2)return point();auto Area [](point p0, point p1, p…

Quartus程序烧录

1. .sof文件烧录&#xff08;断电丢失&#xff09; &#xff08;1&#xff09;Programmer&#xff08;程序设计&#xff09; &#xff08;2&#xff09;Hardware Setup...&#xff08;硬件设置&#xff09; &#xff08;如无USB-Blaster[USB-0]&#xff0c;在Hardware Setup..…

buuctf被嗅探的流量

下载出来是一个流量分析题 因为题目说了是联网状态下 嗅探到 所以一定有http协议 这里设置过滤器 一个一个去找吧 目前感觉wireshark的题都是http,太难的也不会

Linux--深入理与解linux文件系统与日志文件分析

目录 一、文件与存储系统的 inode 与 block 1.1 硬盘存储 1.2 文件存取--block 1.3 文件存取--inode 1.4 文件名与 inode 号 ​编辑 1.5 查看 inode 号码方法 1.6 Linux 系统文件的三个主要的时间属性 1.7 硬盘分区结构 1.8 访问文件的简单了流程 1.9 inode 占用 1.…

适配各种IT场景的零信任沙箱

在当今数字化时代&#xff0c;网络安全威胁层出不穷&#xff0c;传统的安全防御策略已难以应对日益复杂的网络攻击。零信任与沙箱技术的结合&#xff0c;作为一种新兴的安全防护策略&#xff0c;正逐渐受到企业和组织的青睐。本文将深入探讨零信任结合沙箱技术所能解决的问题及…

odoo视图继承

odoo视图继承 在模型时候&#xff0c;不对视图、菜单等进行修改&#xff0c;原视图和菜单等视图数据仍然可以使用&#xff0c;不需要重新构建 form视图继承案例 model&#xff1a;为对应模型 inherit_id&#xff1a;为继承的视图&#xff0c;ref:为继承视图的id&#xff0…

高考完的假期想学c语言要注意那些问题?

c语言算是现代编程语言里面比较简单的一个&#xff0c;对于高考刚考完的学生来说确实很适合刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「c语言的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全…

ChatGPT提问获取高质量答案的艺术PDF下载书籍推荐分享

ChatGPT高质量prompt技巧分享pdf&#xff0c; ChatGPT提问获取高质量答案的艺术pdf。本书是一本全面的指南&#xff0c;介绍了各种 Prompt 技术的理解和利用&#xff0c;用于从 ChatGPTmiki sharing中生成高质量的答案。我们将探讨如何使用不同的 Prompt 工程技术来实现不同的目…