数据仓库原理&实战【1】

文章目录

  • 一、数仓的诞生背景
    • 1.1 数仓诞生原因
    • 1.2 基本概念
      • 数据仓库(Data Warehouse,DW)
        • 数据仓库特点
        • 数据仓库与数据库的区别
    • 1.3技术实现
      • 1.3.1数据仓库建设方案
      • 1.3.2传统数据仓库
      • 1.3.3大数据数据仓库
    • 1.4MPP&分布式架构
      • 1.4.1MPP架构
      • 1.4.2分布式架构
      • 1.4.3MPP+分布式架构
  • 二、数据仓库架构
    • 2.1数据仓库的架构
    • 2.2ETL流程
      • 2.2.1ETL(Extract-Transform-Load)
      • 2.2.2数据抽取(Extract)
      • 2.2.3数据转换(Transformation)
      • 2.2.4数据加载(Loading)
      • 2.2.5常见得ETL工具
    • 2.3操作数据层(ODS)
    • 2.4公共维度模型层(CDM)
      • 2.4.1数据明细层(DWD)
      • 2.4.2数据汇总层(DWS)
    • 2.4数据应用层(ADS)
  • 三、建模方法
    • 3.1 OLTP系统建模方法
    • 3.2 OLAP(在线联机分析)
      • 3.2.1 ROLAP系统建模方法(面向DWS)
      • 3.2.2 MOLAP系统建模方法
    • 3.3 多维分析


一、数仓的诞生背景

1.1 数仓诞生原因

  • 历史数据积存
  • 企业数据分析需要

(1)历史数据积存
历史数据使用频率低,堆积在业务库中,导致性能下降。

  对于企业来说,线上的业务系统随着业务的进行,会源源不断的产生数据,这些数据都会存储在业务数据库中(例如Mysql、Oracle、SQL Server等)来支持业务系统的运行,但是,当线上业务系统运行超过一定时间后会累积越来越多的数据,就会对我们的业务数据库产生一定的负载,从而导致我们的业务系统运行较慢。而这些历史数据中,有相当一部分是冷数据,即业务系统一般对最近产生的数据(当天、一周内、一个月内)调用比较频繁,对较早之前的数据调用频率很低。

  所以为了避免随着时间的推移,历史数据积压对业务数据库产生的影响,妨碍业务的正常运行,企业需要定期将积压的冷数据从业务数据库中转移出去,存储到一个专门存放历史数据的仓库中。这就是——数据仓库
(2)企业数据分析需要
各部门自己建立独立的数据抽取系统,导致数据不一致.

企业将历史数据存储到数据仓库中后,这些数据不仅可以改善业务数据库的性能;还可以用来进行数据分析,从而辅助管理层进行决策。以历史数据积存为导向,这种发展是顺其自然的。

但有的企业开始并没有历史数据积存,然而仅仅是对数据分析特别看重。这些企业可能会存在多个部门需要进行数据分析的任务。这些企业建立数据仓库的原由,是以数据分析为导向的。

在没有建立数据仓库时候,各个部门是有自己的数据抽取系统的,他们做数据分析的时候是在业务数据库了提取数据,然后分析。但是这样存在一些问题:

  • 各个部门分析的结果不一致,例如各部门提取数据的时间不同,就会导致数据不同,从而导致分析的结果有差异;
  • 各部门建立各自的数据抽取系统,这样很浪费资源;
  • 每个部门有一个抽取系统,数据库需要给权限,这样数据库的权限管理也存在极大的风险。

  因此,企业统一建立一个数据仓库,使用专门的数据抽取系统,定期从业务数据库把数据抽取到数据仓库里面,①实际上就是数据仓库为各个部门建立了一个统一的数据视图,就直接解决了分析结果不一致的问题;②数据仓库可以直接开放访问接口,这样业务数据库和数仓的权限管控就更具有针对性了。

  数仓面向于数据分析,业务数据库面向于业务系统。企业无论是以历史数据积存,还是数据分析为导向建立的数据仓库。数据积存、数据分析,这两个都是数据仓库的基本功能与建设目的

1.2 基本概念

数据仓库(Data Warehouse,DW)

  • 由数据仓库之父比尔.恩门(Bill Inmon)提出;
  • 数据仓库是一个面向主题的、集成的、非易失的且随时间变化数据集合
  • 主要用于组织积累的历史数据,并使用分析方法(OLAP、数据分析)进行分析整理,进而辅助决策,为管理者、企业系统提供数据支持,构建商业智能。

