Apache Doris入门,下一代实时数据仓库

全方位介绍Apache Doris。

微信搜索关注《Java学研大本营》

图片

1 Apache Doris

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

Apache Doris支持批量导入和流式写入,可以与Apache Spark、Apache Hive、Apache Flink、Airbyte、DBT和Fivetran等工具很好地集成。Apache Doris还可以连接到Apache Hive、Apache Hudi、Apache Iceberg、Delta Lake和Apache Paimon等数据湖。

图片

2 性能

作为实时OLAP引擎,Apache Doris在查询速度上具有竞争优势。根据TPC-H和SSB-Flat基准测试结果,Doris的性能远远超过了Presto、Greenplum和ClickHouse。

在自我演进方面,过去两年中,Doris在复杂查询和平面表分析方面的查询速度提高了10倍以上。

图片

3 架构设计

Apache Doris之所以能够实现如此快速的速度,是因为其背后的架构设计、特性和机制对Doris的性能起到了贡献。

首先,Apache Doris拥有一个基于成本的优化器(CBO),可以找出复杂大查询的最高效执行计划。它拥有完全向量化的执行引擎,因此可以减少虚拟函数调用和缓存未命中。Apache Doris是基于MPP(Massively Parallel Processing)的,可以充分发挥用户的计算机和核心的作用。在Doris中,查询执行是数据驱动的,这意味着查询是否执行取决于其相关数据是否准备就绪,这样可以更高效地利用CPU。

4 基于列的数据库的快速点查询

Apache Doris是一种面向列的数据库,因此可以更轻松、更快速地进行数据压缩和数据分片。但是,在面向客户服务等场景中,这种存储方式可能不太适用。在这些情况下,数据平台需要同时处理大量用户的请求(称为“高并发点查询”),而列存储引擎会增加每秒I/O操作的数量,特别是在数据以平面表的形式排列时。

为了解决这个问题,Apache Doris实现了混合存储,即同时使用行存储和列存储。

图片

此外,由于点查询都是简单查询,调用查询计划器将是不必要和浪费的,所以Doris对它们执行了短路计划,以减少开销。

在高并发点查询中,另一个开销较大的来源是SQL解析。为此,Doris引入了预编译语句的概念。其思想是预先计算SQL语句并缓存它们,以便在类似查询中重复使用。

图片

5 数据采集

Apache Doris提供了多种数据导入方法。

实时流写入:

  • Stream Load:通过该方法,可以通过HTTP编写本地文件或数据流。在某些情况下,它具有线性可扩展性,并且可以达到每秒1000万条记录的吞吐量。

  • Flink-Doris-Connector:该连接器内置Flink CDC,可以将数据从OLTP数据库导入Doris。到目前为止,我们已经实现了从MySQL和Oracle到Doris的数据自动同步。

  • Routine Load:通过该方法,可以从Kafka消息队列订阅数据。

  • Insert Into:当尝试在Doris内部进行ETL时,例如从一个Doris表写入另一个Doris表时,可以使用此方法。

批量写入:

  • Spark Load:使用该方法,您可以利用Spark资源在写入Doris之前对HDFS和对象存储中的数据进行预处理。

  • Broker Load:支持HDFS和S3协议。

  • insert into <internal table> select from <external table>:这个简单的语句允许您将Doris连接到各种存储系统、数据湖和数据库。

6 数据更新

对于数据更新,Apache Doris提供的是对Merge on Read和Merge on Write的支持。前者用于低频批量更新,后者用于实时写入。通过Merge on Write,最新的数据将在执行查询时准备就绪,这就是为什么与Merge on Read相比,它可以将查询速度提高5到10倍的原因。

从实现的角度来看,以下是一些常见的数据更新操作,Doris都支持:

  • Upsert:替换或更新整行数据

  • 部分列更新:更新行中的几个列

  • 条件更新:通过组合几个条件来过滤出一些数据,以进行替换或删除

  • Insert Overwrite:重写表或分区

在某些情况下,数据更新是并发发生的,这意味着有大量新数据进来并试图修改现有的数据记录,因此更新的顺序非常重要。这就是为什么Doris允许您决定顺序,可以根据事务提交的顺序或序列列(在表中提前指定)来决定顺序。Doris还支持基于指定谓词的数据删除,这就是条件更新的实现方式。

7 服务可用性和数据可靠性

除了在查询和数据采集方面具有快速性能外,Apache Doris还提供了服务可用性保证,具体如下:

