数据仓库原理 - 概念、架构、建模方法

目录

    • 1、介绍
      • 1.1 数据仓库诞生原因
      • 1.2 数据仓库概述
      • 1.3 数仓的技术实现
      • 1.4 MPP&分布式架构
        • MPP架构
        • 分布式架构
        • MPP+分布式架构
      • 1.5 常见产品
    • 2、架构
      • 2.1 架构图
        • ETL
        • ODS
        • CDM
        • ADS
      • 2.2 ETL流程
        • 数据抽取
        • 数据转换
        • 数据加载
        • ETL工具
      • 2.3 数据积存
        • 操作数据层ODS
      • 2.4 数据分析
        • 数据明细层DWD
        • 数据汇总层DWS
        • 数据应用层ADS
    • 3、建模方法
      • 3.1 基本概念
      • 3.2 ROLAP
      • 3.3 MOLAP
      • 3.4 多维分析

1、介绍

1.1 数据仓库诞生原因

  1. 历史数据积存
    历史数据使用频率低,堆积在业务库中,导致性能低,所以会将其存放在数据仓库
  2. 企业数据分析需要
    各个部门自己建立独立的数据抽取系统,导致数据不一致已经资源浪费
    为解决问题,引入数据仓库

1.2 数据仓库概述

定义:数据仓库是一个面向主题的、集成的、非易失的且随时间变化的数据集合
作用:主要用于组织积累的历史数据,并使用分析方法(OLAP、数据分析)进行分析整理,进而辅助决策,为管理者、企业系统提供数据支持,构建商业智能

数据仓库特点:

  • 面向主题。根据主题将原始数据集合在一起
  • 集成:数据来源于不同的数据源,通过抽取、清洗、转换等整合成最终数据
  • 非易失:数仓保存的数据是一系列的历史快照,和业务那边同步的数据,不允许被修改,只允许通过工具进行查询、分析
  • 时变性:数仓会定期接受、集成新的数据【即历史数据不能改,最新数据进行载入】

数据仓库VS数据库

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

数据仓库原理 - 概念、架构、建模方法_第1张图片

1.3 数仓的技术实现

两种:传统数仓,大数据数库

传统数据仓库:
由关系型数据库组成MPP(大规模并行处理)集群,利用单机数据库形成
问题:扩展性有限,热点问题

大数据数据仓库:
将SQL转换为大数据计算引擎任务,完成数据分析
分布式文件系统 —解决扩展性问题
备份三份,可选 — 解决热点问题
自身问题:SQL支持率不高,缺少事务支持

1.4 MPP&分布式架构

MPP架构

  • 传统数仓中常见的技术架构,将单机数据库节点组成集群,来提升处理性能
  • 每个节点都有独立的磁盘存储系统和内存系统
  • 每个数据节点通过专用网络或者商业网络互相连接,彼此协同计算,为整体服务,每个节点不能单独作用
  • 设计上优先考虑C(一致性),再A(可用性),最后考虑P(分区容错性)

优点:

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

缺点:

  • 存储位置不透明
  • 分布式事务的实现会导致扩展性降低
  • 并行计算时,一个节点的瓶颈就会造成整个系统的短板,一个节点的问题会造成其他节点也需要等它,所以没法实现超大的结构,越多节点出错概率越高

分布式架构

  • 大数据中常见的技术架构,也称为Hadoop架构/批处理架构
  • 每个节点即包含存储资源,也含有计算资源。可以单独的运行局部任务。
  • 相比于MPP不共享数据,而分布式架构数据全局透明共享
  • 每台节点通过局域网或广域网相连,节点间的通信开销大,在运算时致力于减少数据移动
  • 优先考虑P(分区容错性),再A(可用性),再考虑C(一致性)
  • 随着数据增大,分布式架构的优势越发明显。数据量较小时,可能分布式架构的运行速度慢于MPP

MPP+分布式架构

  • 数据存储采用分布式架构的公共存储,提供分区容错性
  • 上层架构采用MPP,减少运算延迟

1.5 常见产品

传统数据仓库:

  • Oracle(使用方便,but单个集群只能支持100左右的节点,适合数据量不大)
  • DB2(企业很少用,经常会被赠送)
  • Teradata(贵,但优秀,企业常用)
  • Greenplum(开源)

大数据数据仓库:

  • Hive(主流。原理:SQL转成大数据的计算引擎)(延迟大,离线批处理优秀)
  • Spark SQL(产生原因:Hive运算速度太慢了)
  • HBase(高并发读)
  • Lmpala(数据查询引擎)
  • HAWQ(Greenplum在Hadoop上的移植产品)
  • TLDB(MPP+SMP)

2、架构

2.1 架构图

数据仓库原理 - 概念、架构、建模方法_第2张图片
根据数据流方向,依次是ETL (数据接入)-- > ODS (保存原始数据)–> CDM (数据分析)–>ADS(保存结果数据)

ETL

数据同步模块,将从业务数据库进行抽取,交互转换,清洗,标准化,再加载到目的地
ETL(extranct抽取,transform转换,load加载)
采用sqoop或kattle或其他工具,或者定制专有的ETL系统

ODS

对原始数据不进行修改,存储作用,到了ODS层后不允许修改,即体现”不易失性“

CDM

CDM层为数据分析提供服务
DWD数据明细层:接收ODS来的原始数据,对其清洗,编码,字段描述等,拿到统一规范的数据
DWS数据汇总层:聚合汇总成一个大表,宽表,减少对其他表的操作

ADS

