数仓体系效率全面提升!同程数科基于 Apache Doris 的数据仓库建设

同程数科利用ApacheDoris构建了新一代数仓架构2.0,提升了数据接入、开发、查询和维护效率。通过引入Doris的丰富数据接入方式、并行计算能力和极简运维,解决了旧架构中组件过多、开发链路长、性能瓶颈等问题。Doris的MPP架构、SQL兼容性以及与BI工具的友好集成,加速了实时看板、分析和财务需求的响应速度。未来,同程数科计划引入DorisManager、FlinkCDC,并持续跟进社区迭代,以优化现有架构。

应用实践 | 数仓体系效率全面提升!同程数科基于 Apache Doris 的数据仓库建设

导读:同程数科成立于 2015 年,是同程集团旗下的旅游产业金融服务平台。2020 年,同程数科基于 Apache Doris 丰富的数据接入方式、优异的并行运算能力、极简运维等特性,引入 Apache Doris 进行数仓架构2.0 的搭建。本文详细讲述了架构1.0 到 2.0 的演进过程及 Doris 的应用实践,希望对大家有所帮助。

作者同程数科大数据高级工程师 王星

业务背景

业务介绍

同程数科是同程集团旗下的旅游产业金融服务平台,前身是同程金服,正式成立于 2015 年。同程数科以“数字科技引领旅游产业”为愿景,坚持以科技的力量,赋能我国旅游产业。

目前,同程数科的业务涵盖产业金融服务、消费金融服务、金融科技及数字科技等板块,累计服务覆盖超过千万用户和 76 座城市。

图1.1 业务场景-业务介绍

业务需求

主要包含四大类:

  • 看板类:主要包括业务实时驾驶舱以及 T+1 业务看板等。

  • 预警类:主要包括风控熔断、资金异常以及流量监控等。

  • 分析类:主要包括及时性数据查询分析以及临时取数等。

  • 财务类:主要包括清算以及支付对账需求。

图1.2 业务场景-业务需求

综合以上业务需求,我们进行了系统架构建设。

架构演进之 1.0

工作流程

图2.1 架构演变-架构1.0

架构1.0 是前几年非常流行的以 SteamSets 和 Apache Kudu 为核心的第一代架构。

该架构通过 StreamSets 进行数据库 Binlog 采集后实时写入 Apache Kudu 中,最后通过 Apache Impala 和可视化工具进行查询和使用。这个过程存在架构链路较长以及 SteamSets 对部分配置复用性表现欠佳的问题,另外 Apache Kudu 的多表关联与大表关联存在一定的性能瓶颈,且对 IO 方面要求较高。

图2.1 下半部分中实时计算流程的应用与上半部分较为相近,在实时计算中,埋点数据发送到 Kafka 后会通过 Flink 进行实时计算,并将计算结果数据落入分析库与 Hive 库中用于数仓关联。

优势与不足

图2.2 架构演变 优点与缺点

优势:

  • 架构1.0 选择了 CDH 全家桶。CDH 提供了众多大数据组件,可以相互集成并投入使用,同时其配置相对灵活。

  • 使用的 SteamSets 支持可视化拖拉式与配置式的开发方式,因此开发人员对 SteamSets 的接受程度较高。。

不足:

  • 组件引入过多,维护成本随之增加;当数据出现问题时,排查与修复链路相对较长。

  • 多种技术架构和过长的开发链路,提高了数仓人员的学习成本与要求,数仓人员需要在不同地方转换后再进行开发,导致开发流程不顺畅、开发效率降低。

  • Apache Kudu 在大表关联 Join 方面性能差强人意。

  • 由于架构使用 CDH 构建,离线集群和实时集群未进行分离,形成资源相互竞争;离线跑批的过程中对 IO 或磁盘消耗较大,无法保证实时数据的及时性。

  • 虽然 SteamSets 配备了预警能力,但作业恢复能力仍相对欠缺。配置多个任务时对 JVM 的消耗较大,导致恢复速度较慢。

架构演进之 2.0

工作流程

由于架构1.0 的不足远多于优点,在 2020年,我们调研了市面许多进行实时开发的组件,发现了 Apache Doris,通过调研对比,最终决定将 Apache Doris 引入了架构2.0。