从架构上来说,Doris有两个进程:前端和后端。它们都可以轻松扩展。前端节点管理集群、元数据并处理用户请求;后端节点执行查询,并具备自动数据平衡和自动恢复的能力。它支持集群升级和扩展,以避免服务中断。

图片

8 跨集群复制

企业用户,尤其是金融或电商领域的用户,需要备份集群或整个数据中心,以防不测之需。因此,Doris 2.0提供了跨集群复制(CCR)。使用CCR,用户可以实现以下功能:

  • 灾难恢复:快速恢复数据服务

  • 读写分离:主集群+从集群;一个用于读取,一个用于写入

  • 集群的隔离升级:对于集群扩展,CCR允许用户预先创建一个备份集群进行试运行,以便清除可能的不兼容问题和错误。

测试表明,Doris CCR可以达到几分钟的数据延迟。在最佳情况下,它可以达到硬件环境的最高速度。

图片

9 多租户管理

Apache Doris具有复杂的基于角色的访问控制,并且可以对数据库、表、行和列进行细粒度的权限控制。

图片

为了资源隔离,Doris过去实施了硬隔离计划,即将后端节点划分为资源组,并将资源组分配给不同的工作负载。这是一个硬隔离计划。它简单而整洁。但是有时用户可以充分利用他们的计算资源,因为一些资源组是空闲的。

图片

因此,Doris 2.0引入了工作负载组,而不是资源组。为工作负载组设置了软限制,限制其可以使用的资源数量。当达到软限制时,同时有一些空闲资源可用。空闲资源将在工作负载组之间共享。用户还可以根据对空闲资源的访问优先级来对工作负载组进行优先级排序。

图片

10 易于使用

Apache Doris提供了许多功能,同时也非常易于使用。Apache Doris支持标准SQL,并兼容MySQL协议和市场上的大多多BI工具。

为了提高易用性,引入了一个名为轻量级模式更改(Light Schema Change)的功能。这意味着如果用户需要在表中添加或删除某些列,他们只需要在前端更新元数据,而无需修改所有数据文件。轻量级模式更改可以在毫秒级内完成。它还允许更改索引和列的数据类型。轻量级模式更改与Flink-Doris-Connector的结合意味着上游表格的同步可以在毫秒级内完成。

11 半结构化数据分析

半结构化数据是常见的数据类型,其中包括日志、可观测性数据和时间序列数据等。这些数据具有一定的结构,但不符合传统的关系型数据库的严格模式。处理这些数据时,需要支持无模式的灵活性、低成本存储以及多维分析和全文搜索等功能。

在文本分析中,使用LIKE运算符是常见的操作。为了提高性能,我们进行了大量的优化工作。其中一项优化是将LIKE运算符下推到存储层,以减少数据扫描的量。此外,我们还引入了NGram Bloomfilter、Hyperscan正则表达式匹配库和Volnitsky算法等技术,用于更高效地进行子字符串匹配操作。这些优化措施可以改善文本分析的性能和效率。

图片

这里还引入了倒排索引用于文本标记化。它是模糊关键字搜索、全文搜索、等价查询和范围查询的有力工具。

12 数据湖仓库

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

基准测试结果显示,Apache Doris 在对 Hive 表进行查询时比 Trino 快 3~5 倍。这是几个特性的共同结果:

  • 高效的查询引擎

  • 热数据缓存机制

  • 计算节点

  • Doris 中的视图

计算节点是版本 2.0 中针对数据湖仓库引入的一种解决方案。与普通的后端节点不同,计算节点是无状态的,不存储任何数据。它们在集群扩展期间不参与数据平衡。因此,在计算高峰时,它们可以灵活而容易地加入集群。

此外,Doris 允许您将外部表的计算结果写入 Doris 中以形成视图。这与材料化视图的思想类似:用空间换取速度。在执行对外部表的查询后,结果可以在 Doris 内部存储。当出现类似的后续查询时,系统可以直接从 Doris 中读取先前查询的结果,从而提高速度。

13 层级存储

层级存储的主要目的是节省成本。层级存储将热数据和冷数据分开存储,热数据是经常访问的数据,而冷数据则不是。它允许用户将热数据放入快速但昂贵的磁盘(如 SSD 和 HDD),将冷数据放入对象存储中。

图片

粗略地说,对于由 80% 冷数据组成的数据资产,层级存储将减少存储成本约 70%。

推荐书单

