更新时间:2025-09-15 GMT+08:00
分享

Doris基本原理

Doris简介

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

Doris最早是诞生于广告报表业务的Palo项目。目前Doris社区已经聚集了来自不同行业近百家企业的300余位贡献者,并且每月活跃贡献者人数也接近100位。2022年6月,Doris成功从Apache孵化器毕业,正式成为Apache顶级项目(Top-Level Project,TLP),Doris如今在中国乃至全球范围内都拥有着广泛的用户群体,截止目前,Doris已经在全球超过500家企业的生产环境中得到应用,在中国市值或估值排行前50的互联网公司中,有超过80%长期使用Doris。同时在一些传统行业如金融、能源、制造等领域也有着丰富的应用。

Doris架构

Doris查询数据采用MPP架构,节点间和节点内都并行执行,支持多个大表的分布式 Shuffle Join,多表联合查询性能优异,能够更好地应对各种复杂场景的业务查询。

图1 Doris组件架构图

Doris引擎的整体架构非常简洁,主要有两类进程:

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

两类进程都可以横向扩展,单集群节点可以灵活扩展,存储容量可以增加到数十PB。并且这两类进程通过一致性协议来保证服务的高可用和数据的高可靠。这种高度集成的架构设计降低了运维成本。

产品优势

  • 性能优异:自带高效的列式存储引擎,减少数据扫描量的同时还实现了超高的数据压缩比例。同时Doris还提供了丰富的索引结构来加速数据读取与过滤,利用分区分桶裁剪功能,Doris可以支持在线服务业务的超高并发,单节点最高可支持上千QPS。更进一步,Doris结合了向量化执行引擎来充分发挥现代化CPU并行计算能力,辅以智能物化视图技术实现预聚合加速,并可以通过查询优化器同时进行基于规划和基于代价的查询优化。
  • 简单易用:支持标准ANSI SQL语法,包括单表聚合、排序、过滤和多表Join、子查询等,还支持窗口函数、Grouping Set等复杂SQL语法。除此之外,Doris还实现了MySQL协议兼容,用户可以通过各类客户端工具来访问Doris,并支持与BI工具的无缝对接。
  • 架构精简:系统只有两个Frontend(FE)和Backend(BE)两个模块,其中FE节点负责用户请求的接入、查询计划的解析、元数据存储及集群管理等工作,BE节点负责数据存储和查询计划的执行,自身就是一个完备的分布式数据库管理系统,用户无需安装任何第三方管控组件即可运行起Doris集群。同时,任一模块都可以支持横向拓展,集群最高可以拓展到数百个节点,支持存储超过10PB的超大规模数据。
  • 稳定可靠:支持数据多副本存储,集群具备自愈功能,自身的分布式管理框架可以自动管理数据副本的分布、修复和均衡,副本损坏时系统可以自动感知并进行修复。
  • 生态丰富:提供丰富的数据同步方式,支持快速加载来自本地、Hadoop、Flink、Spark、Kafka、SeaTunnel等系统中的数据,也可以直接访问MySQL、PostgreSQL、Oracle、S3、Hive、Iceberg、Elasticsearch等系统中的数据而无需数据复制。同时存储在Doris中的数据也可以被Spark、Flink读取,并且可以输出给上游数据应用进行展示分析。
  • 计费灵活:对于长期稳定业务可选择包年包月方式购买计算和缓存资源;对于临时多变的业务可选择按量付费方式购买计算和缓存资源,存储资源默认按照实际数据量大小计费。

相关文档