带你读《Apache Doris 案例集》——05 当 Apache Doris 遇上大模型:探秘腾讯音乐如何 基于大模型+ OLAP 构建智能数据服务平台(3)

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 带你读《Apache Doris 案例集》——05 当 Apache Doris 遇上大模型:探秘腾讯音乐如何 基于大模型+ OLAP 构建智能数据服务平台(3)

更多精彩内容,欢迎观看:

带你读《Apache Doris 案例集》——05 当 Apache   Doris 遇上大模型:探秘腾讯音乐如何 基于大模型+ OLAP  构建智能数据服务平台(2):https://developer.aliyun.com/article/1405739


Apach  Doris性能优化实践 

 

Colocate Join 宽表优化 

image.png

 

在上文架构改造中我们提及,由于宽表开发会不断叠加字符数据,消耗存储空间,降低查询性能,因此我们充分利用了Colocate Join 功能对宽表拆分、本地关联查询加速进行优化,具体过

程如下:

 

●指标大宽表:采用 Apache Doris Aggregate  Key 模型,使用增量的方式将数据覆盖写入;

 

缓慢维度表:主要通过start_date  end_date   的设置进行表建设,同时利用end_date   行分区,当我们需要查询最新的维度数据时只需要将 end date设置为‘9999-12-31'即可。此外我们引用 Doris 2.0版本中的写时合并,利用 Unique Key 模型进行维度数据聚合,使查询性能在该场景中得到很大的提升。

 

●对外访问视图:在指标与维度表建设完成之后,利用CREAT   VIEW 提供统一对外访问视图,同时添加 end date条件,使视图保持最新数据的展示。通过这样的方式不仅能够大幅度降低查询的复杂性,还能够充分利用 Doris 特性实现查询加速。

 

Rollup 解决指标膨胀问题

 

宽表拆分为指标表与维度表后,我们发现每一次视图产生都需要定义多个指标,出现指标膨胀的情况。以歌曲播放量结算为例,当仅定义单一指标时,我们需要将各个平台+各类内容进行排列组合,使语义层定义很多指标数据,造成指标数量过多。此外这些指标都需要通过离线生产任务进行加工,并通过 Hive 导入至Apache Doris 中,造成链路较长、加工维护比较困难。


平台指标:覆盖四大音乐平台,包括酷我、QQ 音乐、酷狗、K

内容指标:包含歌曲、歌手、专辑以及厂牌等数据

image.png

 为了有效解决指标膨胀问题,我们引入了Doris  Rollup 功能。如图所示,在 Doris  Base 表数据基础之上,可以根据指定维度来创建任意多个 Rollup 视图并自动进行 GROUP  BY,  实现各个平台与各类内容指标定义不重复、查询性能提升的目标。

 

 物化视图实现查询加速 

 image.png

 除了减少指标数量外,我们还希望能够衍生指标并且做到查询加速。Apache Doris 2.0 版本中我们采用了物化视图功能进行衍生指标的开发。目前,我们主要在单一维度表中单独地去查询自定义标签与维度,在定义复杂口径后自动的通过语义层物化任务。

 

如上图所示我们将指标 M1M2M3与维度T1T2T3分别进行定义,并通过SUM 加工衍生标签,在加工完成之后创建物化视图加速查询。此外,Doris后续2.1版本中还会支持多表创建物化视图,我们也非常期待使用该功能。

 

 Apach Doris 导入性能调优实践

 

目前,腾讯音乐具有90+数据来源表、 3000+维度和指标、导入数据量达到千亿级别,我们希望数仓能够支持大规模数据快速导入,且导入过程中保证数据写入的准确性。

 image.png 

 

导入链路如图所示,主要分为离线与实时两个部分,离线链路中指标表与变更维度表通过Spark进行批量导入,两类表利用Flink聚合形成宽表后写入;实时链路主要利用Kafak消息队列进行流式写入。最终,离线与实时两条链路利用Flink实时写入Apache Doris数仓中。

 

由于 Flink 聚合为攒批写入,如果出现写入任务失败,会导致数据丢失;同时,在聚合任务过多、字段过多的情况下存在Compaction不及时的情况,导致实时能力不可控;此外在加工宽表的过程中,也会造成重复写入的问题,无法保证数据写入准确性。 

 

Apache Doris 2.0版本发布后,我们引入了其全新功能 Flink Doris ConnectorDoris Compaction,有效解决了 Flink聚合引起的问题。

 

Flink Doris Connector 实现快写入

 

