1 数据仓库建设方法论
1.1 项目背景
数据仓库将建设成为融通全公司数据资产,提供便捷数据分析和数据服务,支持全公司数字化经营与创新。
1.2 数据仓库概述
数据仓库是一个面向主题的、集成的、相对稳定的、反映有历史变化的数据集合,用于支持数字化运营、数字化管理等数据业务。
具有以下特点:
- 包含公司生产过程中产生的全量业务数据
- 包含结构化与非结构化形式数据
- 来自于多个数据源、业务操作系统
- 保存一定的时间周期
- 按照企业内业务规则决定存储模型
数据仓库项目的建设工作是一项复杂的系统项目,涉及面非常广,实施难度也很大。实现数据与业务的充分融合,发挥数据真实价值并达到最大化,也需要一个过程,因此数据仓库建设需要有系统性的长期规划,在大数据建设的工作上也要有耐心、有恒心,在让设计兼顾完整性的同时,能够尽快的发挥作用,解决实际问题。
数据仓库项目不同于传统的在线交易系统项目,在线交易系统面向过程,需求确认,系统功能驱动项目的建设过程。数据仓库以数据为中心,面向分析。
1.3 建设方法论
为了更好的满足业务对数据模型的使用需求,同时满足企业级数据仓库的需要,采用上层业务驱动以及底层数据驱动相结合的方式,具体如图1-1所示。
图1-1 数据仓库建设方法论
底层数据驱动可以满足按照主题、系统进行整合数据,其更贴近业务源系统,以公共数据为主,从企业视角进行建设。
上层业务驱动可以满足按照特定应用对数据进行整合,由于其面向上层应用,扩展性较差,带有特定的口径以及维度,以满足业务方便些为主。
2 数据仓库体系架构
2.1 体系架构图
数据仓库分层架构按功能划分成六个区域,分别是数据缓冲层、数据贴源层、维度层、整合明细层、轻度汇总层和应用数据层,整体架构如图2-1所示。
图2-1 数据仓库架构
其中应用数据层按需建集市,比如:财务集市、供应链集市等。
2.2 数据仓库分层设计优点
数据分层是数据仓库设计中十分重要的一个环节,优秀的分层设计能够让整个数据体系更易理解和使用。具体来说,分层有如下的优点:
1、对不同粒度的数据进行分层存放,实现精细化管理;
2、保留业务数据多种粒度形态,用空间换时间,屏蔽业务需求变更对数仓的稳定性影响,快速响应需求;
3、解耦合分布执行,降低出问题的风险,一旦出现问题可以快速定位;
4、通过开发通用的数据模型,可避免重复开发,大大降低计算资源的使用;
5、把复杂问题简单化:分层也即利用“分而治之”的思想把复杂的问题简单化,更加清晰、易于理解。
2.3 各层设计原则
2.3.1 数据架构-贴源明细层[ODS]
1. 功能定义:即 Operational Data Store,ODS数据采用binlog实时增量同步,对于增量抽取的数据在ODS层至少需2种表,1种和生产保持1:1的全量表,1种是用于存放日增量数据的表。
1. 设计原则
a) 全量表与业务数据库数据完全一致,不做任何处理,对于生产数据先软删除再硬删除的数据(dba规范硬删除前需先软删除保留2天以上),生产硬删除后,数仓表不能同步删除(保留历史),此种场景,数仓ods全量表数据量会多出这部分标识了软删除的数据
b) 日增量表采用binlog同步生成,会记录当天所有的变化
c) ODS层数据原则上不对用户开放
2. 存储策略
a) 日增量表永久保存
b) 全量表保留最近7天并每个月月末最后一天保留一份快照,月末的快照数据永久保存
2.3.2 数据架构-维度层[DIM]
1. 功能定义:即 Dimension,该层按照主题划分对业务中维度类数据进行企业级整合,在保持原有粒度的基础上,完成一致性及标准化操作。
2. 设计原则
a) 以星型模型设计为主,按需采用雪花模型设计
b) 本层开始标准化
c) 本层完成数据清洗
d) 支持轻度业务变化的隔离
f) 消除了业务系统间数据的不一致性,保持原子粒度
g) 尽量沉淀出通用的维度属性
h) 维度拆分时兼顾存储空间占用
3. 存储策略
a) 日全量表存储7天
b) 拉链表每天存全量,保存7天,并每月一份全量,每月全量数据永久存储
2.3.3 数据架构-整合明细层[DWD]
1. 功能定义:即 Data Warehouse Detail,该层按照主题划分对业务数据进行企业级整合,在保持原有粒度的基础上,完成标准化以及数据预关联操作。
2. 设计原则
a) 星型模型建模,以逆范式宽表落地,多表整合
b) 保存明细数据
c) 本层开始标准化
d) 本层完成数据清洗
e) 支持轻度业务变化的隔离
f) 支持预关联及适当的预计算操作
g) 围绕核心过程业务数据,分主题进行组织和建设
h) 消除了业务系统间数据的不一致性,保持原子粒度
3. 存储策略
a) 日全量表存储7天
b) 拉链表每天存全量,保存7天,并每月一份全量,每月全量数据永久存储
2.3.4 数据架构-轻度汇总层[DWS]
1. 功能定义:即 Data Warehouse Summary,该层基于应用集市沉淀通用类属性、指标信息,面向应用系统、数据分析与数据挖掘的数据应用层。
2. 设计原则
a) 数据应用层共性轻度汇总需求下沉
b) 时间周期多以日、周、月汇总为主
c) 减少上层对DWD的直接依赖
d) 同时存在粗、细粒度的汇总加工数据
e)同一定义的统计指标不能存在多个表,避免相同定义指标口径不一致
3. 存储策略
a) 日全量表存储7天
b) 汇总表按需设置存储时间,最少不能少于7天
2.3.5 数据架构-数据应用层[ADM]
功能定义:即 Application Data Market,该层以项目或者应用扩展数据 ,细粒度占比低,粗粒度占比高, 侧重点为提供便捷的访问、分析和即席查询,数据应用层分基础层和对业务的应用层。
1. 基础层功能定义:即ADM Base,建立数据缓冲区,针对仓库内DIM、DWD和DWS层暂时无法满足的需求,基于仓库已接入数据或者新接入数据进行预汇总、预连接和预加工,快速响应上层集市数据需求。
2. 基础层设计原则
a) 体现集市数据个性化原则,在集市内部共享数据,集市间共性加工数据需下沉至数仓
b) 禁止跨集市调用,禁止逆向依赖上层数据
3. 基础层存储策略
c) 日全量表存储7天
a) 汇总表按需设置存储时间,最少不能少于7天
4. 应用层功能定义:即Report,该层为应用数据结果存放区。基于仓库维度层、明细汇总层和集市基础层数据聚合计算适用某个特定分析主题的数据,支撑外围应用。比如行长日报,监管报送,业务报表,业务系统调用等。
5. 应用层设计原则
a) 为上层应用提供数据服务
b) 除指标集市应用层数据可以被其他集市引用,原则上禁止跨集市依赖
c) 面向业务,以需求为导向,通常设计为大宽表,方便分析和使用
6. 应用层存储策略
a) 数据保留时间依据实际业务需求而定
数仓各层数据流向
a) ODS层的数据来源为数据平台通过工具直抽业务系统备份库的数据,或者通过数据库binlog同步的数据或者其它源头来源数据。
b) DWD层的数据来源为ODS层和DIM层,当DWD层实时表做维度冗余时需要从DIM层抽取数据,禁止从ODS层抽取,避免造成同一数据来源多处的情况,避免数据不一致。
c) DIM层的数据来源为ODS层。
d) DWS层的数据来源为DIM层和DWD层,不直接访问ODS层。
e) 多个应用集市间禁止数据依赖,除指标集市可以被其他集市引用。
f) 应用集市层的数据来源为DWD层、DIM层、DWS层,需周期性评估是否将DWD层数据加工到DWS层。
g) 应用集市层的基础层禁止逆向依赖应用层数据。
3 数据仓库各层数据库分配及权限管理
3.1 数仓各层数据库分配
数据仓库的数据库类型分为:正式库、临时库、开发库、敏感库。其使用场景如下:
Ø 正式库:集群作业日常跑批的操作库
Ø 临时库:集群作业日常跑批中间结果临时存放的操作库
Ø 开发库:上线人员数据验证,数据开发库
Ø 敏感库:集群作业日常涉及敏感数据解密的操作库
数据仓库各层,数据库规划如图3-1所示:
图3-1 数仓各层库规划
3.2 数据仓库各层用户及其权限控制明细
为了更好的把控数据安全,便捷、高效地对数据进行管理,将数据仓库用户权限类型分成系统级用户限权和个人级用户权限两部分,即将用户分成集群用户和个人用户,如图3-2所示。
图3-2 用户权限类型分类
两种用户类型针对不同数据库的权限有明确的区分,具体如下:
a) 正式库、临时库开通一个集群用户,集群用户拥有所有数据库操作权限。
b) 敏感库与正式库、临时库区分,单独开通一个集群用户,拥有敏感库的所有数据库操作权限。
c) 开发库开通个人级账号,个人级账号拥有开发库的所有权限,其它库按需设置读或者操作权限。
4 数据仓库存储策略
数据仓库中存在两大类型表,分别为事实表和维度表,这两种表的数据变化情况以及数据使用情况存在很大的差异性,且同一类别的表也有很大的差别。在模型物理化设计阶段,为每张数据模型规划一个合适的存储策略不仅能够保证数据模型的高效使用,也能够为数据平台节省大量的计算资源和存储资源。
4.1 存储策略介绍
在数据仓库中比较典型的存储策略有如下几种类型:
- 增量
a) 适用数据类型:日志类型只增不删不改的数据
- 全量
a) 适用数据类型:保留全量最新数据,不需要关注历史某一时间状态的数据
- 拉链
a) 适用数据类型:保留历史轨迹的数据,需要关注历史某一时间状态的数据。