数据仓库设计概论

数仓设计概论

1.OLTP与OLAP的应用和区别?

  • OLTP
    • 应用:联机事务处理,满足业务数据的存储
    • 特点:数据量相对较小、性能快、需要满足事务
    • 工具:数据库管理工具,MySQL、Oracle
  • OLAP
    • 应用:联机分析处理,满足基于数据处理的数据分析存储和管理
    • 特点:数据量相对较大、性能相对可以慢一些、没有事务性需求
    • 工具:数据仓库管理工具,Hive

2.数据仓库概述

  • 2.1 功能:
    为了满足OLAP(联机分析处理)场景下的数据管理(存储、处理)需求

    • 存储:管理,将公司所有数据进行统一化的存储管理
    • 处理:将各种原始数据进行规范化处理,然后提供给各需求方
  • 2.2 本质:
    一种分布式的、统一化的、规范化的数据管理设计模型

  • 2.3 应用:
    满足企业中所有数据的统一化存储,通过规范化 的数据处理来实现企业数据分析应用的需求

  • 2.4 特点:

    • 1.面向主题
      数据仓库(DW,整个公司的数据)–>数据集市(DM,常见按照部门或者业务进行划分,又称作主题域)–>主题(针对具体的需求划分不同的主题)
    • 2.数据集成:存储所有需要采集的数据
    • 3.非易失性(稳定性):几乎不存在更新和删除
    • 4.时变性:数仓数据随着时间的推移数据不断增加
  • 2.5 数据仓库与数据库的区别

    • 数据库:面向业务,为捕获数据而设计(实时),主要为OLTP服务
    • 数据仓库:面向主题,大多用于储存历史数据,弱事务,重分析(OLAP),一般不支持修改

3.数据仓库的核心流程和重点应用

  • 核心流程:ETL、分层、建模

  • 3.1 ETL:Extract(抽取)、Transform(转换)、Load(加载)

    • 将原始数据根据需求进行数据处理后写入HDFS
    • 一般发生两次:
      • 一次在数据采集之后,写入HDFS的过程中,一次在Hive数仓中
    • 实现功能:过滤(SQL中select对列过滤,MR中调用MAP方法过滤)、转换、补全
  • 3.2 分层:决定数据的规范性

    • 目的:将各种数据的处理流程规范化

    • 为什么要分层?

      • 1.清晰数据结构:每一个数据分层都有它的作用域,这样我们在使用表的时候能更方便地定位和理解。
      • 2.数据血缘追踪:简单来讲可以这样理解,我们最终给业务诚信的是一能直接使用的张业务表,但是它的来源有很多,如果有一张来源表出问题了,我们希望能够快速准确地定位到问题,并清楚它的危害范围。
      • 3.减少重复开发:规范数据分层,开发一些通用的中间层数据,能够减少极大的重复计算。
      • 4.把复杂问题简单化:一个复杂的任务分解成多个步骤来完成,每一层只处理单一的步骤,比较简单和容易理解。
      • 5.屏蔽原始数据的异常对业务的影响:不必改一次业务就需要重新接入数据
    • 整体分层一般分为三层:ODS(原始数据层)、DW(数据仓库层)、APP(数据应用层)

    • 实现:数据仓库是有Hive进行构建的,分层是通过数据库实现的

  • 3.3 建模:决定了数据的存储方式和表的设计

    • 目的:为了实现数据存储二设计的数据表的存储模型

    • 为什么要建模?

    • 大数据系统需要数据模型方法来帮助更好地组织和存储数据,以便在性能、成本、效率和质量之间取得最佳平衡。

      • 1.性能:良好的数据模型能帮助我们快速查询所需要的数据,减少数据的I/O吞吐
      • 2.成本:良好的数据模型能极大地减少不必要的数据冗余,也能实现计算结果复用,极大地降低大数据系统中的存储和计算成本
      • 3.效率:良好的数据模型能极大地改善用户使用数据的体验,提高使用数据的效率
      • 4.质量:良好的数据模型能改善数据统计口径的不一致性,减少数据计算错误的可能性

4.指标

  • 概述:统计分析的一个度量值,用于反映一个事实
  • 常见指标
    • 1.PV —— page view:页面访问量
    • 2.UV —— Unique View:唯一访问量,即用户访问数
    • 3.IP —— 用户访问IP地址
    • 4.跳出率 —— 用户跳出率、会话跳出率,用户只访问了一个页面就离开了的会话个数,一般此数据越多越不好,一看即走说明网内内容毫无吸引力
    • 5.二跳率 —— 用户至少访问两个页面的会话个数,与跳出率相反,此数据越多说明网页质量越高
    • 6.平均访问时长 —— Sum(每个访问会话的时长)/会话个数
    • ……

5.维度设计

  • 维度概述:用于描述事实【指标】的角度(表格里的分组字段)
    - 注:指标如果不基于组合维度进行分析得到,这个指标就毫无意义,所以指标一般基于多个组合维度来看:时间维度+地区维度等。
  • 功能:细化对事实的描述,更精确的发现事实的结果
  • 常见维度:时间、地区、用户、IP、平台、操作系统……
  • 术语了解:
    • 下钻:当前基于一个大的维度进行分析,要下钻到一个更细、更小的维度进行分析
    • 上卷:当前分析的是一个小维度,要上卷到一个大的颗粒维度分析