数据仓库特点

(1)面向主题:为数据分析提供服务,根据主题将原始数据集合在一起;
(2)集成:原始数据来源于不同数据源,要整合成最终数据,需要经过抽取、清洗、转换的过程(便于后面的分析);
(3)非易失:保存的数据是一系列历史快照,不允许被修改,只允许通过工具进行查询、分析;
(4)时变性:数仓会定期接收、集成新的数据,从而反映出数据的最新变化。

数据仓库与数据库的区别

  • 数据库面向事务设计,属于OLTP(在线事务处理)系统,主要操作是随机读写;在设计时尽量避免冗余,常采用符合范式规范来设计;
  • 数据仓库是面向主题设计的,属于OLAP(在线分析处理)系统,主要操作是批量读写;关注数据整合,以及分析、处理性能;会有意引入冗余,采用反范式方式设计。

数据仓库原理&实战【1】_第1张图片

1.3技术实现

1.3.1数据仓库建设方案

  • 传统数据仓库
  • 大数据数据仓库

1.3.2传统数据仓库

  传统的数据仓库是由关系型数据库组成MPP(大规模并行处理)集群,是由单机数据库发展而来的,业务数据库一般是单机的关系型数据库,数仓在建设初期一般会选用关系型数据库,是为了同步业务数据库的数据,使得数据迁移起来更加方便,而且它的业务系统这块改造的成本也就更小,但是作为数据仓库,需要存储的历史数据是比较庞大的,需要多个单机的数据库组成MPP集群,进行数据存储,包括运算。
传统数仓

  • 优点:在数据量没有达到某个量级的时候,他继承了单机数据库优异的性能,迁移数据方便,不需要额外的学习成本;
  • 缺点:在数据量超过某个量级的时候,它的扩展性有限、热点问题就暴露出来了。

常见的传统数据仓库:

  • Oracle RAC
  • DB2
  • Teradata
  • Greenplum

1.3.3大数据数据仓库

  • 利用大数据天然的扩展性,完成海量数据的存放;
  • 将SQL转换为大数据计算引擎任务,完成数据分析。
    数据仓库原理&实战【1】_第2张图片
    大数据数据仓库实际就是依托大数据技术产生的数仓,是基于大数据天然的分布式存储(包括分布式计算),并添加了SQL的支持,而形成的一种架构,与传统的数仓架构是截然不同的。

大数据数仓的优势:
①解决了传统数仓扩展性的问题;
②因为大数据底层的分布式文件系统,在做数据存储的时候为了保证数据的安全性、可靠性,会对数据进行备份,解决了热点问题。
大数据数仓的缺点:
①因为不是原生的关系型数据库,是通过SQL转成大数据语法的,SQL支持率不高
缺少事务支持,因为是分布式架构实现事务是比较难的,但是数仓面向的是数据分析,对事务要求并没有那么严格;
③在数据量较少的情况下,计算速度是比较的。

常见的大数据数据仓库:

  • Hive
  • Spark SQL
  • HBase
  • Impala
  • HAWQ
  • TIDB

1.4MPP&分布式架构

1.4.1MPP架构

(1)MPP架构

  • 传统数仓中常见的技术架构,将单机数据库节点组成集群,提升整体处理性能;
  • 节点间为非共享架构(Share Nothing),每个节点都有独立的磁盘存储系统和内存系统;(也就是说既能存储数据,也能进行计算)
  • 每台数据节点通过专用网络或者商业通用网络互相连接,彼此协同计算,作为整体提供服务;(对网络的速度要求高)
  • 设计上优先考虑C(一致性),其次考虑A(可用性),尽量做好P(分区容错性)

因为MPP架构本质上还是关系型数据库组成的集群,其优点:

  • 运算方式精细,延迟低、吞吐低
  • 适合中等规模的结构化数据处理

MPP架构缺点:

  • 存储位置不透明,通过Hash确定数据所在的物理节点,查询任务在所有节点均会执行;
  • 并行计算时,单节点瓶颈会成为整个系统短板,容错性差;
  • 分布式事务的实现会导致扩展性降低

