大谈数据番外:Apache Doris 2024-对话现代化数据仓库
在 12 月 14 日的 Doris Summit Asia 2024 上,Apache Doris 创始人 & PMC 成员马如悦在开场演讲中,围绕 “现代化数据仓库” 这一主题,指出 3.0 版本是 Apache Doris 研发路程中的重要里程碑,他将这一进展总结为 “实时之路”、“统一之路” 和 “弹性之路”,详细介绍了所对应的核心特性的设计思考与应用价值
在 12 月 14 日的 Doris Summit Asia 2024 上,Apache Doris 创始人 & PMC 成员马如悦在开场演讲中,围绕 “现代化数据仓库” 这一主题,指出 3.0 版本是 Apache Doris 研发路程中的重要里程碑,他将这一进展总结为 “实时之路”、“统一之路” 和 “弹性之路”,详细介绍了所对应的核心特性的设计思考与应用价值,揭晓了 2025 年社区发展蓝图。
Apache Doris
Apache Doris,自2013年诞生以来,已经走过了超过十年的发展历程。这款由百度最初为解决内部高并发、高实时的在线报表需求而开发的高性能分析型数据库,以其卓越的性能和易用性,赢得了广泛的社区支持和企业应用。截至目前,Apache Doris在GitHub上的Stars数量已接近13,000,社区贡献者接近670名,平均每月活跃贡献者超过120名。这一成就不仅使其在开源大数据和数据库领域中月活开发者数量超越了Spark、Kafka等知名项目,而且其官网浏览量在所有Apache项目中也稳居第一,2024年4月的网站PV高达900万,显示出其极高的受欢迎程度。
Apache Doris的核心优势在于其现代化的数据仓库特性,包括实时之路、统一之路和弹性之路,这些特性使其在存算分离、湖仓一体以及替换ES场景上取得了全新的进展。作为一个基于MPP架构的OLAP引擎,Doris整合了Google Mesa、Apache Impala和Apache ORCFile的技术,提供了一个简单且单一紧密耦合的系统,实现了MySQL协议,使得用户可以无缝过渡到Doris,同时获得高并发低延迟点查询性能,以及高吞吐量的即席分析查询能力。
Doris的架构设计简洁,易于运维,支持10PB以上的超大数据集,并且可以满足多种数据分析需求,如固定历史报表、实时数据分析、交互式数据分析和探索式数据分析等,使得数据分析工作更加简单高效。此外,Doris还支持与多种主流BI产品的无缝对接,包括但不限于SmartBI、DataEase、FineBI、Tableau、Power BI、SuperSet等,进一步证明了其在企业级应用中的广泛适用性和灵活性。
Real-Time:实时之路
随着工业 3.0 发展阶段的到来,数字技术已成为主流,企业正全面迈入实时分析时代。从以往批量报表转变为如今的实时仪表盘,从面向内部的分析扩展为面向外部的分析服务,从静态报表到交互式即时查询,从以人为中心到自动算法调用… 这些变化都对实时性提出了非常高的要求。
01 秒级实时数据写入
- 秒级实时数据写入能力:Apache Doris 支持快速的数据写入,通过其强大的 StreamLoad 和 Insert Into 功能,能够实现数据的秒级实时写入。此外,系统还实现了服务端批量 Group Commit 机制,进一步提高了高频数据写入的性能。Doris 还能够自动从 Kafka 消费数据,并且支持数据库的变更数据捕获(CDC)、Flink 和 Spark 的实时数据导入,所有这些操作都能在秒级内完成。
- **高效的数据更新性能:**Doris 引入了基于 Merge-on-Write 技术的主键模型,这种模型在数据写入时会标记需要更新或删除的数据,确保有效的主键在文件中只出现一次。同时,Doris 支持 UPSERT 操作,包括条件更新、条件删除以及部分列的更新,以及基于 Sequence 列的并发导入事务处理,这对于需要高频更新的场景来说,显著降低了查询时的额外计算负担。
- **轻量级元数据变更支持:**Doris 支持快速的元数据变更操作,例如修改列名、添加或删除值列,以及调整 Varchar 类型列的长度等。这些变更操作能够在毫秒级完成,保证了数据的实时更新能力,满足了对实时性的需求。
02 极速交互式分析性能
- 向量化引擎:Doris 采用了向量化查询执行,这可以显著提高数据处理的速度,因为它允许一次处理多个数据行,而不是逐行处理。
- 基于成本的优化器(CBO):Doris 利用基于成本的优化器来选择最佳的查询执行计划,这有助于提高查询效率和性能。
- 索引支持:Doris 提供了丰富的索引支持,包括单表和多表物化视图,这些索引可以加速查询响应时间,提高数据检索效率。
- ARM架构下的深度优化:Doris 针对ARM架构进行了深度优化,这使得在ARM服务器上运行的Doris能够提供更好的性能
这些性能优化使得Doris 在多个基准测试中取得了优异的成绩:
- 在ClickBench测试中,Doris 在2022年和2024年10月均领先于所有工业界数据库,显示了其卓越的性能。
- 在TPC-H测试中,Doris 在Join场景中的表现尤为突出,性能大约是Greenplum的3至8倍。
- 在TPC-DS测试中,Doris 相比Trino/Presto性能提升了约3倍,这进一步证明了Doris在处理复杂查询时的高效性。
03 超大规模用户高并发查询
- 分区和分桶裁剪:Doris 采用了分区(Partition)和分桶(Bucket)的两级分区策略,通过哈希函数将数据均匀分布到各个节点,从而提高数据读取的并行性和吞吐量。
- 主键索引与倒排索引:Doris 提供了多种索引结构,以加速数据检索和过滤过程。这些索引显著减少了需要扫描的数据行数,有效减轻了CPU和IO的负担,极大提升了系统的并发处理能力。
- 行列混合存储:Doris 引入了行式存储格式,这在数据服务场景中尤其高效,因为它减少了磁盘访问次数。用户可以根据需要开启行存模式,这样在进行点查询时,每行数据只需一次IO操作,尤其在宽表且列数较多的情况下,性能提升可以达到数量级。
- 点查询优化和预处理语句:Doris 实现了点查询的短路径优化,绕过了查询优化器和PlanFragment,简化了SQL的执行流程,直接采用快速高效的读取路径来获取所需数据。同时,Doris 的前端(FE)支持与MySQL协议兼容的预处理语句,这在CPU资源紧张时,能够实现超过4倍的性能提升。
04 高可用架构设计
在当今的商业环境中,分析型数据仓库不仅要支持企业内部的业务智能(BI)报告和分析,还要能够服务外部客户和处理大量高并发用户的需求。这要求系统能够实现秒级的数据入库和查询能力,同时在维护过程中不能出现停机。Apache Doris 在这些方面展现出了其独特的优势:
- 高可用架构:Doris 采用了一个简洁而高效的架构,确保了元数据节点(Frontend, FE)和存储计算节点(Backend, BE)没有单点故障,即使在硬件故障的情况下,服务也能持续运行,不会受到影响。
- 无缝扩容和升级:Doris 支持在线扩容和滚动升级,这意味着用户可以在不中断服务的情况下,根据需要灵活调整计算资源和存储容量,极大地增强了系统的弹性,使用户能够快速响应业务需求的变化。
- 数据自动均衡:Doris 提供了数据自动均衡的功能,这确保了数据在各个节点之间均匀分布,从而提高了查询性能和资源的利用率。
- 在线模式变更:用户可以在不停机的情况下动态地增加或删除索引,快速适应业务变化,灵活调整数据结构以适应不同的业务场景。
- 存算分离架构:在Doris的3.0版本中引入了存算分离架构,这允许通过多个计算集群实现查询负载的物理隔离和读写负载的隔离,计算资源和存储资源可以独立扩展,这进一步提高了系统的灵活性和性能。
Unified:统一之路
在大数据时代,企业在分析领域面临着复杂多变的需求,常常需要部署多种工具和技术来适应不同的业务场景。这种多元化的部署策略往往会导致系统组件过于复杂、运维成本增加、数据流转链条拉长以及数据存储的冗余等问题。
随着数据仓库技术的演进,我们见证了从传统数据仓库到大数据平台和数据湖的转变,现在又迎来了现代化数据仓库的新阶段,这些变化也带来了架构上的革新。数据源已经从单一的结构化数据扩展到了包括多种半结构化数据在内的更广泛的类型;数据处理的中间层也从ETL、数据仓库、数据湖的独立运作转变为更加紧密的集成;在应用层面,数据科学、机器学习和人工智能等高级应用被引入,成为数据分析的新高地。这些变化对数据处理的速度、灵活性和效率提出了更高的标准。
01 湖仓无界
“湖仓无界”,即 Lakehouse,是数据领域的全新概念。Apache Doris 作为一款现代化的数据仓库,凭借其独特的架构,完美诠释了这一理念。而 Apache Doris 之所以能被称为 Lakehouse,主要得益于其两大特性:
联邦查询功能: Apache Doris 通过扩展其Catalog和存储插件,提供了强大的联邦查询能力。用户无需将数据物理迁移到一个集中的存储位置,就能保持各个数据源的独立性。利用Apache Doris,用户可以轻松实现对多个异构数据源的统一分析。这包括直接查询外部表和存储文件,以及执行内部表与外部表之间的关联分析。目前,Apache Doris已经支持了超过10种主流的数据湖、数据仓库和关系型数据库的连接器,极大地扩展了其数据处理和分析的能力。
开放数据湖特性: Apache Doris 引入了高吞吐量的读写API,这些API有时被称为Data API或Storage API。这些API打破了数据的封闭性,允许外部引擎直接且高效地访问和存储在Doris中的数据,而不受性能受限的JDBC/ODBC协议的限制。这种开放的数据湖特性使得Doris能够更好地与其他数据处理系统和应用集成,提高了数据的可用性和灵活性。
02 半结构化数据分析
在2024年,我们观察到一个明显的趋势:大约有一半的Elasticsearch用户开始转向使用Apache Doris作为替代方案。尽管Elasticsearch在半结构化数据分析领域有着自己的优势,但随着Apache Doris的不断进步,它正逐渐成为半结构化数据分析领域的主要引擎。这一转变主要得益于以下三个关键因素:
- 复合数据类型支持:Apache Doris支持Array、Map、Struct和JSON等复合数据类型,这些类型在用户行为分析、用户画像分析、点查询以及查询数据湖中的Parquet、ORC等格式数据时非常有用。
- Variant数据类型:Apache Doris支持Variant数据类型,这使得它能够存储半结构化数据和包含多种数据类型(例如整数、字符串、布尔值等)的复杂数据结构,而无需在表结构中预先定义具体的列。它擅长处理复杂的嵌套结构,能够自动推断列信息并将其合并到现有的Schema中,支持动态子列的存储。此外,表中可以同时包含灵活的Variant列和静态列,这提供了更大的存储和查询灵活性。与JSON类型相比,Variant类型的存储空间减少了约65%,查询速度提升了超过10倍。
- String数据类型的优化:Apache Doris优化了正则表达式匹配和子字符串匹配算法,并引入了NGram BloomFilter,这显著提高了使用LIKE语句时的查询效率。同时,通过倒排索引技术,Apache Doris能够对文本进行细粒度的分词,使得用户可以利用MATCH等语句快速检索文本。
Elastic:弹性之路
弹性的重要性在于它能够提升数据库的灵活性、可扩展性以及资源利用率,同时可降低企业的运维成本和潜在风险。为此,Apache Doris 在提升弹性方面也不断努力。
01 存算一体
在存算一体架构的时代背景下,Apache Doris 提供了灵活的资源管理功能,以适应不同的业务需求。最初,Doris 引入了基于资源标签的物理隔离方案,随后在2.1版本中进一步推出了Workload Group管理方案。这一方案利用CGroup技术,能够在每台机器上对CPU资源进行硬性和软性的限制,从而实现更精细的资源控制。
在存储管理方面,Apache Doris 早期就实现了数据的冷热分层存储策略。具体来说,Doris 将频繁访问的热数据存储在成本较高的SSD硬盘上,以保证快速的数据访问速度;而访问频率较低的冷数据则存储在成本较低的HDD硬盘,甚至是成本更为低廉的对象存储服务上。此外,Doris 还优化了冷数据的存储方式,从多副本存储转变为单副本存储,这样冷数据就不需要占用宝贵的本地机器资源。这种优化不仅减少了资源的占用,还避免了因扩展存储容量而需要额外购买更多硬件的需求,从而降低了总体拥有成本。
02 存算分离全新架构
在Apache Doris的3.0版本中,引入了存算分离模式,这一模式基于云端原生的存算分离架构设计。用户现在可以利用多个计算集群来实现查询和读写负载的物理隔离,同时,通过使用对象存储或HDFS等成本效益高的共享存储系统,显著降低了存储成本。
在这种架构下,元数据被存储在FoundationDB中,而实际的数据则存放在S3等对象存储服务中。这种设计使得前端(FE)和后端(BE)节点都变成了无状态的,所有的数据都存储在共享的对象存储中,而不是依赖于本地存储资源。这样的架构不仅提高了系统的可扩展性和灵活性,还减少了对本地存储的依赖。
为了进一步提升性能,Doris还引入了高速缓存机制。这一机制能够缓存热点数据,减少对共享存储系统的访问次数,从而加快数据的读取速度,提高整体的查询性能。通过这些改进,Apache Doris在3.0版本中为用户提供了一个更加高效、灵活且成本效益更高的大数据分析解决方案。
03 两种部署形态融合
灵活的资源管理是数据分析基础设施中一个持续的目标。我们提供了两种部署模式:存算一体和存算分离,以利用它们各自的优势。存算一体模式以其简便的部署和卓越的性能而受到青睐,而存算分离模式则以其在独立扩展和缩减资源方面的灵活性而著称。
深入来看,存算分离的部署依赖于高效的对象存储或文件系统以及充足的网络带宽。如果企业在存储基础设施或网络带宽方面有所限制,那么存算分离的性能可能会受到影响。这也是为什么存算分离常常与云原生技术紧密相关的原因,尽管存算分离并不是云原生特有的。云原生环境提供了高带宽和优质的对象存储,为存算分离提供了理想的基础设施。
目前,一些用户认为在初期就决定采用存算一体还是存算分离的部署模式是不合理的,特别是在数据量不大的情况下。因此,Apache Doris计划在未来整合这两种部署模式,让用户不再需要在两者之间做出选择。无论是从存算一体转换到存算分离,还是从存算分离转换到存算一体,都可以通过简单的参数配置自动完成,无需重建集群或重新导入数据,从而为用户提供了更大的灵活性和便利。
会后资料
通过网盘分享的文件:Doris Summit 2024
链接: https://pan.baidu.com/s/1eV0sQdBhLb_ujAeZPYP_QQ?pwd=ipyt 提取码: ipyt
欢迎关注公众号:“全栈开发指南针”
这里是技术潮流的风向标,也是你代码旅程的导航仪!🚀
Let’s code and have fun! 🎉

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)