大数据面试必问之一数仓架构和建模基础

数仓架构和建模基础

数据仓库定义:

目的:支持决策分析

应用: 离线数据报表、数据挖掘、即席查询

四个特征:

  1. 面向主题: 数据归类
  2. 集成:多种类型数据,来源多,格式多, 集成代表最终统一
  3. 非易失的, 写入后一般不修改和删除,多为查询(读)操作
  4. 时变性: 一定时间范围内,记录数据变化和其对应的时间

发展阶段:

数据仓库的发展大致经历了这样的三个过程:

  1. 简单报表阶段:这个阶段,系统的主要目标是解决一些日常的工作中业务人员需要的报表,以及生成一些简单的能够帮助领导进行决策所需要的汇总数据。这个阶段的大部分表现形式为数据库和前端报表工具。
  2. 数据集市阶段:这个阶段,主要是根据某个业务部门的需要,进行一定的数据的采集,整理,按照业务人员的需要,进行多维报表的展现,能够提供对特定业务指导的数据,并且能够提供特定的领导决策数据。
  3. 数据仓库阶段:这个阶段,主要是按照一定的数据模型,对整个企业的数据进行采集,整理,并且能够按照各个业务部门的需要,提供跨部门的,完全一致的业务报表数据,能够通过数据仓库生成对对业务具有指导性的数据,同时,为领导决策提供全面的数据支持。

数据模型的作用:

  1. 进行全面的业务梳理,改进业务流程
  2. 建立全方位的数据视角,消灭信息孤岛和数据差异。
  3. 解决业务的变动和数据仓库的灵活性
  4. 帮助数据仓库系统本身的建设

数据仓库的架构

数仓的上游是各种数据源:

  • 企业内部数据:
  • 用户行为日志
  • 数据库数据
  • 文本数据
  • 企业外部数据
  • 爬虫爬取的数据
  • 第三方提供的数据
  • 通过 ETL将数据导入数据仓库

ETL(Extract-Transform-Load)记 用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。

ETL包含两部分,数据加载到数仓,数仓数据加载到外部以支持数据应用

广义的ETL还包括 数据清洗步骤,但把数据清洗放在数据仓库来做更好一些,因为这样数仓里的是全部数据。

数据在数仓中:

  • 会经过各种计算,从而支持决策分析
  • 首先对明细数据进行加工:
  • 数据清洗
  • 数据整合
  • 在得到”干净的明细数据后“,在此基础上
  • 数据聚合统计
  • 多维数据模型
  • 业务模型建设

在数据仓库的数据和计算的基础上:

  • 搭建总类繁多的数据应用:
  • 数据报表、即席查询、数据分析和数据挖掘
  • 数据应用消费数据仓库的数据分析结果对外提供服务
  • 数据应用本身也可能会产生新的数据并被归集进数据仓库

数据体系架构

  • 数据分层的概念
  • 便于对数据进行管理、开发 和运维
  • 常见分为3层;
  • ODS(Operational Data Store,操作型数据)
  • 保存来自数据源的基本一次的增量或全量数据
  • ODS实现了对数据源的统一的一次数据抽取
  • 数据仓库的计算都基于ODS的数据,不用重复抽取,也不会在数据源上直接进行计算
  • 数据仓库和业务系统的解耦(通过ETL接口实现)
  • ODS数据和数据源是一致的,便于问题排查
  • CDM (Common Data Model,通用数据模型)
  • DWD(Data Warehouse Detail,数据仓库明细层数据)
  • 从ODS层的数据,经过数据清洗后得到的明细宽表
  • DWS(Data Warehouse Summary,数据仓库汇总层数据)
  • 由 DWD的数据可以经过适当的汇总,通过轻度、重度汇总 得到
  • DIM(数据维表)
  • ADS (Application Data Service,面向应用的数据服务层)
  • 针对具体专题分析而做的计算产生的表
  • 数据集市