DWS拿到的结果表,存储进ADS数据应用层
为外部查询提供接口

2.2 ETL流程

将数据从来源端经过抽取、交互转换、加载至目的端的过程
将数据按照定义好的格式加载到数据仓库中去
ETL规则的设计和实施约占整个数据仓库搭建工作量的60%-80%

数据抽取

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

  • 数据抽取方式有全量同步、增量同步两种
  • 全量同步将全部数据进行抽取,一般用于初始化数据装载(一开始数据仓库刚搭建好的时候)
  • 增量同步:检测数据的变动,抽取变动的数据,一般用于数据更新
  • (在一开始数据仓库搭建好的时候全量同步,后面就都增量同步)

数据转换

数据转换包括数据清洗和转换两阶段

  • 数据清洗:对重复数据,二义性,不完整,违反业务逻辑的数据处理
  • 数据转换:对数据进行标准化处理,进行字段、数据类型、数据定义的转换

数据加载

将处理完的数据导入目标层

ETL工具

结构化数据ETL工具:Sqoop、Kettle、Datastage、Informatica、Kafka、
非半/结构化数据ETL工具:Flume、Logstash
数据仓库原理 - 概念、架构、建模方法_第3张图片

2.3 数据积存

操作数据层ODS

数据与原业务数据保存一致,可以增加字段用来进行数据管理
扩充集,可以增加字段:(比如增加数据进入时间字段)
在这里插入图片描述
业务数据库里的数据是可以修改的,ODS这里不能修改,但能增加字段

在离线数仓中,业务数据定期通过ETL流程导入ODS中,导入方式有全量、增量两种:

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

2.4 数据分析

数据明细层DWD

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

数据仓库原理 - 概念、架构、建模方法_第4张图片
数据仓库原理 - 概念、架构、建模方法_第5张图片
维度退化:三张表合并成一个大表,避免多次的join
比如来自不同地域的多张表,通过增加字段,合并成一个大表

数据汇总层DWS

数据汇总层的数据对数据明细层的数据,按照分析主题进行计算汇总,存放便于分析的宽表
数据仓库原理 - 概念、架构、建模方法_第6张图片

数据应用层ADS

数据应用层也被称数据集市
存储数据分析结果,为不同业务场景提供接口,减轻数据仓库的负担
数据仓库擅长数据分析,直接开发业务查询接口,会加重负担

数据仓库原理 - 概念、架构、建模方法_第7张图片

3、建模方法

3.1 基本概念

OLTP
OLTP(在线事务处理)系统中,主要操作是随机读写
为了保证数据一致性、减少冗余,常使用关系模型
在关系模型中,使用三范式规则来减少冗余

OLAP
在线联机分析,主要操作是复杂分析查询,关注数据整合,以及分析、处理性能
OLAP根据数据存储的方式不同,又分为ROLAP、MOLAP、HOLAP
目的:加快计算性能
ROLAP(relation OLAP 关系型OLAP):使用关系模型构建,存储系统一般为RDBMS

MOLAP(multidimensional OLAP 多维型OLAP):预先聚合计算
HOLAP(hybrid OLAP混合架构的OLAP):ROLAP与MOLAP两者的集成

查询效率ROLAP < HOLAP

3.2 ROLAP

经典的数据仓库建模方法有ER模型、维度模型、Data Value 、Anchor

数据仓库原理 - 概念、架构、建模方法_第8张图片
维度模型灵活,多采用维度模型

维度模型中,表被分为维度表、事实表,维度是对事务的一种组织
维度一般包含分类、时间、地域等

数据仓库原理 - 概念、架构、建模方法_第9张图片
维度模型分为星型模型、雪花模型、星座模型
维度模型建立后,方便对数据进行多维分析

星型模型
维度只有一层,带一层维度(时间or地域等),分析性能最优
数据仓库原理 - 概念、架构、建模方法_第10张图片
雪花模型
多层维度,维度细分维度 or 维度下面接事实
比较接近三范式设计,较为灵活,性能较低
数据仓库原理 - 概念、架构、建模方法_第11张图片

星座模型
基于多个事实表,事实表之间会共享一些维度表
是大型数据仓库中的常态,是业务增长的结果,与模型设计无关
业务增大的结果,常态
数据仓库原理 - 概念、架构、建模方法_第12张图片
宽表模型
是维度模型的衍生,适用join性能不佳的数据仓库产品
宽表模型将维度冗余到事实表中,形成宽表,减少join操作

3.3 MOLAP

空间换时间的方式
只存储预计算结果
缺点:生成cube需要大量的时间、空间,维度预处理可能会造成数据膨胀
数据仓库原理 - 概念、架构、建模方法_第13张图片
常见的MOLAP产品:Kylin、Druid
依靠产品的性能

3.4 多维分析

OLAP:主要操作是复杂查询,可以多表关联
OLAP对复杂查询操作做了直观的定义:包括钻取、切片、切块、旋转

钻取:
对维度不同层次的分析,通过改变维度的层次来变换分析的粒度
钻取包括上卷、下钻
上卷:低层次到高层次的切换
下钻:高层次到低层次的切换
数据仓库原理 - 概念、架构、建模方法_第14张图片

切片、切块
对某个维度进行分割称为切片
按照多维进行的切片称为切块
数据仓库原理 - 概念、架构、建模方法_第15张图片
旋转
对维度方向的互换,类似交换坐标轴上卷

数据仓库原理 - 概念、架构、建模方法_第16张图片

你可能感兴趣的:(#,大数据-数据仓库,数据仓库,架构,数据库)