『数据』马蜂窝数据中台起步建设:数仓的架构、模型与应用

一、马蜂窝数据仓库与数据中台
最近几年 , 数据中台概念的热度一直不减 。 2018 年起 , 马蜂窝也开始了自己的数据中台探索之路 。
数据中台到底是什么?要不要建?和数据仓库有什么本质的区别?相信很多企业都在关注这些问题 。
我认为数据中台的概念非常接近传统数据仓库+大数据平台的结合体 。 它是在企业的数据建设经历了数据中心、数据仓库等积累之后 , 借助平台化的思路 , 将数据更好地进行整合与统一 , 以组件化的方式实现灵活的数据加工与应用 , 以更清晰的数据职能组织应对业务的快速变化 , 以服务的方式更好地释放数据价值的一种方式 。
所以 , 数据中台更多的是体现一种管理思路和架构组织上的变革 。 在这样的思想下 , 我们结合自身业务特点建设了马蜂窝的数据中台 , 核心架构如下:
『数据』马蜂窝数据中台起步建设:数仓的架构、模型与应用
图片

在中台建设之前 , 马蜂窝已经建立了自己的大数据平台 , 并积累了一些通用、组件化的工具 , 这些可以支撑数据中台的快速搭建 。
作为中台的另一大核心部分 , 马蜂窝数据仓库主要承担数据统一化建设的工作 , 包括统一数据模型 , 统一指标体系等 。 下面介绍马蜂窝在数据仓库建设方面的具体实践 。
二、数据仓库核心架构
马蜂窝数据仓库遵循标准的三层架构 , 对数据分层的定位主要采取维度模型设计 , 不会对数据进行抽象打散处理 , 更多注重业务过程数据整合 。 现有数仓主要以离线为主 , 整体架构如下:
『数据』马蜂窝数据中台起步建设:数仓的架构、模型与应用
图片

如图所示 , 共分为 3 层:业务数据层、公共数据层与应用数据层 , 每层定位、目标以及建设原则各不相同 。
1、业务数据层
包含 STG(数据缓冲层)与 ODS(操作数据层)两层 , 这两层数据结构与业务数据几乎一致 。
STG:也叫数据准备区 , 定位是缓存来自 DB 抽取、消息、日志解析落地的临时数据 , 结构与业务系统保持一致;负责对垃圾数据、不规范数据进行清洗转换;该层只为 ODS 层服务 。
ODS:操作数据层定位于业务明细数据保留区 , 负责保留数据接入时点后历史变更数据 , 数据原则上全量保留 。 模型设计依据业务表数据变更特性采取拉链、流水表两种形式 。
2、公共数据层
细分为 DWD(明细数据层)、DWS(汇总 数据层)、DIM(公共维度层) 三层 , 主要用于加工存放整合后的明细业务过程数据 , 以及经过轻度或重度汇总粒度公共维度指标数据 。
公共数据层作为仓库核心层 , 定位于业务视角 , 提炼出对数据仓库具有共性的数据访问、统计需求 , 从而构建面向支持应用、提供共享数据访问服务的公共数据 。
DWD:这一层是整合后的业务过程明细数据 , 负责各业务场景垂直与水平数据整合、常用公共维度冗余加工 , 以及明细业务标签信息加工 。
DWS:汇总 数据层按照主题对共性维度指标数据进行轻度、高度聚合 。
DIM:对维度进行统一标准化定义 , 实现维度信息共享 。
3、应用数据层
DWA 层 , 主要用于各产品或各业务条线个性化的数据加工 , 例如商业化产品数据、搜索推荐、风控等 。
三、数据模型设计
1、方法选择
数据模型是对现实世界数据特征的抽象 , 数据模型的设计方法就是对数据进行归纳和概括的方法 。
目前业界主要的模型设计方法论有两种 , 一是数据仓库之父 Bill Inmon 提出的范式建模方法 , 又叫 ER 建模 , 主张站在企业角度自上而下进行数据模型构建;二是 Ralph Kimball 大师倡导的维度建模方法 , 主张从业务需求出发自下而上构建数据模型 。
大数据环境下 , 业务系统数据体系庞杂 , 数据结构多样、变更频繁 , 并且需要快速响应各种复杂的业务需求 , 以上两种传统的理论都已无法满足互联网数仓需求 。


推荐阅读