在 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
欢迎关注公众号:“全栈开发指南针”
这里是技术潮流的风向标,也是你代码路程的导航仪! |