《SQL语言从入门到精通(软件开发视频大讲堂)》

《SQL语言从入门到精通》从初学者角度出发,通过通俗易懂的语言、丰富多彩的实例,详细介绍了在开发中使用SQL语言必须掌握的技术。全书分为3篇共18章,内容包括SQL语言基础、SQL查询基础、复杂查询、数据排序、SQL函数的使用、分组统计、子查询、多表查询、添加数据、修改和删除数据、视图、存储过程、触发器、游标、索引、事务、管理数据库与数据表、数据库安全。所有知识都结合具体实例进行介绍,涉及的程序代码给出了详细的注释,读者可以轻松领会SQL语言的精髓,快速提高开发技能。

《SQL语言从入门到精通(软件开发视频大讲堂)》icon-default.png?t=N7T8https://item.jd.com/14055972.html

图片

精彩回顾

一文讲清RabbitMQ、Apache Kafka、ActiveMQ

一文讲清数据集市、数据湖、数据网格、数据编织

使用矢量数据库打造全新的搜索引擎

10个进行高效数据分析的SQL小技巧

10个事半功倍的IntelliJ Idea插件和主题

微信搜索关注《Java学研大本营》

访问【IT今日热榜】,发现每日技术热点

  • 11
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
上层应用业务对实时数据的需求,主要包含两部分内容:1、 整体数据的实时分析。2、 AB实验效果的实时监控。这几部分数据需求,都需要进行的下钻分析支持,我们希望能够建立统一的实时OLAP数据仓库,并提供一套安全、可靠的、灵活的实时数据服务。目前每日新增的曝光日志达到几亿条记录,再细拆到AB实验更细维度时,数据量则多达上百亿记录,多维数据组合下的聚合查询要求秒级响应时间,这样的数据量也给团队带来了不小的挑战。OLAP层的技术选型,需要满足以下几点:1:数据延迟在分钟级,查询响应时间在秒级2:标准SQL交互引擎,降低使用成本3:支持join操作,方便维度增加属性信息4:流量数据可以近似去重,但订单行要精准去重5:高吞吐,每分钟数据量在千W级记录,每天数百亿条新增记录6:前端业务较多,查询并发度不能太低通过对比开源的几款实时OLAP引擎,可以发现Doris和ClickHouse能够满足上面的需求,但是ClickHouse的并发度太低是个潜在的风险,而且ClickHouse的数据导入没有事务支持,无法实现exactly once语义,对标准SQL的支持也是有限的。所以针对以上需求Doris完全能解决我们的问题,DorisDB是一个性能非常高的分布式、面向交互式查询的分布式数据库,非常的强大,随着互联网发展,数据量会越来越大,实时查询需求也会要求越来越高,DorisDB人才需求也会越来越大,越早掌握DorisDB,以后就会有更大的机遇。本课程基于真实热门的互联网电商业务场景为案例讲解,具体分析指标包含:AB版本分析,下砖分析,营销分析,订单分析,终端分析等,能承载海量数据的实时分析,数据分析涵盖全端(PC、移动、小程序)应用。整个课程,会带大家实践一个完整系统,大家可以根据自己的公司业务修改,既可以用到项目中去,价值是非常高的。本课程包含的技术:开发工具为:IDEA、WebStormFlink1.9.0DorisDBHadoop2.7.5Hbase2.2.6Kafka2.1.0Hive2.2.0HDFS、MapReduceFlume、ZookeeperBinlog、Canal、MySQLSpringBoot2.0.8.RELEASESpringCloud Finchley.SR2Vue.js、Nodejs、Highcharts、ElementUILinux Shell编程等课程亮点:1.与企业接轨、真实工业界产品2.DorisDB高性能分布式数据库3.大数据热门技术Flink4.支持ABtest版本实时监控分析5.支持下砖分析6.数据分析涵盖全端(PC、移动、小程序)应用7.主流微服务后端系统8.天级别与小时级别多时间方位分析9.数据库实时同步解决方案10.涵盖主流前端技术VUE+jQuery+Ajax+NodeJS+ElementUI11.集成SpringCloud实现统一整合方案12.互联网大数据企业热门技术栈13.支持海量数据的实时分析14.支持全端实时数据分析15.全程代码实操,提供全部代码和资料16.提供答疑和提供企业技术方案咨询企业一线架构师讲授,代码在老师的指导下企业可以复用,提供企业解决方案。  版权归作者所有,盗版将进行法律维权。 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值