Apache Doris:基于MPP架构的实时分析数据库,是时候上手了

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

Apache Doris 是一个基于 MPP 架构的高性能实时分析数据库,以极速和易用性著称。海量数据下仅需亚秒级响应时间即可返回查询结果,不仅可以支持高并发点查询场景,还可以支持高吞吐量的复杂分析场景。基于此,Apache Doris可以更好的满足报表分析、即席查询、统一数仓、数据湖查询加速等场景,用户可以构建用户行为分析、AB测试平台、日志检索分析、用户画像分析、订单分析,以及在此之上的其他应用程序。

Apache Doris最早诞生于百度广告报表业务的Palo项目,2017年正式开源,2018年7月由百度捐赠给Apache基金会孵化,在Apache导师的指导下,由孵化器项目管理委员会成员进行孵化和运营。Apache Doris 顺利毕业于 Apache 孵化器,并于 2022 年 6 月成为顶级项目。目前,Apache Doris 社区聚集了来自不同行业近百家公司的 300 多名贡献者,活跃贡献者人数接近 100 人/月。

Apache Doris 目前在中国乃至全球拥有广泛的用户群,截至今天,Apache Doris 已在全球超过 500 家公司的生产环境中使用。中国互联网市值或估值前50强企业中,80%以上长期使用Apache Doris百度、美团、小米、京东、字节跳动、腾讯、网易、快手、微博等。它还广泛应用于金融、能源、制造、电信等一些传统行业。

使用场景

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

使用场景

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

报告分析

  • 实时仪表板
  • 生成内部分析师和经理的报告
  • 面向用户或客户的高并发报表分析:比如网站主 做站点分析,广告主 做广告报表等场景,并发通常需要上千QPS,查询时延需要亚秒级响应。著名电商京东在广告报表中使用Doris,每天写入100亿行数据,上万并发查询QPS,99%查询延迟150ms。

即席查询

面向分析师的具有不规则查询模式和高吞吐量要求的的自助服务分析。小米基于Doris构建了增长分析平台(Growth Analytics,GA),利用用户行为数据进行业务增长分析,平均查询延迟10秒,95%查询延迟30秒以下,数万每天的 SQL 查询数。

统一数据仓库建设

Doris 是一个满足统一数据仓库建设需求,简化复杂数据软件栈的平台。海底捞基于Doris的统一数据仓库取代了由Apache Spark、Apache Hive、Apache Kudu、Apache HBase、Apache Phoenix组成的旧架构,大大简化了架构。

数据湖查询

通过使用外部表联合位于 Apache Hive、Apache Iceberg 和 Apache Hudi 中的数据,在避免数据复制的同时大大提高了查询性能。

技术概览

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

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

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

Apache Doris 的架构

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

在存储引擎方面,Doris采用列式存储对数据进行按列编码压缩和读取,在实现极高压缩率的同时减少大量扫描无关数据,从而更高效地利用IO和CPU资源.

Doris 还支持比较丰富的索引结构来减少数据扫描:

  • 支持排序复合键索引:最多可以指定三列组成复合排序键。有了这个索引,可以对数据进行有效的剪枝,更好的支持高并发的上报场景。
  • Z-order 索引:使用Z-order 索引,您可以高效地对架构中的任意字段组合运行范围查询。
  • MIN/MAX 索引:有效过滤数字类型的等价和范围查询
  • 布隆过滤器:对高基数列的等价过滤和修剪非常有效
  • 倒排索引:它可以快速搜索任何字段

在存储模型方面,Doris 支持多种存储模型,针对不同场景有针对性的优化:

  • 聚合键模型:通过预先聚合来合并具有相同键的值列,以显着提高性能。
  • 唯一键模型:键是唯一的。具有相同键的数据将被覆盖,以实现行级数据更新。
  • 重复键模型:详细的数据模型,可以满足事实表的详细存储。

Doris 还支持强一致性物化视图,物化视图的更新和选择在系统内部自动完成,不需要用户手动选择,从而显着降低了物化视图的维护成本。

在查询引擎方面,Doris采用了MPP模型,节点间和节点内并行执行,也支持多张大表的分布式shuffle join,可以更好的应对复杂的查询。

Apache Doris 的查询引擎

Doris查询引擎是向量化的,所有内存结构都可以以列格式布局,从而实现显著减少虚拟函数调用、提高缓存命中率和高效使用SIMD指令。宽表聚合场景中的性能比非向量化引擎高 5-10 倍。

向量化查询执行器

Doris使用自适应查询执行技术,可以根据运行时的统计动态调整执行计划,例如运行时过滤器技术,在运行时生成过滤器推送到探测端,并自动将过滤器穿透到探测端,大大减少了探测端的数据量,提高了连接性能。Doris 的运行时过滤器支持 In/Min/Max/Bloom 过滤器。

查询优化器

在优化器方面,Doris 使用了 CBO 和 RBO 的组合,RBO 支持常量折叠、子查询重写、谓词下推等,CBO支持 Join 重新排序。CBO仍在持续优化中,主要集中在更准确的统计信息收集和推导、更准确的成本模型预测等方面。

未来,Apache Doris除了数据分析之外,还将提升数据工程能力,更好地覆盖企业数据ETL/ELT场景,通过一个平台满足多种混合工作负载。另一方面,对云基础设施做深度优化,利用云提供的弹性和新硬件,提供性价比更好的产品。

为什么选择 Apache Doris?

  • 易于使用:两个进程,没有其他依赖;在线集群伸缩,自动副本恢复;兼容MySQL协议,使用标准SQL。
  • 高性能:通过列式存储引擎、现代 MPP 架构、矢量化查询引擎、预聚合物化视图和数据索引,为低延迟和高吞吐量查询提供极快的性能。
  • 单一统一:单一系统可以支持实时数据服务、交互式数据分析和离线数据处理场景。
  • 联邦查询:支持Hive、Iceberg、Hudi等数据湖和MySQL、Elasticsearch等数据库的联邦查询。
  • 多种数据导入方式:支持从HDFS/S3批量导入,从MySQL Binlog/Kafka流式导入;支持通过HTTP接口进行微批量写入,也支持在JDBC中使用Insert实时写入。
  • 丰富生态: Spark使用Spark-Doris-Connector读写Doris;Flink-Doris-Connector 使 Flink CDC 能够实现 Exactly-once 数据写入 Doris;提供 DBT Doris Adapter 用于将 Doris 中的数据与 DBT 进行转换。
责任编辑:华轩 来源: 今日头条
相关推荐

2024-01-09 16:02:11

数据库流服务大数据

2016-11-29 09:27:22

Apache SparDashboard构建

2017-07-13 10:04:20

云客服分析架构

2020-04-25 21:04:09

NoSQL数据库大数据

2023-10-26 16:06:50

BuildpackDocker

2024-02-19 00:06:06

数据分析系统Doris

2023-06-01 21:50:53

Doris数仓SQL

2016-08-31 14:41:31

大数据实时分析算法分类

2023-07-31 07:49:03

2014-03-28 17:30:03

大数据应用

2016-11-22 13:25:28

Apache Spar大数据

2022-07-18 16:02:10

数据库实践

2019-08-19 14:24:39

数据分析Spark操作

2024-05-07 08:16:17

2024-07-25 08:12:11

2023-12-28 10:58:45

2011-07-12 10:09:08

XML数据库服务器

2023-05-08 07:20:22

Doris分析型数据库

2017-08-29 16:25:21

数据库GPU数据存储

2011-07-12 09:20:08

XML数据库
点赞
收藏

51CTO技术栈公众号