<think>好的,我现在要处理用户关于Apache Doris数据仓库开发规范的问题。首先,用户明确想了解最佳实践和规范文档,我需要根据提供的引用内容来组织回答。 首先,我需要回顾用户提供的四个引用内容。引用1提到Doris的实时分析能力和性能,引用2提到的经验总结,引用3讨论Doris的特性和安装,引用4则涉及云积天赫用Doris替代Hive的实践。这些引用内容中,引用2和4可能包含具体的开发规范和经验。 接下来,我应该整理出开发规范的主要方面。根据引用2,开发人员关注点包括表结构设计、查询优化、据导入和资源管理。引用4提到功能丰富和核心优势,可能涉及架构设计。需要将这些点结构化,分点说明。 然后,每个部分需要具体展开。例如,表结构设计部分可能需要分桶和分区策略,据类型选择,索引优化。查询优化可能涉及避免全表扫描、合理使用物化视图、Join优化。据导入方面,需要考虑批量和实时导入方式,事务管理。资源管理可能包括资源组设置和监控告警。架构设计方面,分层设计和元据管理可能重要。 另外,用户可能需要知道如何获取官方文档,引用1和3提到官方文档,应该推荐用户参考,并附上链接。时,需要生成相关问题,可能涉及性能调优、迁移实践、监控工具和实时分析场景等。 需要确保回答符合系统级指令:使用正确的中文,学公式用$...$,独立公式用$$...$$,但当前内容可能不涉及学公式,所以可能不需要。时,添加引用标识,比如[^2][^4]在相关段落末尾。 最后,检查回答结构是否清晰,是否符合用户要求的最佳实践和规范,并确保引用的正确性。生成的相关问题需要围绕Doris开发的不方面,帮助用户深入理解。</think>### Apache Doris 数据仓库开发规范与最佳实践 Apache Doris 作为高性能实时分析型数据仓库,其开发规范需围绕**表设计、查询优化、据管理、资源控制**等核心环节展开。以下是关键实践要点: --- #### 1. **表结构设计规范** - **分桶与分区策略** 根据据规模和查询模式选择合理的分桶键(Bucketing Key)和分区键(Partition Key)。例如,时间字段常用作分区键以加速时间范围查询,分桶键应选择高基列以均匀分布据。 $$ \text{分桶} = \frac{\text{据量预估}}{\text{单副本据块大小(默认 1GB)}} $$ - **据类型优化** 优先使用精确类型(如 `INT`、`DECIMAL`)替代字符串类型,并避免过长的 `VARCHAR` 定义以减少存储和计算开销。 - **索引设计** 合理使用前缀索引(Prefix Index)和 Bloom Filter 索引,针对高频过滤字段(如用户ID)加速查询[^3]。 --- #### 2. **查询优化实践** - **避免全表扫描** 通过分区剪枝(Partition Pruning)和分桶裁剪(Bucket Pruning)减少 I/O 消耗,确保查询条件命中分区和分桶键[^2]。 - **物化视图** 对复杂聚合查询预建物化视图,例如: ```sql CREATE MATERIALIZED VIEW sales_summary AS SELECT product_id, SUM(quantity), AVG(price) FROM sales GROUP BY product_id; ``` - **Join 优化** 小表使用 `Broadcast Join`,大表使用 `Shuffle Join`,并通过 `EXPLAIN` 分析执行计划。 --- #### 3. **据导入与管理** - **批量导入** 使用 `Broker Load` 或 `Spark Connector` 实现高效批量据导入,控制单批次据量在 1-10GB 范围[^3]。 - **实时写入** 通过 `Stream Load` 或 `Flink Connector` 支持低延迟写入,需注意小文件合并策略。 - **据生命周期** 设置分区 TTL(Time-to-Live)自动清理过期据,例如: ```sql ALTER TABLE logs SET ("dynamic_partition.ttl" = "7"); ``` --- #### 4. **资源与权限管理** - **资源组隔离** 为不业务线分配独立资源组(Resource Group),避免查询间资源竞争: ```sql CREATE RESOURCE GROUP analytics_group PROPERTIES ("cpu_share"="50", "memory_limit"="30%"); ``` - **监控与告警** 通过 Doris 的 `FE Metrics` 和 `BE Metrics` 监控集群状态,重点关注查询延迟、内存使用率和副本健康度。 --- #### 5. **数仓架构设计建议** - **分层设计** 采用 ODS(原始据层)、DWD(明细层)、DWS(汇总层)分层模型,利用 Doris 的物化视图和 Rollup 技术加速上层查询。 - **元据管理** 统一管理表注释、字段注释,并通过 `INFORMATION_SCHEMA` 定期审计元据一致性。 --- ### 官方文档与学习资源 - **Apache Doris 官方文档**:[https://doris.apache.org](https://doris.apache.org) [^1] - **最佳实践案例**:与云积天赫的 Doris 落地经验 [^2] ---
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SelectDB技术团队

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值