大数据之《数据仓库》

文章目录

  • 一、数据仓库 简介
    • 1.1、用途
    • 1.2、数据仓库跟mysql和hive的區別
      • 1.2.1、相同点:
      • 1.2.2、不同点:
      • 1.2.3、实际区别(是OLTP(联机事务)与OLAP(联机分析处理)的区别。)
    • 1.3、四大特點
      • 1.3.1、数据仓库的数据是面向主题的
      • 1.3.2、数据仓库的数据是集成的
      • 1.3.3、数据仓库的数据是不可更新的
      • 1.3.4、数据仓库的数据是随时间不断变化的
    • 1.4、数据仓库的表结构的设计
  • 二、数仓建模
  • 2.1、你了解数据仓库建模吗?
    • 2.1.1、数据仓库为什么要建模?
      • 2.1.1.1.访问性能 能够快速的查询所有数据 较少数据io
      • 2.1.1.2.数据成本 减少不必要的数据冗余 实现计算结果的复用性
      • 2.1.1.3.使用效率
      • 2.1.1.4.数据质量 改善数据口径不一致 减少数据计算错误 提高质量
    • 2.1.2、数仓中用什么来存储数据(hive mysql oracle db2)
    • 2.1.3、建模种类
      • 2.1.3.1、ER实体关系建模(关系型数据库建模)
      • 2.1.3.2、维度建模(hive建模)
    • 事实表:fact_table
    • 维度表:dim_table
    • 维度建模的三种形式
      • 星型模型
      • 雪花模型
      • 星座模型
  • 三、三范式(关系型数据库设计的规范,目的是降低数据的冗余性)
    • 1NF
    • 2NF
    • 3NF
    • BCNF(巴斯-科德范式)
    • 4NF
    • 5NF
  • 四、函数依赖
    • 4.1、完全函数依赖
    • 4.2、部分函数依赖
    • 4.3、传递函数依赖

一、数据仓库 简介

1.1、用途

出于分析性报告和决策支持目的而创建

1.2、数据仓库跟mysql和hive的區別

1.2.1、相同点:

从逻辑上理解,数据库和数据仓库没有区别,都是通过数据库软件(mysql,hive)实现的存放数据的地方

1.2.2、不同点:

从数据量来说,数据仓库要比数据库更庞大得多。数据仓库主要用于数据挖掘和数据分析,辅助领导做决策。

1.2.3、实际区别(是OLTP(联机事务)与OLAP(联机分析处理)的区别。)

操作型处理
叫联机事务处理OLTP(On-Line Transaction Processing,),也可以称面向交易的处理系统,它是针对具体业务在数据库联机的日常操作,通常对少数记录进行查询、修改。用户较为关心操作的响应时间、数据的安全性、完整性和并发支持的用户数等问题。传统的数据库系统作为数据管理的主要手段,主要用于操作型处理。

分析型处理
叫联机分析处理OLAP(On-Line Analytical Processing)一般针对某些主题的历史数据进行分析,支持管理决策。
大数据之《数据仓库》_第1张图片

1.3、四大特點

1.3.1、数据仓库的数据是面向主题的

圍繞主題進行分析(面嚮人事主題,分析有多少人離職,有多少人在職)

1.3.2、数据仓库的数据是集成的

從各個不同的數據庫中抽取過來的,數據很紥,進行數據綜合處理(字長不一致,异名同义、单位不统一)

1.3.3、数据仓库的数据是不可更新的

数据仓库的数据反映的是一段相当长的时间内历史数据的内容,是不同时点的数据库快照的集合,以及基于这些快照进行统计、综合和重组的导出数据,而不是联机处理的数据。数据库中进行联机处理的数据经过集成输入到数据仓库中,一旦数据仓库存放的数据已经超过数据仓库的数据存储期限,这些数据将从当前的数据仓库中删去。因为数据仓库只进行数据查询操作,所以数据仓库管理系统相比数据库管理系统而言要简单得多

1.3.4、数据仓库的数据是随时间不断变化的

1、数据仓库随时间变化不断增加新的数据内容。数据仓库系统必须不断捕捉OLTP(On-Line Transaction Processing联机事务处理过程(OLTP)
2、数据仓库随时间变化不断删去旧的数据内容 時限5~10年
3、数据仓库中包含有大量的综合数据 消除信息孤島

1.4、数据仓库的表结构的设计

数据仓库的表结构是依照 分析需求,分析维度,分析指标进行设计的。

二、数仓建模

2.1、你了解数据仓库建模吗?

2.1.1、数据仓库为什么要建模?

2.1.1.1.访问性能 能够快速的查询所有数据 较少数据io

2.1.1.2.数据成本 减少不必要的数据冗余 实现计算结果的复用性

2.1.1.3.使用效率

2.1.1.4.数据质量 改善数据口径不一致 减少数据计算错误 提高质量

2.1.2、数仓中用什么来存储数据(hive mysql oracle db2)

每个的特点 及 适用场景
mysql oracle db2 数据库 数据量小
hive 数据仓库 数据量大

2.1.3、建模种类

2.1.3.1、ER实体关系建模(关系型数据库建模)

实体
属性
关系
1:1 一对一
1:n 一对多
n:m 多对多

缺点:工程量巨大 比较复杂 梳理实体之间的关系比较复杂,实体之间关联可能要经过多次join 效率比较低

2.1.3.2、维度建模(hive建模)

事实表:fact_table

我们在ER实体关系模型中抽象出了 实体 关系 和属性三大类,
在现实生活中 每个操作型事件 都是发生在实体之间,伴随着操作事件的发生 会产生可度量的值,这个过程就产生了一个事实表,存储了每一个可度量的事件

示例:电商场景 一次购买事件 涉及的主体包括
客户 商品 商家 ,
产生可度量的值包括
商品数量 金额 件数
大数据之《数据仓库》_第2张图片

维度表:dim_table

维度:看待事物的角度 比如从颜色和尺寸来比较手机的外观 从cpu和内存比较手机的性能
维度表:维度表一般为单一主键 在ER 模型中 实体为客观存在的事物 都会带有自己的相关属性 属性一般为描述性的 这些描述 叫做维度

比如商品 单一的主键: 商品ID 商品中有很多属性 产地 颜色 材质 尺寸 单价等等
属性分为两种 :一种是描述数值类型 一种 描述文本类型

维度表:一般情况下 为一个具体的实体 和描述这些实体的属性
大数据之《数据仓库》_第3张图片

维度建模的三种形式

星型模型

一个事实表有多个维度表

雪花模型

一个事实表有多个维度表,并且维度表往下有多个划分(维度表多的话,可以采用降维变成一个宽表,提高效率)

星座模型

两个事实表有公用的维度表
大数据之《数据仓库》_第4张图片

三、三范式(关系型数据库设计的规范,目的是降低数据的冗余性)

1NF

属性不可分割

2NF

可以存在完全依赖,但是不包含部分依赖

3NF

不能存在传递依赖

BCNF(巴斯-科德范式)

4NF

5NF

四、函数依赖

4.1、完全函数依赖

a,b => c c必须通过 a和b才能获得,但是单独ab得不出c,所以 c完全依赖于 a,b

4.2、部分函数依赖

a,b => c c通过a和b获得,通过a能获得c,通过b也能获得c,所以 c部分依赖于 a,b

4.3、传递函数依赖

a => b => c 通过a获得b,通过b获得 c,但是 c得不到 a,所以 c传递依赖于 a

你可能感兴趣的:(#,新增知识)