数据集市:简称DM,以某个应用为出发点而建设的局部DW,为什么这么说,DM只关心自己需要的数据。不会全盘考虑企业整体的数据架构和应用,每个应用都有自己的DM。所以DM可以基于仓库建设也可以独立建设。

数据建模基础

数据仓库的数据来自业务的数据,最终也用于为实现业务目标的计算。数据仓库的模型设计需要从业务出发,一般经过概念模型设计、逻辑模型设计和物理模型设计三个层次,最终的到数据仓库的模型。

概念模型设计

  • 数据仓库是面向主题的
  • 通过分析和归纳,可以把业务划分成几个主题,并确定各个主题之间的联系

逻辑模型设计

  • 定义了数据仓库各种实体、属性和关系,指导后续的数据存储、组织和数据应用的开发

Inmon提出的自上而下(EDW-DM)的范式建模理论

  • 三范式
  1. 第一范式(确保每列保持原子性):第一范式是指表中的所有字段值都是不可分解的原子值。
  2. 第二范式:确保表中的每列都和主键相关
  3. 第三范式:确保每列都和主键列直接相关,而不是间接相关
  • 优点:易于维护,高度集成,方便主题数据打通,适合复杂数据内容的深度挖掘
  • 缺点:因为三范式的数据不是多维格式的,交互的时候效率比较低下,不方便上层应用做数据分析

Kimball的从下至上(DM-DW)的维度建模理论

在维度建模里,ODS的数据,利用维度建模方法建设一致维度的数据集市。通过一致性维度可以将数据集市联系在一起,由所有的数据集市组成数据仓库。

优势:构建迅速,最快的看到投资回报率,敏捷灵活,便于事实数据分析,适合业务分析报表和BI

劣势:作为企业资源不太好维护,结构复杂,数据集市集成困难。

  1. 星形模型
  2. * 由一个事实表和一组维表组成。每个维表都有一个维作为主键。事实表居中,多个维表呈辐射状分布于其四周,并与事实表连接,形成一个星型结构 


  1. 雪花模型
  2. 雪花模型是在星形模型基础上,基于范式理论做的进一步层次化,将某些维表扩展成事实表,最终形成雪花状的结构。
  3. 优点:在一定程度上减少了存储空间;规范化的结构更容易更新和维护
  4. 缺点:雪花模式比较复杂,用户不容易理解;浏览内容相对困难;额外的连接将使查询性能下降

复合架构

利用范式建模方法,建设原子数据的数据仓库EDW,然后基于EDW,利用维度建模方法建设数据集市。在实际数据仓库中,星型模型和雪花模型是并存的,有利于数据应用和减少计算资源消耗。

实际数仓建设中没有必要刻意遵从哪种规范来实践,更多需要业务需要、性能需要之间做权衡。

物理模型设计

物理模型设计是指根据逻辑模型设计都结果为基础,设计数据对象的物理实现

  • 表的命名规则和字段
  • 命名规则如何定义
  • 字段的类型如何选择
  • 表是如何设置分区方式以及数据的存储位置和方式(比如是否定时归档或者删除等)。
  • 表内是否有索引或者主键等等

字段命名:

一个合理的表命名方式可以清晰地告诉使用者这些表在数据仓库里处于哪个层次。另外可以通过命名可以一目了然地让使用者了解数据的归属、含义、更新频率等重要信息,减少数据的查询和理解的成本

图是一个典型的命名方式

数据存储周期

数据仓库里的每一份数据,在从外部数据源导入后,又会进过多次的计算,中间也难免会有中间数据的落盘。真实存在数据仓库中间的数据经常会膨胀数倍甚至数十倍。合理地针对有用的数据进行归档以及对无用数据的及时删除,可以减少存储和管理的成本。

参考链接:

浅谈数据仓库建设中的数据建模方法

发表评论
留言与评论(共有 0 条评论)
   
验证码:

相关文章

推荐文章

'); })();