有道教育数仓建设实践

浊酒南街 浊酒南街     2022-12-03     267

关键词:

目录

1、整体架构

数据源:数据主要来自Mysql、ES、DDB的业务数据,以及kafka的埋点日志数据;

数据处理层:基于有数大数据平台的存储、计算能力之上建设数据仓库;

查询层:查询层主要为应用提供即席查询、olap计算和存储能力,根据具体的业务需求选择presto、doris、es;

应用服务:目前数据仓库支撑了有数BI报表、个性化推荐、市场营销、数据分析、用户画像、用户增长等数据应用。

2、数据仓库建设过程

2.1 业务调研

业务调研需要从自上而下和自上而下两个方向去执行:

自上而下:根据已有的报表需求和业务需求梳理这些数据的原始数据来源、数据总量和增量、结构、计算逻辑和数据及时性等。

自下而上:现有的报表和需求有时候并不能覆盖所有业务过程,需要从业务过程调研原始数据,线上的业务过程会产生哪些数据。

自上而下和自上而下双管齐下是为了更全面调研业务系统的数据。避免出现基于少量的业务调研设计的数仓架构和规范不满足后面业务的扩展,影响数仓的稳定性。

2.2 架构设计

平台架构:

平台组件技术选型及架构设计,根据业务调研结果选型包括计算引擎、存储、调度系统等组件。目前有数大数据平台基本满足离线数仓的架构需求。
数仓分层架构:

ODS层 :数据操作层,存储源数据最原始数据;

DWD层:通过清洗、整合ODS层数据生成的最原子粒度的事实表,主要存储原子指标数据;

DIM层 :存储描述维度属性的维度表,维度表多用于与事实表关联汇总查询;

DWS层:根据需求对原子指标进行周期+修饰词(维度属性)聚合汇总的轻度汇总层;

ADS层 :面向主题应用的报表及服务结果层。

数仓总线矩阵:

划分数据域,构建业务过程与维度关系矩阵,总线矩阵中行表示业务过程,列表示维度,通过总线矩阵梳理业务过程和维度关系,是模型设计过程的基本工具,以此来保证维度跨多业务过程的一致性,以及防止在事实表设计时遗漏关联维度。


2.3 模型设计

整个数仓是按照kimball的维度建模方式建设,设计步骤如下:

(1)选择业务过程

选择业务活动行为的过程,如:下单、支付、看视频。

(2)声明粒度

粒度即事实表中每行数据代表什么,明细表中应声明业务过程最细的粒度,如:每个课程的订单记录,支付的每一笔钱记录,每次打开视频的观看记录。

(3)确定维度

维度是用来描述业务过程发生的环境实体,如:谁在什么时候什么地方以何种方式下单。

(4)确定事实

确定业务过程中的度量,即原子指标,如:下单金额、支付金额、观看时间。

(5)冗余维度

冗余常用维度信息至事实表中,提高模型使用效率,冗余的过程中应尽量使用已经开发好的维表,保证维度属性的逻辑一致性。

通过上面的步骤我们大概能设计出围绕一个业务过程的星型模型,当多个星型模型通过事实表或者维度表相互连接时,就形成了数仓中常见的事实星座模型。

2.4 模型开发

2.4.1 开发原则

(1)高内聚低耦合

将业务相近或者相关的数据、粒度相同数据设计为一个逻辑或者物理模型;将高概率同时访问的数据放在一起,将低概率同时访问的数据分开存储。

(2)核心模型与扩展模型分离

在设计明细表和维度表的时候,采用垂直切分的方式,将常用字段保留在核心模型,将一些大字段、个性化或者少量应用的字段剥离到扩展模型,常用杂项维度的方式,保证核心模型的简洁

(3)公共处理逻辑下沉以及单一

将业务数据处理逻辑下沉至明细层进行处理,不暴露给应用层,并保证处理逻辑单一存在。

(4)适当冗余

针对常用维度属性冗余在明细层和汇总层,提高开发效率。

(5)数据可回滚

处理逻辑不变,全量处理在不同时间多次运行数据的结果需要确定不变,增量处理根据输入时间变化可回刷历史数据。

