离线数仓及数据仓库

 

数据仓库

数据仓库的定义

数据仓库(Data Warehouse),简称DW。数据仓库顾名思义,是⼀个很⼤的数据存储集合(存储数据的仓库,主要是用于存储过去既定发生的历史数据,对这些数据进行数据分析的操作, 从而对未来提供决策支持),出于企业的分析性报告和决策⽀持⽬的⽽创建,对多样的业务数据进⾏筛选与整合。它能为企业提供⼀定的BI(商业智能:例如数据挖掘、数据分析和数据报表)能⼒。有了数据报表,还可以指导业务流程改进。

数据仓库最大的特点: 既不生产数据, 也不消耗数据, 数据来源于各个数据源

 

ETL

 ETL: 抽取 转换 加载
​
  指的: 数据从数据源将数据灌入到ODS层, 以及从ODS层将数据抽取出来, 对数据进行转换处理工作, 最终将数据加载到DW层, 然后DW层对数据进行统计分析, 将统计分析后的数据灌入到DA层, 整个全过程都是属于ETL范畴。现在的数据仓库模式更像是ELT。

狭义上ETL: 从ODS层到DW层过程

 

数据库和数据仓库的区别

数据库和数据仓库的区别实际讲的是OLTP和OLAP的区别。

OLTP系统的典型应用就是RDBMS,也就是我们俗称的数据库,当然这里要特别强调此数据库表示的是关系型数据库,Nosql数据库并不在讨论范围内。

OLTP是面向于事务(业务)的 , 主要是用于捕获数据 , 主要是存储的最近一段时间的业务数据, 交互性强 一般不允许出现数据冗余

 

OLAP系统的典型应用就是DW,也就是我们俗称的数据仓库。

OLAP是面向于分析(主题)的 , 主要是用于分析数据, 主要是存储的过去历史数据 , 交互性较弱 可以允许出现一定的冗余。

 

  1. 数据仓库不是大型的数据库,虽然数据仓库存储数据规模大。

  2. 数据仓库的出现,并不是要取代数据库。

  3. 数据库是面向事务的设计,数据仓库是面向主题设计的。

  4. 数据库一般存储业务数据,数据仓库存储的一般是历史数据。

  5. 数据库是为捕获数据而设计,数据仓库是为分析数据而设计。

 

数仓分层

  • ODS(operdation Data store)数据贴源层

  • DWD(data warehouse details)数据明细层

  • DWM(data warehouse middle)数据中间层

  • DWS(data warehouse service)数据服务层

  • ADS(application data service)数据应用层

 

8a4d18fa6bc34a77937edb93532c6d18.png

 

 

 

4eef0e8015b04d4aae089080c91989a2.png

 

数仓分层带来的好处:

  • 数据结构清晰:每一个数据分层都有它的作用域和职责,在使用表的时候能更方便地定位和理解。

  • 避免重复开发:规范数据分层,开发一些通用的中间层数据,能够减少极大的重复计算。

  • 统一数据口径:提供统一的数据出口,统一对外输出的数据口径。

  • 复杂问题简单化:将一个复杂的任务分解成多个步骤来完成,每一层解决特定的问题。

  • 数据隔离:不必改一次业务就需要重新接入数据。另外,随着业务的变化,只需要调整底层的数据,对应用层对业务的调整零感知。

 

 

数仓建模

数仓建模指的规定如何在hive中构建表, 数仓建模中主要提供两种理论来进行数仓建模操作: 三范式建模和维度建模理论

三范式建模: 主要是存在关系型数据库建模方案上, 主要规定了比如建表的每一个表都应该有一个主键, 数据要经历的避免冗余发生等等

维度建模: 主要是存在分析性数据库建模方案上, 主要一切以分析为目标, 只要是利于分析的建模, 都是OK的, 允许出现一定的冗余, 表也可以没有主键。维度建模的两个核心概念:事实表和维度表。

 

事实表

事实表:一般指的就是分析主题所对应的表,每一条数据用于描述一个具体的事实信息, 这些表一般都是一坨主键(外键)和描述事实字段的聚集

1) 事务事实表:
    保存的是最原子的数据,也称“原子事实表”或“交易事实表”。沟通中常说的事实表,大多指的是事务事实表。
2) 周期快照事实表:
    周期快照事实表以具有规律性的、可预见的时间间隔来记录事实,时间间隔如每天、每月、每年等等
    周期表由事务表加工产生
3) 累计快照事实表:
    完全覆盖一个事务或产品的生命周期的时间跨度,它通常具有多个日期字段,用来记录整个生命周期中的关键时间点

 

维度表

维度表: 指的在对事实表进行统计分析的时候, 基于某一个维度, 二这个维度信息可能其他表中, 而这些表就是维度表

高基数维度表: 指的表中的数据量是比较庞大的, 而且数据也在发送的变化
    例如: 商品表, 用户表
低基数维度表: 指的表中的数据量不是特别多, 一般在几十条到几千条左右,而且数据相对比较稳定
    例如: 日期表,配置表,区域表

 

维度建模的三种模型

  • 星型模型

    • 特点:只有一个事实表, 那么也就意味着只有一个分析的主题, 在事实表的周围围绕了多个维度表, 维度表与维度表之间没有任何的依赖

    • 反映数仓发展初期最容易产生模型

  • 雪花模型

    • 特点: 只有一个事实表, 那么也就意味着只有一个分析的主题, 在事实表的周围围绕了多个维度表, 维度表可以接着关联其他的维度表

    • 反映数仓发展出现了畸形产生模型, 这种模型一旦大量出现, 对后期维护是非常繁琐, 同时如果依赖层次越多, SQL分析的难度也会加大

    • 此种模型在实际生产中,建议尽量减少这种模型产生

  • 星座模型

    • 特点: 有多个事实表, 那么也就意味着有了多个分析的主题, 在事实表的周围围绕了多个维度表, 多个事实表在条件符合的情况下, 可以共享维度表

    • 反映数仓发展中后期最容易产生模型

 

缓慢变化维

定义:数仓的重要特点是反映历史变化,所以如何处理维度的变化是非常重要的。现实世界中维度的属性并不是一成不变的,它随着时间发生缓慢的变化,与数据增长较为快速的事实相比,维度变化相对缓慢,如何处理变化的维度是数仓经常要面对的问题。

 

处理方式优点缺点适用场景案例
原样保留实现简单,维度属性无变化丢失历史维度属性维度不变的场景例如身份信息
覆盖重写简单粗暴,直接覆盖丢失历史维度属性只看最新维度属性美团改名为美团美团点评(这种情况,产品的维度或者事实表的主键并未发生变化)
新增维度行反映历史维度属性主键要求高,实现起来相对复杂缓慢变化维的场景基本都适用增加无业务含义的代理键。拉链表
新增维度列保留历史维度属性,并且对新增和历史维度归一扩展性不好,需要新增列某个维度属性影响了维表中大量行的情况一列为旧的属性,一列为新的属性。
微型维度提取剧烈变化的维度属性,与缓慢变化的维度进行隔离破坏了维度的可浏览性;需要使用代理键大型维表或者快速变化的维表。 
其他维度上面技术的组合,也称为混合缓慢变化维技术   

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值