1.4.2分布式架构

  • 大数据中常见的技术架构,也称为Hadoop架构/批处理架构;
  • 各节点实现场地自治(可以单独运行局部应用),数据在集群中全局透明共享
  • 每台节点通过局域网或广域网相连,节点间的通信开销较大,在运算时致力减少数据移动;
  • 优先考虑的是P(分区容错性),然后是A(可用性),最后再考虑C(一致性)。

1.4.3MPP+分布式架构

  • 数据存储采用分布式架构中的公共存储,提高分区容错性;(把数据透明化)
  • 上层架构采用MPP,减少运算延迟。

二、数据仓库架构

2.1数据仓库的架构

数据仓库原理&实战【1】_第3张图片

2.2ETL流程

2.2.1ETL(Extract-Transform-Load)

  • 将数据从来源端(也就是业务数据库)经过抽取(extract)、交互转换(transform)、加载(load)至目的端的过程;
  • 构建数据仓库的重要一环,用户从数据源抽取出所需的数据,经过数据清洗,最终按照预先定义好的数据仓库模型,将数据加载到数据仓库中去;
  • ETL规则的设计和实施约占整个数据仓库搭建工作量的60%~80%,把数据通路搭好了,为数据积存、数据分析等打好基础。

2.2.2数据抽取(Extract)

(1)数据抽取

  • 抽取的数据源可以分为结构化数据、非结构化数据、半结构化数据;
  • 结构化数据一般采用JDBC、数据库日志方式,非半结构化数据会监听文件变动。

(2)抽取方式

  • 数据抽取方式有全量同步增量同步两种方式;
  • 全量同步会将全部数据进行抽取,一般用于初始化数据装载
  • 增量同步方式会检测数据的变动,抽取发生变动的数据,一般用于数据更新

2.2.3数据转换(Transformation)

数据转换需要经历数据清洗和转换两个环节:

  • 数据清洗主要是对出现的重复、二义性、不完整、违反业务或逻辑规则等问题的数据进行统一的处理;(数据清洗对于结构化数据来说很少,主要是对非结构化数据和半结构化数据清洗比较多)
  • 数据转换主要是对数据进行标准化处理,进行字段、数据类型、数据定义的转换。

2.2.4数据加载(Loading)

就是将最后处理完的数据导入到对应的目标源里,加载完成后数据就存储在ODS层中。

2.2.5常见得ETL工具

(1)结构化数据ETL工具

  • Sqoop
  • Kettle
  • Datastage
  • Informatica
  • Kafka

(2)非/半结构化数据ETL工具

  • Flume
  • Logstash

2.3操作数据层(ODS)