2.4.2 开发规范

原则上层次调用关系为ODS>DWD>DWS>ADS,部分需要针对明细层的需求或者不稳定的业务场景可遵循ODS>DWD>ADS。禁止反向依赖。比如DWS依赖ADS,造成任务深度多大,相互依赖等问题;

ODS层不能被应用层直接调用,如不确定数据处理逻辑的可先在明细层建立视图,通过视图访问;

多个计算任务输出至一个表时,需要建立一个依赖这多个任务的虚拟节点进行管理;

DWS层进行粗粒度汇总时,优先调用已经产出DWS较细粒度汇总,可避免直接从明细层计算,提高计算效率;

一个计算任务只能输出至一个表;

一个计算任务中间使用的临时表不得被其他任务使用;

建表必须对字段和表描述进行中文描述;

指标类的字段空值用零填充,维度属性值为空的用-99(未知)填充。

2.4.3 表命名规范

ODS 层 :ods_源库标识源库表名周期存储方式

DIM 层 :dim_业务/pub维度定义自定义命名_周期存储方式

DWD 层:dwd_业务/pub数据域业务过程缩写[自定义命名]周期存储方式

DWS 层:dws_业务/pub数据域自定义命名时间粒度周期存储方式

ADS 层:ads_业务/pub需求模块名自定义命名_周期存储方式

刷新周期缩写:h:小时、d:天、m:月、y:年、rt实时

分区存储:f:全量、i增量

脚本内临时表命名规范:project_name.tmp_产出表表名_n。

2.4.4 测试与上线

在模型开发完成后测试数据结果的准确性、完整性、一致性和及时性,通过探查指标、数据量、维度属性分布,模型之间关联情况,任务执行效率等方式测试。上线后设置模型基线,配置数据质量监控。

3、未来展望

目前有道成人教育离线数据仓库已经用于各个数据应用场景,接下来的重点工作则是对数仓长期的数据治理工作,其中重点会放在数据规范方面。由于业务对实时的需求日益增多,目前也有尝试使用sloth平台开发实时数仓,未来会往流批一体方向发展。

有道教育数仓建设实践

目录1、整体架构2、数据仓库建设过程2.1业务调研2.2架构设计2.3模型设计2.4模型开发3、未来展望1、整体架构数据源:数据主要来自Mysql、ES、DDB的业务数据,以及kafka的埋点日志数据;数据处理层:基于有数大数据... 查看详情

美团实时数仓架构演进与建设实践

...数据平台中心的计算平台团队,当前主要工作内容是实时数仓平台的研发。今天和大家分享一下实时数据在美团的典型应用场景,实时数仓建设中的挑战和解决方案,包括一些关键的设计细节。主要介绍以下几方面内容:建设背... 查看详情

数仓埋点体系与归因实践(代码片段)

目录1.埋点体系建设1.1埋点分类1.2开发流程&保障2.数仓建设2.1业务架构图2.2数仓架构图2.3事实表建设2.4维表建设2.5dws表建设3.uuid和归因建设3.1uuid建设3.2归因建设4.数据应用5.未来展望导读:当今是流量为王时代,严选作... 查看详情

数仓埋点体系与归因实践(代码片段)

目录1.埋点体系建设1.1埋点分类1.2开发流程&保障2.数仓建设2.1业务架构图2.2数仓架构图2.3事实表建设2.4维表建设2.5dws表建设3.uuid和归因建设3.1uuid建设3.2归因建设4.数据应用5.未来展望导读:当今是流量为王时代,严选作... 查看详情

有赞实时数仓建设实践与经验(代码片段)

...断发展和商家实时应用场景的不断丰富,有赞在实时数仓建设方面做了大量的尝试和实践。本文主要分享有赞在建设实时数仓过程中所沉淀的经验,内容包括以下五个部分:建设背景应用场景方案设计项目应用未来展... 查看详情

汤楚熙:美团实时数仓架构演进与建设实践