6.模型

  • 6.1. ER模型

  • 概述:实体关系模型,一般应用于OLTP的关系型数据系统来实现业务数据库的建模

  • 应用:实现满足业务的数据存储

  • 流程:

    • 1.找到所有实体以及每个实体的相关属性
    • 2.找到所有实体之间的关系
    • 3.建表,每个实体和每个关系都是一张表
  • 优缺点:

    • 优点:符合数据库的设计规范,没有冗余数据,保证性能和业务的需求
    • 缺点:设计时较复杂,必须找到所有实体以及它们之间的关系才能构建
  • 6.2. 维度模型

    • 6.2.1 概述:基于维度表和事实表进行关联,反应一件事的好坏

      • 维度:用于反映事情好坏的角度
      • 事实:统计分析指标的度量值
    • 6.2.2 应用

      • 一般应用于大数据的数据仓库的模型构建,用于通过不同维度来反映一件事情的好坏
    • 6.2.3 维度表

      • 概述:一般是对事实的描述信息。每一张维表对应现实世界中的一个对象或者概念。 例如:用户、商品、日期、地区等。
      • 特征:
        • 1.维表的范围很宽(具有多个属性、列比较多)
        • 2.跟事实表相比,行数相对较小:通常< 10万条
        • 3.内容相对固定:编码表
    • 6.2.4 事实表

      • 概述:事实表中的每行数据代表一个业务事件(下单、支付、退款、评价等)。“事实”这个术语表示的是业务事件的度量值(可统计次数、个数、金额等),例如,订单事件中的下单金额。

      • 特征:

        • 1.非常的大
        • 2.内容相对的窄:列数较少
        • 3.经常发生变化,每天会新增加很多
      • 6.2.4.1 事实指标分类

        • 1.可累加事实值:基于不同的维度和统计可以直接进行累加的值
        • 2.半可累加事实值:基于某些维度和统计可以进行累加的值,而某些维度不可以
        • 3.不可累加事实值:在任何维度下,指标的累加是没有意义的,比如两个比率的相加或者平均数的相加
        • 4.可累加事实值:不建议产生空值,事实表中是不会出现空值,一般就前三种,此种情况不会出现
      • 6.2.4.2 事实表分类

        • 1.事务事实表:原始事务事实的数据,如订单表,登录日志等
        • 2.周期快照事实表:周期性对事务事实进行聚合的结果
        • 3.累计快照事实表:累积性完善事实的结,如快递订单的物流更新
        • 4.无事实事实表:没有事实度量,都是维度外键,一般用于与事实表进行关联求差值
    • 6.2.5 维度表模型

      • 6.2.5.1 雪花模型

      • 设计思路(特点):部分维度直接与事实表相关联,部分维度通过其他维度间接关联事实表

        • 优点:没有冗余数据,保证业务的需求
        • 缺点:关联层次较多,层层JOIN,查询性能较低
          雪花模型
      • 6.2.5.2 星型/星座模型

      • 设计思路(特点):所有维度直接与事实表相关联

      • 1.星型模型:

        • 优点:直接查询,不用关联其他维度表,性能高
        • 缺点:数据冗余度高
          星型模型
      • 2.星型模型:基于星型模型的演变,多个事实共同使用一个维度表,真实场景中常用
        星座模型

7. 渐变维(SCD)

  • 7.1. 概述(什么是渐变维?)
    维度可以根据变化剧烈程度主要分为无变化维度、缓慢变化维度和剧烈变化维度。例如一个人的相关信息,身份证号、姓名和性别等信息数据属于不变的部分,政治面貌和婚姻状态属于缓慢变化部分,而工作经历、工作单位和培训经历等在某种程度上属于急剧变化字段。
    大多数维度表随时间的迁移是缓慢变化的。比如增加了新的产品,或者产品的ID号码修改了,或者产品增加了一个新的属性,此时,维度表就会被修改或者增加新的记录行。这样,在设计维度和使用维度的过程中,就要考虑到缓慢变化维度的处理。
    缓慢渐变维,即维度中的属性可能会随着时间发生改变,比如包含用户住址Address的DimCustomer维度,用户的住址可能会发生改变,进而影响业务统计精度,DimCustomer维度就是缓慢渐变维(SCD)

  • 7.2. 缓慢渐变维类型(渐变维的处理方案)

    • SCD1:通过更新维度记录直接覆盖已存在的值(覆盖历史记录只保留最新数据,结果不准确)
    • SCD2:构建拉链表,根据不同的时间来标记这一列不同的状态(重点,最常用)
      参见《数仓分析之拉链表》
    • SCD3:通过增加列的方式来记录每个状态(不能满足需求,一般不用)

8. 分层:

  • 功能:规范数据从进入数仓开始到被应用这个过程整体被处理的过程
  • 整体分层一般分为三层:ODS(原始数据层)、DW(数据仓库层)、APP(数据应用层)
  • 常见分层(细化分层):
    • 1.ODS:原始数据层
      • 功能:存储采集的所有数据
      • 数据:几乎是原始数据
    • 2.DWD:明细数据层
      • 功能:对ODS层数据进行ETL
      • 数据:ETL后的数据
    • 3.DWM:中间数据层
      • 功能:轻度聚合,依需求和公司习惯而定,有些公司无此分层
      • 数据:基于基础维度对DWD层的数据进行轻度聚合后的数据
    • 4.DWS/DM:汇总数据层/数据集市层
      • 功能:按业务需求划分主题域,将主题域中所需要的维度和指标进行最后的聚合,构建宽表
      • 数据:对上层数据进行整体聚合,得到业务指标的宽表
    • 5.APP/DA/ADS:数据应用层
      • 功能:存储最后要用的数据,划分具体主题,构建每个主题的结果表
      • 数据:基于DWS层进行主题划分的数据
    • 6.DIM:维度数据表
      • 功能:存放维度表的数据
    • 7.TMP:临时数据层
      • 功能:存储一些临时数据数据
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值