Flink Doris Connector主要是依赖Checkpoint机制进行流式写入,同时该功能默认开启两阶段提交,保证写入过程中 Exactly Once 语义。值得注意的是,我们在引入最新版的 Flink Doris Connector 功能后,实现了从关系型数据库到Apache Doris 的一键整库同步,承载了我们实际业务中千亿级别的实时并行写入,满足数据快写入与不丢不重的需求。

 

Doris  Compaction 保证写入稳定性

 

为了解决 Flink 聚合引起的偶发性Compaction 不及时问题,我们引入最新版的 Vertical CompactionSegment  Compaction功能。

 

·VerticalCompaction功能优势:在单次合并过程中,我们不需要再将所有的列读出,只需要加载部份列数据即可,这能极大减少合并过程中的内存占用问题,提高压缩的执行速度,实现在大宽表场景下的部份数据合并。 

 

· Segment   Compaction功能优势: 在单批次大数据量的导入场景下可以有效减少 Flink写入

过程中产生的Segment数量,且能够使合并和导入两个过程并行,避免增加导入时间。

image.png

 如上图所示在引入Doris Compation 功能后,在写入量增加50%的情况下,Compaction Score 从平均650分降低至80分,技术人员不再需要担心夜间出现告警的情况,保证了整体链路的稳定性。 

 

 总结收益与展望 

 

在引入 Apache Doris 后,数据架构围绕降本增效的目标,不仅在写查方面的性能得到大幅度提

升,并且有效减少架构成本与资源开销,具体的收益如下:

 

极速查询分析: 通过 Apache DorisRollup物化视图、倒排索引功能,由原来的分钟级查询时间达到现如今秒级毫秒级;

 

 

导入性能提升:导入优化完成后,原本3000+维度、指标数据的导入时间需要超过一天,现如今能够在8 小时内完成导入,导入时间缩短至原来的1/3,实现快速导入需求;更重要的是,ApacheDoris 在保证数据快写入的同时,使数据能够不丢不重、准确写入:

 

链路极简与统一:ApacheDoris将查询与分析出口引擎统一,去除 Elasticsearch 集群使架构链路极简;

 

存储成本降低:通过大宽表拆分的方式,使存储成本降低30%,开发成本降低40%

 

在未来,我们将进一步拓展使用Apache   Doris 湖仓一体功能,对Hive MySQL、数据湖等多源异构数据库进行网关统一,实现真正意义上的实时统一分析引擎。同时,尝CCR跨集群数据同步功能,通过用户多集群的数据库表自动同步以提升在线服务数据的可用性。未来,我们也将在测试环节中验证读写负载分离以及多机房备份的性能效果。

 

目前,Apache Doris 社区已经公布了后续版本中将推出的存算分离全新架构,能够利用低成本 的共享存储系统简化上层计算节点的复杂度,使架构带来巨大的成本经济优势。我们也希望能够进一步探索,基于 Apache  Doris 本地高速缓存+共享存储系统的混合模式,在保障性能的同时降低系统存储开销。

 

最后,非常感谢SelectDB 技术团队的积极响应与专业解答,希望通过这篇文章分享大语言模型在互联网业务中的应用,也欢迎更多人参与Apache Doris社区与超音数平台的开源框架构建。最后,我们也会持续参与社区活动,将相关成果贡献回馈社区,希望Apache Doris飞速发展,越来越好!