这一层主要是在数据仓库中完成数据积存的一个任务。
(1)数据与原业务数据保持一致,可以增加字段用来进行数据管理存储的,(可以理解为ODS里面的数据是原业务数据的扩充集
在这里插入图片描述
(2)历史数据是只读的,提供业务系统查询使用;
(3)业务系统对历史数据完成修改后,将update_type字段更新为UPDATE,追加回ODS中;
(4)在离线数仓中,业务数据定期通过ETL流程导入到ODS中,导入方式有全量、增量两种

  • 全量导入:数据第一次导入时,选择此种方式
  • 增量导入:数据非第一次导入,每次只需要导入新增、更改的数据,建议使用外连接&全覆盖方式。

2.4公共维度模型层(CDM)

2.4.1数据明细层(DWD)

(1)数据明细层对ODS层的数据进行清洗、标准化、维度退化(时间、分类、地域);
(2)数据仍然满足3NF(三范式)模型,为分析运算做准备。

2.4.2数据汇总层(DWS)

(1)数据汇总层的数据对数据明细层的数据,按照分析主题进行计算汇总,存放便于分析的宽表;
(2)存储模型并非3NF,而是注重数据聚合,复杂查询、处理性能更优的数仓模型,如维度模型。

2.4数据应用层(ADS)

(1)数据应用层也被称之为数据集市;
(2)存储数据分析结果,为不同业务场景提供接口,减轻数据仓库的负担

  • 数据仓库擅长数据分析,直接开放业务查询接口,会加重其负担。

三、建模方法

3.1 OLTP系统建模方法

  • OLTP(在线事务处理)系统中,主要操作是随机读写(业务数据库都是这样的系统,提供数据存储和数据操作的服务)
  • 为了保证数据一致性、减少冗余,常使用关系模型(也就是ER模型,其原则尽量把表拆分得越细越好)
  • 在关系模型中,使用三范式规则来减少冗余

3.2 OLAP(在线联机分析)

(1)OLAP(在线联机分析)

  • OLAP系统,主要操作是复杂分析查询;关注数据整合,以及分析、处理性能(更加关注于分析性能的);
  • OLAP根据数据存储的方式不同,又分为ROLAP,MOLAP,HOLAP,不管分为哪几种,其目的都是为了加快数据分析计算的一个性能。

(2)OLAP系统分类

  • ROLAP(Relation OLAP,关系型OLAP):使用关系模型构建,存储系统一般为RDBMS (最常见的系统,存数据结果,一般不存明细数据)
  • MOLAP(Multidimensional OLAP,多维型 OLAP):预先聚合计算,使用多维数组的形式保存数据结果,加快查询分析时间;(此系统更加依赖于产品的底层体现)
  • HOLAP(Hybrid OLAP,混合架构的 OLAP):ROLAP 和MOLAP 两者的集成;如低层是关系型的,高层是多维矩阵型的;查询效率高于ROLAP,低于MOLAP。(底层因为是关系型,可以存储明细数据,把预计算结果存储在上层)

3.2.1 ROLAP系统建模方法(面向DWS)

典型的数据仓库建模方法有ER模型、维度模型、Data Value、Anchor
数据仓库原理&实战【1】_第4张图片
最常用的是维度模型,其他三种是属于一个源头的,这三个模型适合比较成熟的数据仓库,也就是说数据的表结构变动不大的,适合更传统的一些行业,不怎么适合互联网产业。

1.维度模型

  • 维度模型中,表被分为维度表事实表,维度是对事实的一种组织
  • 维度一般包含分类、时间、地域等,维度主要对数据进行一些组织、分类、划分等;
  • 事实其实就是它本质的一些个属性;
  • 维度模型分为星型模型、雪花模型、星座模型;
  • 维度模型建立后,方便对数据进行多维分析

(1)星型模型:标准的星型模型,维度只有一层,分析性能最优(就是只有一个事实表,带有一个维度表)
数据仓库原理&实战【1】_第5张图片
对于企业来说,不太可能出现这个最优的情况,有可能存在多层维度,这就是雪花模型。
(2)雪花模型:雪花模型具有多层维度,比较接近三范式设计,较为灵活,但是性能就比较差一些了。
数据仓库原理&实战【1】_第6张图片

(3)星座模型

  • 星座模型基于多个事实表,事实表之间会共享一些维度表;
  • 是大型数据仓库中的常态,是业务增长的结果,与模型设计无关。

数据仓库原理&实战【1】_第7张图片

2.宽表模型(适合大数据数仓产品)

  • 宽表模型是维度模型的衍生,适合join性能不佳的数据仓库产品;
  • 宽表模型将维度冗余到事实表中,形成宽表,以此减少join操作。

3.2.2 MOLAP系统建模方法

MOLAP系统实际就是一种用空间换时间的方式。

  • MOLAP将数据进行预结算,并将聚合结果存储到 CUBE模型中
  • CUBE模型以多维数组的形式,物化到存储系统中,加快后续的查询
  • 生成CUBE需要大量的时间空间维度预处理可能会导致数据膨胀

数据仓库原理&实战【1】_第8张图片
常见MOLAP产品:Kylin、Druid,适合ADS层

3.3 多维分析

OLAP多维分析:

  • OLAP主要操作是复杂查询,可以多表关联,使用COUNT、SUM、AVG等聚合函数
  • OLAP对复杂查询操作做了直观的定义,包括钻取、切片、切块、旋转

(1)钻取

  • 对维度不同层次的分析,通过改变维度的层次来变换分析的粒度
  • 钻取包括上卷(Roll-up)、下钻(Drill-down)
  • 上卷(Roll-up),也称为向上钻取,指从低层次到高层次的切换
  • 下钻(Drill-down),指从高层次到低层次的切换
    数据仓库原理&实战【1】_第9张图片

(2)切片(Slice)、切块(Dice)

  • 选择某个维度进行分割称为切片
  • 按照多维进行的切片称为切块

数据仓库原理&实战【1】_第10张图片
(3)旋转(Pivot)
对维度方向的互换,类似于交换坐标轴上卷(Roll-up)
数据仓库原理&实战【1】_第11张图片

你可能感兴趣的:(数据仓库,大数据技术)