vlambda博客
学习文章列表

YY数据仓库架构演进与落地

、数据平台简介

借助平台化的思路,将数据更好地进行整合与统一,以组件化的方式实现灵活的数据加工与应用,以更清晰的数据职能组织应对业务的快速变化,以服务的方式更好地释放数据价值的一种方式,这些主要体现在数据组织管理的变化上。YY数据平台的核心架构如下:

YY已经建立了自己的大数据平台,并积累了一些通用、组件化的工具这些可以支撑数据仓库的快速搭建。数据仓库主要承担数据统一化建设工作,包括统一数据模型、统一指标体系等。


二、数据仓库核心架构

1.数据仓库的业务划分

1.1目前纳入数据仓库组织管理包含14块业务,如下图所示:

YY数据仓库架构演进与落地

1.2.怎么定义业务域?

用户标识(dau)和业务标志(appkey


1.3多业务下的数据仓库调整

为方便日后的业务拆分、各业务计算资源核算以及不同业务指标口径调整,调整后的数据仓库架构图如下所示:

YY数据仓库架构演进与落地

1.ODS层采用相同或类似数据结构的业务,在公共明细层进行统一处理,例如:观看、埋点数据、日活等,不区分业务,同时将明细层用单独的数据库进行管理;2. 具有独特数据结构的ODS层数据在各自业务库内单独处理;3. 汇总层、应用层的作业在各自业务库内单独处理。4. 怎么定义公共明细层?同一数据源或具有相同结构的数据源。


2.数据仓库的主题域划分

1.以YYLIVE为例其主题域的划分如下图所示:

YY数据仓库架构演进与落地

基于对目前各个部门和业务系统的梳理,YY数据仓库共设计了 6个大数据域(流量域、参与实体、交易域、直播域、埋点事件域、实验域),细分为 21 个主题。


3.数据仓库的分层结构

YYLive数据仓库遵循标准的三层架构,对数据分层的定位主要采取维度模型设计,不会对数据进行抽象打散处理,更多注重业务过程数据整合。现有数仓主要以离线为主,整体架构如下:

YY数据仓库架构演进与落地

(1)业务数据层

ODS:操作数据层定位于业务明细数据保留区,负责保留数据接入时点后历史变更数据,数据原则上全量保留。

(2)数据模型层

细分为DWV(数据明细层)、DWS(数据汇总层)、DIM(公共维度层)三层,主要用于加工存放整合后的明细业务过程数据,以及轻度或重度汇总粒度公共维度指标数据。

DWV:这一层整合后的业务过程明细数据,负责各业务场景整合、数据结构化、规范化,常用公共维度冗余加工,以及明细业务标签信息加工

DWS:汇总数据层按照主题对共性维度指标数据进行轻度、高度聚合。

DIM:对维度进行统一标准化定义,实现维度信息共享。

(3)数据应用层

DM层:主要用于各产品或各业务向个性化的数据加工。


三、数据模型

1.建模方法介绍

目前业界主要的模型设计方法论有两种,一是范式建模,二是维度建模。大数据环境下,业务系统数据体系庞杂,数据结构多样、变更频繁,并且需要快速响应各种复杂的业务需求,以上两种传统的理论都已无法满足互联网数据仓库需求。基于这种现状,目前采用以需求驱动为主,数据内部驱动为辅的模式,来根据不同的数据层次选择模型的构建方法。

其中,ODS层完全采用业务同步数据,不做进一步模型抽象。DWV和DWS基于对构建成本、性能,易用性角度的考虑,主要采取维度模型和宽表模型。宽表模型的本质是基于维度模型的扩展,对整个业务以及全节点信息进行垂直与水平方式整合;同时采用退化维度的方式,将不同维度的度量放入数据表的不同列中,实现业务全流程视图的构建,来提升宽表模型的易用性、查询效率,且易于模型的扩展。

2.模型的效果评估方法

在模型设计上以准确性、易用性、及时性为设计目标,以满足业务人员对数据的多样需求。

准确性:数据质量管控要在建模过程中落地,为数据准确性保驾护航;

易用性:兼顾模型的可扩展性和可理解性;

及时性:充分考虑模型的使用效率,提供方便快捷的数据查询和数据计算服务。

3.建模流程

数仓模型设计的整体流程涉及需求调研、模型设计、开发测试、模型上线四个主要环节,且规范设计了每个阶段的输出与输入文档。

YY数据仓库架构演进与落地

需求调研:收集和理解业务方需求,就特定需求的口径达成统一,在对需求中涉及到的业务系统或系统模块所承担的功能进行梳理后进行表字段级分析,并对数据进行验证,确保现有数据能够支持业务需求。

模型设计:根据需求和业务调研结果对模型进行初步归类,选择合适的主题域进行模型存放。确定主题后进入数据模型的设计阶段,逻辑模型设计过程要考虑总线结构构建、模型规范定义等关键问题。物理模型设计以逻辑模型为基础,兼顾存储性能等因素对逻辑模型做的物理化的过程,是逻辑模型的最终物理实现。物理模型在一般情况下与逻辑模型保持一致,模型设计完成后需要进入评审与 Mapping 设计。

模型开发:就是对模型计算脚本的代码实现过程,其中包含了数据映射、脚本实现、测试验证等开发过程。单元测试完成后需要通知业务方一起对模型数据进行业务验证,对验证问题做收集,返回验证模型设计的合理性。

模型上线:完成验证后的模型就可以在线上生产环境进行部署。上线后需要为模型配置监控,及时掌握为业务提供数据服务的状况。


四、元数据管理

1.命名规范

(1)字段命名:维度、指标·

基础单词库:拆分现有维度以及指标,形成最基础的单词库

字段库:字段的命名来自基础单词库的组合。

(2)表命名

分层+业务+主题域+主题+具体业务+时间,例如:dwv_yylive_order_entpay_day

2.数据知识管理

通过对技术、业务元数据进行清晰、详尽地描述形成数据知识,给数据人员提供更好的使用向导。数据知识主要包括表说明与属性说明。具体如下所示:

YY数据仓库架构演进与落地

YY数据仓库架构演进与落地

 

3.血缘管理

血缘管理可以追溯数据加工整体链路,解析表的来龙去脉,用于支撑各类场景,如:(1)支持上游变更对下游影响的分析与调整;(2)监控各节点、各链路任务运行成本,效率;(3)监控数据模型的依赖数量,确认哪些是重要模型。如下是一个数据模型中的血缘图,上下游以不同的颜色标识。


五、数据生命周期管理

1.数据等级划分

对历史数据进行重要等级的划分,主要将历史数据划分为p0,p1,p2,p3四个等级。具体定义如下:

p0非常重要的主题域数据和非常重要的应用数据,具有不可恢复性;

p1重要的业务数据和重要的应用数据,具有不可恢复性;

p2重要的业务数据和重要的应用数据,具有可恢复性;

p3不重要的业务数据和不重要的应用数据,具有可恢复性。

2.数据保存策略

数据的保留策略根据重要程度以及表类型2个方面进行权衡,大致的保留策略如下表所示:

 

六、数据质量管理

1.数据质量保障原则

完整性:数据的记录和信息是否完整,是否存在缺失的情况。数据的缺失主要包括记录的缺失和记录中某个字段信息的缺失,两者都会造成统计结果的不准确。

准确性:数据中记录的信息和数据是否准确,是否存在异常或者错误信息。

一致性:对跨业务的同一份数据,必须保证一致性。

及时性:保证数据能够及时产出,在用户使用前能够准备好必须的数据。

2.数据质量方法

(1)模型上线前检验

服务端数据校验:通过与业务库数据对照其是否满足完整性、准确性、一致性的要求;

客户端数据校验:通过客户端自测数据,看其产生数据与自身触发行为是否一致。

(2)模型上线后监控

模型文件大小监控:计算每天生成文件的大小,设置以某一阶段均值为告警值;

模型数据统计量监控:总的数据条数、主要维度的统计值;

主要指标监控:大盘级别的指标监控。


七、数据安全管理

1.对于重要而且敏感的数据要做脱敏处理;

2.对数据进行角色的分配;

3.通过权限审批开放数据权限。