相关实践学习
数据库实验室挑战任务-初级任务
本场景介绍如何开通属于你的免费云数据库,在RDS-MySQL中完成对学生成绩的详情查询,执行指定类型SQL。
阿里云云原生数据仓库AnalyticDB MySQL版 使用教程
云原生数据仓库AnalyticDB MySQL版是一种支持高并发低延时查询的新一代云原生数据仓库,高度兼容MySQL协议以及SQL:92、SQL:99、SQL:2003标准,可以对海量数据进行即时的多维分析透视和业务探索,快速构建企业云上数据仓库。 了解产品 https://www.aliyun.com/product/ApsaraDB/ads
相关文章
|
27天前
|
缓存 安全 Java
阿里云数据库 SelectDB 内核 Apache Doris 2.0.6 版本正式发布
阿里云数据库 SelectDB 内核 Apache Doris 2.0.6 版本正式发布
|
1月前
|
SQL 存储 JSON
阿里云数据库 SelectDB 内核 Apache Doris 2.1.0 版本发布:开箱盲测性能大幅优化,复杂查询性能提升 100%
亲爱的社区小伙伴们,Apache Doris 2.1.0 版本已于 2024 年 3 月 8 日正式发布,新版本开箱盲测性能大幅优化,在复杂查询性能方面提升100%,新增Arrow Flight接口加速数据读取千倍,支持半结构化数据类型与分析函数。异步多表物化视图优化查询并助力仓库分层建模。引入自增列、自动分区等存储优化,提升实时写入效率。Workload Group 资源隔离强化及运行时监控功能升级,保障多负载场景下的稳定性。新版本已经上线,欢迎大家下载使用!
阿里云数据库 SelectDB 内核 Apache Doris 2.1.0 版本发布:开箱盲测性能大幅优化,复杂查询性能提升 100%
|
1月前
|
消息中间件 存储 关系型数据库
使用Apache Hudi构建下一代Lakehouse
使用Apache Hudi构建下一代Lakehouse
37 0
|
1月前
|
存储 关系型数据库 Apache
Halodoc使用Apache Hudi构建Lakehouse的关键经验
Halodoc使用Apache Hudi构建Lakehouse的关键经验
39 4
|
1天前
|
消息中间件 存储 Java
深度探索:使用Apache Kafka构建高效Java消息队列处理系统
【4月更文挑战第17天】本文介绍了在Java环境下使用Apache Kafka进行消息队列处理的方法。Kafka是一个分布式流处理平台,采用发布/订阅模型,支持高效的消息生产和消费。文章详细讲解了Kafka的核心概念,包括主题、生产者和消费者,以及消息的存储和消费流程。此外,还展示了Java代码示例,说明如何创建生产者和消费者。最后,讨论了在高并发场景下的优化策略,如分区、消息压缩和批处理。通过理解和应用这些策略,可以构建高性能的消息系统。
|
24天前
|
关系型数据库 MySQL OLAP
PolarDB +AnalyticDB Zero-ETL :免费同步数据到ADB,享受数据流通新体验
Zero-ETL是阿里云瑶池数据库提供的服务,旨在简化传统ETL流程的复杂性和成本,提高数据实时性。降低数据同步成本,允许用户快速在AnalyticDB中对PolarDB数据进行分析,降低了30%的数据接入成本,提升了60%的建仓效率。 Zero-ETL特性包括免费的PolarDB MySQL联邦分析和PolarDB-X元数据自动同步,提供一体化的事务处理和数据分析,并能整合多个数据源。用户只需简单配置即可实现数据同步和实时分析。
|
27天前
|
存储 SQL 数据管理
阿里云数据库 SelectDB 内核 Apache Doris 如何基于自增列满足高效字典编码等典型场景需求|Deep Dive 系列
自增列的实现,使得 Apache Doris 可以在处理大规模时展示出更高的稳定性和可靠性。通过自增列,用户能够高效进行字典编码,显著提升了字符串精确去重以及查询的性能。使用自增列作为主键来存储明细数据,可以完美的解决明细数据更新的问题。同时,基于自增列,用户可以实现高效的分页机制,轻松应对深分页场景,有效过滤掉大量非必需数据,从而减轻数据库的负载压力,为用户带来了更加流畅和高效的数据处理体验。
|
27天前
|
SQL 数据可视化 Apache
阿里云数据库内核 Apache Doris 兼容 Presto、Trino、ClickHouse、Hive 等近十种 SQL 方言,助力业务平滑迁移
阿里云数据库 SelectDB 内核 Doris 的 SQL 方言转换工具, Doris SQL Convertor 致力于提供高效、稳定的 SQL 迁移解决方案,满足用户多样化的业务需求。兼容 Presto、Trino、ClickHouse、Hive 等近十种 SQL 方言,助力业务平滑迁移。
阿里云数据库内核 Apache Doris 兼容 Presto、Trino、ClickHouse、Hive 等近十种 SQL 方言,助力业务平滑迁移
|
1月前
|
SQL 数据采集 存储
数据仓库(12)数据治理之数仓数据管理实践心得
这边文章聊聊自己对数据治理开发实践的一些思路,就是聊聊怎么开始去做数据治理这件事情。说起数据治理,有时候虽然看了很多文章,看了很多的介绍,了解数据治理的理论,但是实际上需要我们去搞的时候,就会踩很多的坑。这里记一下自己做数据治理的一些思路,做做笔记,也分享给需要的同学。 当然,想要做数据治理,想要学习了解,一下数据治理的范围,理论等,最好可以看看别人怎么做的,了解数据治理可以参考:[数据仓库(11)什么是大数据治理,数据治理的范围是哪些](https://zhuanlan.zhihu.com/p/467433967)。
229 0
|
1月前
|
SQL 分布式计算 NoSQL
使用Apache Hudi和Debezium构建健壮的CDC管道
使用Apache Hudi和Debezium构建健壮的CDC管道
16 0

推荐镜像

更多