...数据平台中心的计算平台团队,当前主要工作内容是实时数仓平台的研发。今天和大家分享一下实时数据在美团的典型应用场景,实时数仓建设中的挑战和解决方案,包括一些关键的设计细节。主要介绍以下几方面内容:建设背... 查看详情

网易严选离线数仓质量建设实践

做数仓最重要的是什么?一是模型易用性,二是数据质量。模型易用性我们可以通过建模规范、指标管理等方式去实现。而对于数据质量呢?本篇将以严选数仓为例,从建设目标、保障措施、效果评价等几方面探... 查看详情

网易严选离线数仓质量建设实践

做数仓最重要的是什么?一是模型易用性,二是数据质量。模型易用性我们可以通过建模规范、指标管理等方式去实现。而对于数据质量呢?本篇将以严选数仓为例,从建设目标、保障措施、效果评价等几方面探... 查看详情

汤楚熙:美团实时数仓架构演进与建设实践

...数据平台中心的计算平台团队,当前主要工作内容是实时数仓平台的研发。今天和大家分享一下实时数据在美团的典型应用场景,实时数仓建设中的挑战和解决方案,包括一些关键的设计细节。主要介绍以下几方面内容:建设背... 查看详情

美团外卖实时数仓建设实践

本文主要介绍一种通用的实时数仓构建的方法与实践。实时数仓以端到端低延迟、SQL标准化、快速响应变化、数据统一为目标。美团外卖数据智能组总结的最佳实践是:一个通用的实时生产平台跟一个通用交互式实时分析引... 查看详情

实时数仓在有赞的实践(代码片段)

...断发展和商家实时应用场景的不断丰富,有赞在实时数仓建设方面做了大量的尝试和实践。本文主要分享有赞在建设实时数仓过程中所沉淀的经验,内容包括以下五个部分:建设背景应用场景方案设计项目应用未来展... 查看详情

美团外卖实时数仓建设实践

实时数仓以端到端低延迟、SQL标准化、快速响应变化、数据统一为目标。美团外卖数据智能组总结的最佳实践是:一个通用的实时生产平台跟一个通用交互式实时分析引擎相互配合,同时满足实时和准实时业务场景。两... 查看详情

快手实时数仓建设实践

一、快手实时计算场景快手业务中的实时计算场景主要分为四块:公司级别的核心数据:包括公司经营大盘,实时核心日报,以及移动版数据。相当于团队会有公司的大盘指标,以及各个业务线,比如视频相关、直播相关,都会... 查看详情

《美团数据平台及数仓建设实践》(209页).pdf

...f0c;有需要的私信:"美团"领取1.美团数据平台及数仓建设实践.PDF下载美团技术团队的博客质量非常高,里面有许多关于大数据的文章,具有很大的参考价值。但是博客功能简陋,没有基本的搜索功能,这... 查看详情

实时数仓系列-网易云音乐基于flink+kafka的实时数仓建设实践

...云音乐的应用实战:背景Flink+Kafka平台化设计Kafka在实时数仓中的应用问题&改进直播回放:https://developer.aliyun.com/live/2894一、背景介绍(一)流平台通用框架目前流平台通用的架构一般来说包括消息队列、计算引擎和存储三部... 查看详情

实时数仓在有赞的实践(代码片段)

...断发展和商家实时应用场景的不断丰富,有赞在实时数仓建设方面做了大量的尝试和实践。本文主要分享有赞在建设实时数仓过程中所沉淀的经验,内容包括以下五个部分:建设背景应用场景方案设计项目应用未来展... 查看详情

实时数仓在有赞的实践(代码片段)

...断发展和商家实时应用场景的不断丰富,有赞在实时数仓建设方面做了大量的尝试和实践。本文主要分享有赞在建设实时数仓过程中所沉淀的经验,内容包括以下五个部分:建设背景应用场景方案设计项目应用未来展... 查看详情

云原生离线实时一体化数仓建设与实践

简介:本篇内容分享了云原生离线实时一体化数仓建设与实践。分享人:刘一鸣Hologres产品经理视频链接:数据智能实战营-北京站专题回顾正文:本篇内容将通过五个部分来介绍云原生离线实时一体化数仓建设与... 查看详情