zoukankan      html  css  js  c++  java
  • 【入门精讲】数据仓库原理&实战

    一.诞生背景

    业务历史低频使用数据太多,产生不必要负载

    各个数据系统分离存储,数据不一致,权限分配过多,资源浪费

    数据分析需求

    总结就是数据积存、数据分析这两个需求 

    二.概述

    面向主题、集成、非易失且随时间变化

    OLAP,冗余反范式

    三.数据仓库实现

    传统:MPP集群。扩展性和热点问题无法解决

    大数据数仓:把SQL转为计算引擎任务。移动计算而非移动数据

    四.MPP与分布式架构

    MPP:CAP

    分布式架构:PAC

    MPP+分布式架构:常用于流式处理

    五.架构

    架构图

    ETL流程:数据清洗(主要是非结构化、半结构化)、标准化

    数据积存

    ODS:数据非易失性,不准随意修改。目的是为了保存历史数据,源数据可能会被删掉

    数据分析

    DWD:清洗、标准化,统一编码,统一规范。数据满足三范式。注重数据分析

    DWS:按照主题进行汇总、聚合,一般是宽表,进行了join有冗余。还有数据建模也在这一层。注重数据分析

    ADS:DWS进行算子运算后得到的结果层。注重数据查询速度,也叫数据集市层

    六.ETL

    Kafka,Flume,Logstash等工具可以动态监控

    七.ODS

    与原始数据一致,但是可以加字段,比如时间戳,源头,更新方式等

    增量导入一般是外连接+全覆盖

    八.DWD

    ods的数据进行清洗、标准化、维度退化(退维就是取消外键,一些可枚举值不需要建立维度表,比如城市,搞一个城市表再把城市id放在事实表里,直接把城市名放在事实表里即可)

    维度退化:把维度表里的数据冗余加载到主表里,避免后续join操作。增加了主表的维度(列)

    还符合三范式规范

    使用join生成新表完成退维

    九.DWS

    按照主题进行汇总,注重数据聚合、复杂查询、处理性能更优的数据仓库模型,比如维度模型。最终形成一个违背3nf的宽表。里面的数据基础group by聚合统计

    十.ADS

    不涉及分析、计算,只为快速出结果。通过计算得到ads表,存放数据产品个性化的统计指标数据

    数据表不存在数仓中,一般在MySQL、ClickHouse这样的传统数据关系型库里

    十一.建模方法

    基本概念:OLTP,OLAP

    OLTP:随机读写,减少冗余,ER模型尽量拆分数据表

    OLAP:注重数据整合

    ROLAP:面向DWS层

     维度表:星型模型、雪花模型、星座模型

    星型模型:

    雪花模型:

    星座模型:

    宽表: 维度模型衍生,事实字段、维度字段一起存在

    MOLAP:CUBE模型,预计算,失去了灵活性。以多维数组的形式存在。面向ADS层

    多维分析:钻取、切片、切块、旋转

    钻取:

     

     切片切块:

     旋转:

    十二.表分类

    事实表

    维度表

    事物事实表

    周期快照事实表

    累积事实快照表:比较随机,意味着高概率修改

    三种方案解决:

     拉链表:

    十三.ETL同步策略

    十四.任务调度

    十五.

    十六.

    十七.

    十八.

    十九.

    二十.

    二十一.

    二十二.

    二十三.

    二十四.

    二十五.

  • 相关阅读:
    指针数组与数组指针
    209. 长度最小的子数组
    面试题 05.08. 绘制直线(位运算)
    1160. 拼写单词
    88. 合并两个有序数组
    80. 删除排序数组中的重复项 II(On)
    python自定义异常和主动抛出异常
    类的构造方法1(类中的特殊方法)
    python之判断一个值是不是可以被调用
    主动调用其他类的成员(普通调用和super方法调用)
  • 原文地址:https://www.cnblogs.com/cascle/p/15264830.html
Copyright © 2011-2022 走看看