1.数仓概述
数据仓库的建设是一个过程,而不是一个项目。在这个过程中我们需要形成自己的规范,以方便管理和维护。在数据仓库的建设过程中,不仅会面临着公司业务迅速发展,业务系统迭代变更,需要对业务系统数据进行相应
的整合,形成公司完整的统一数据视图;而且基于数据仓库的应用也是多样化的,比如支撑自己企业的数据可视化平台、即席查询、对策略提供数据支持等。
2.数仓模型
2.1 模型层定义
模型层次 | 英文全称 | 中文名 | 层次定义 |
---|---|---|---|
ODL | Operational Data Layer | 操作数据层 | 该层级主要功能是存储从源系统直接获得的数据(数据从数据结构、数据之间的逻辑关系上都与源系统基本保持一致) |
IDL | Integrated Data Layer | 集成数据层 | 该层的主要功能是基于主题域的划分,面向业务主题、以数据为驱动设计模型,并且基于3NF建模,完成数据整合,提供统一的基础数据来源。 |
CDL | Component Data Layer | 元件数据层 | 面向分析主题的、统一的数据访问层,所有的基础数据、业务规则和业务实体的基础指标库以及多维模型都在这里统一计算口径、统一建模,大量基础指标库以及多维模型在该层实现。该层级以分析需求为驱动进行模型设计,实现跨业务主题域数据的关联计算或者轻度汇总计算,因此会有大数据量的多表关联汇总计算。 |
MDL | Mart Data Layer | 数据集市层 | 该层次主要功能是加工多维度冗余的宽表(解决复杂的查询)、多维分析的汇总表。 |
ADL | Application Data Layer | 应用数据层 | 该层级的主要功能是满足业务方的需求;在该层级实现报表(海豚、星空、邮件报表)、自助取数等需求。 |
DIM | Dimension Data Layer | 维度层 | 该层主要存储简单、静态、代码类的维表,包括从OLTP层抽取转换维表、根据业务或分析需求构建的维表以及仓库技术维表如日期维表等。 |
REF | 数据接口层 | 该层级独立于其他层级之外,其来源可以是任意层级,主要存放的是在与其他组对接的时候提供给对方的数据 |
2.2 模型思想
2.2.1 ODL模型
数据层次
ODL(操作数据层),该层级主要临时存储从多种数据源(包括在线业务系统和点击流日志)抽取的业务数据。
数据特点
1.数据集结构及数据集间关系都和数据源基本保持一致
2.临时存储,数据存储一到两周即可删除或备份至廉价设备
3.数据集多为增量抽取,产生大量的Delta数据集
数据处理
1.数据集增量获取、分发
2.数据集轻度清洗,如字符集转换、脏数据过滤、第一类维值标准化处理等
3.点击流数据处理,完成日志获取、字符串处理、URL解析等
数据抽取
主要是增量抽取为主、有部分业务表涉及全量抽取;增量抽取通过storm消费binlog日志方式来获得源数据库中变化的数据,解析源数据库日志,准实时的生成增量数据;
全量抽取将数据源中的表或视图的数据从数据库中抽取出来,抽取时间较长,效率低。
数据存储
ODL层设计上分为两个层次,第一个层次存储近一段时间的增量数据(贴源),一般是通过订阅Binlog日志生成带event type和event time等字段的日分区delta表;
第二个层次存储全量数据信息,通过append delta表生成全量数据;
2.2.2 IDL模型
数据层次
IDL(集成数据层),该层级按照业务主题组织数据,完成对ODL层数据的清洗和集成,为CDL层提供数据结构统一、业务语义标准的基础数据。
数据特点
1.明细数据,按照业务主题分类,以业务为驱动设计表结构和表间关系
2.数据集成,基于3NF设计模型,并在语义层达到统一和标准
3.数据带有仓库层的日期和状态标签,可追溯其生命周期中的所有变化状态
数据处理
1.对ODL数据进行集成整合,数据项进行重定义和清洗,完成业务数据的归一化处理
2.梳理第一类维表来源,即从源业务系统抽取的代码表,并完成缓慢变化维处理
3.使用ODL层的Delta(增、删、改)数据、全量数据更新当前表和历史表,数据存储上采用拉链和快照方式存储
数据更新策略
1.全量快照:每天存储一份最新的数据,来源数据为全量数据,数据量较小(默认小于10W),且需要保留历史变化轨迹
2.拉链表:通过开闭链时间维护最新数据
3.增量表:增量插入当天分区,例如:日志表
4.全量覆盖:删除目标表全部数据,再插入当前数据;来源数据为全量数据,且无需保留历史轨迹,只使用最新状态数据
2.2.3 CDL模型
数据层次
CDL(元件数据层),该层级按照分析主题组织数据,跨IDL层的业务主题,集成与该分析主题相关的所有数据,为ADL层的分析模型提供共享的、可复用的元件数据。
数据特点
1.数据模型相对稳定,无衍生指标,轻度汇总
2.多维模型:分析对象的状态(静态、描述)数据和相关事实表或维表关联形成以冗余宽表为中心的雪花或星型模型
3.基础指标库:分析对象的行为(主动、被动)数据汇总而成的一系列基础指标库
数据处理
1.分析对象和相关事实表或维表进行多表关联计算生成多维模型
2.对分析对象的行为数据进行汇总计算生成基础指标库
3.梳理两类维表来源,一是分析需求,二是仓库技术
4.对多维模型或基础指标数据进行轻度汇总,产生基础的、通用的汇总模型
数据种类
1.多维模型数据(Multidimensional Data):采用维度建模方式建立的数据模型数据。
2.基础指标库数据(Stable Indicator Data):基于某个分析实体的一系列基础指标集合。
3.常用通用的JOIN数据(Common Join Data):从IDL层上来的一些实体对象,可能需要经常JOIN在一起使用,在此可以预先处理一些常用通用的JOIN逻辑。
数据刷新
保留每日数据的应用状态,存储采用每日数据快照的方式
2.2.4 MDL模型
数据层次
MDL(数据集市层),该层次主要功能是加工多维度冗余的宽表(解决复杂的查询)、多角度分析的汇总表。
数据特点
1.数据模型相对稳定,有衍生指标
2.宽表模型:基础指标群、多维模型数据和相关事实表或维表关联形成通用或定制的冗余宽表
3.多角度汇总:从多个角度分析的汇总模型
数据处理
1.多维模型数据和相关事实表或维表进行多表关联计算生成宽表模型
2.对多维模型或基础指标数据进行汇总,产生个性的、通用的汇总模型
2.2.5 ADL模型
数据层次
ADL(应用数据层),该层级按照项目和应用组织数据,以CDL层的半成品元件数据为基础,规划多样化、个性化的衍生指标体系、分析模型和数据应用。
数据特点
1.数据模型不稳定,随着分析算法和应用的变更随时变化或下线
2.数据高度汇总,可做交叉分析、上卷、下钻、切片、切块、旋转等多维分析操作
3.更高级的数据分析或挖掘应用,衍生出信息类、知识类数据
数据处理
1.根据不同的数据应用处理数据,所有的指标或者汇总都依赖于具体的业务分析主题和分析人员的定义,并直接交付信息给使用者
2.数据处理和信息交付方式多样,如报表、仪表盘、即席查询、多维分析、实时数据应用、数据挖掘应用等
2.2.6 DIM模型
DIM层主要包括三类即简单、静态、代码类维表,存储仓库层归纳梳理的所有维表信息
1).从业务源系统抽取转化的维表,每日保留全量快照;
2).根据业务分析需求构建的维表,每日保留全量快照;
3).仓库技术常用维表,只保留当前信息;
欢迎关注 高广超的简书博客 与 收藏文章 !
欢迎关注 头条号:互联网技术栈 !
个人介绍:
高广超:多年一线互联网研发与架构设计经验,擅长设计与落地高可用、高性能、可扩展的互联网架构。目前从事大数据相关研发与架构工作。
本文首发在 高广超的简书博客 转载请注明!