HelloWorld


Zhikang Li's personal blog


Data wareHouse基础知识

Data wareHouse

学习数据仓库概述的个人总结。

1. basic

  • 数据的意义是什么?就是减少数据冗余,避免更新异常。而如5所述,分析型数据库中没有更新操作。因此,减少数据冗余也就没那么重要了。
  • 某大公司Hadoop Hive里的关系表不完全满足完整/参照性约束,也不完全满足范式要求,甚至第一范式都不满足。这种情况正常吗?”,答曰是正常的。因为Hive是一种数据仓库,而数据仓库和分析型数据库的关系非常紧密(后文会讲到)。它只提供查询接口,不提供更新接口,这就使得消除冗余的诸多措施不需要被特别严格地执行了。
1.1 定义
  • 面向分析的存储系统
  • 关系数据库最少也要求满足第1范式,而数据仓库里的关系表可以不满足第1范式。也就是说,同样的记录在一个关系表里可以出现N次。但由于大多数数据仓库内的表的统计分析还是用SQL,因此很多人把它和关系数据库搞混了。
1.2 特点
  1. 面向主题
    数据仓库和操作型数据库的根本区别
  2. 集成性
    集成性是指数据仓库会将不同源数据库中的数据汇总到一起;
  3. 企业范围
    数据仓库内的数据是面向公司全局的。比如某个主题域为成本,则全公司和成本有关的信息都会被汇集进来;
  4. 历史性
    较之操作型数据库,数据仓库的时间跨度通常比较长。
  5. 时变性
    时变性是指数据仓库包含来自其时间范围不同时间段的数据快照。
1.3 组件
  • data source, ETL, data warahouse, front end(BI)

2. 数据仓库维度建模

2.1 基本概念
  • 维度表(dimention)
    • Dimension tables, also known as lookup or reference tables
    • 对分析主题所属类型的描述, called as dimention
    • 时间维度、地点维度、商品维度等等
  • 事实表(fact table)
    • 对分析主题的度量
    • 常为数值类型, called as measure
    • 事实表包含了与各维度表相关联的外码,并通过JOIN方式与维度表关联
  • eg: 昨天早上张三在京东花费200元购买了一个皮包
    • 时间维度(昨天早上),地点维度(京东), 商品维度(皮包), 200元为事实信息
2.2 缓慢变化维度

key需要配合时间戳,以及行标识符使用才能解决缓慢维度变化

2.3 流程

ER建模->关系建模->维度建模

3. 实现与使用

数据仓库建模、ETL工程、OLAP、BI

ETL
  • Load
    • 首次加载(first load)和刷新加载(refresh load)
OLAP/BI工具
  • 对维度建模数据进行分析的SQL代码套路比较固定。于是,便有了OLAP工具,它专用于维度建模数据的分析。而BI工具则是能够将OLAP的结果以图表的方式展现出来,它和OLAP通常出现在一起。
Data cube
  • N维,维度扩展后的二维表格
  • 数据分析的对象就是这个逻辑概念上的数据立方体,基本用法是首先配置好维表、事实表,然后在每次查询的时候告诉OLAP需要展示的维度和事实字段和操作类型即可
  • 操作
    1. slice, dice
      • 对where的操作
    2. pivot
      • select 顺序的操作
    3. roll up / drill down
      • group by 操作
      • 钻取(Drill-down) 使统计维度降到更细的层级,如下图时间维度从“季度”降到了“月份”层级,能降到多细要看底层数据有多细;
      • 上卷(Roll-up) 则是反过程,“浙江”、“上海”、“江苏”的数据被汇总到了“江浙沪” 地区层级;
OLAP架构模式
  1. MOLAP(Multidimensional OLAP)
    image
    • 在该立方体中,每一格对应一个直接地址,且常用的查询已被预先计算好
  2. ROLAP(Relational OLAP)
    image
    • ROLAP架构并不会生成实际的多维数据集,而是使用星形模式以及多个关系表对数据立方体进行模拟
    • ROLAP中,所有的查询都是被转换为SQL语句执行的。而这些SQL语句的执行会涉及到多个表之间的JOIN操作,没有MOLAP速度快