• 数仓理论


    数仓是什么

    面向主题的,集成,不可更改的,随时间不断变化的数据集合,用来做决策分析

    为什么需要数据仓库

    在大数据时代:

    传统数据库无法满足快速增长的海量数据存储需求,无法有效处理不同类型的数据,

    计算能力不足,可扩展性差

    OLTP 和OLAP的区别

    OLTP遵循三范式,不存在数据冗余,擅长数据的修改

    OLAP不遵循三范式,join操作少,查询效率快,擅长数据分析

    数仓理论

    Inmon理论

     Inmon 模式从流程上看是自顶向下的,即从数据源到数据仓库再到数据集市的(先有数据仓库再有数据集市)一种瀑布流开发方法。

    对于Inmon模式,数据源是多样的。

    Inmon是以数据源头为导向,首先,需要探索性地去获取尽量符合预期的数据,尝试将数据按照预期划分为不同的表需求,

    清洗完数据之后将数据抽象为实体-关系模型,采用三范式。

    该套建模理论通过规范化建模后得到一个关系型的中心数据库,然后各部门基于中心数据库进行维度建模,搭建数据集市,

    开发人员通过数据集市获取数据,一般不直接从中心数据库获取数据

    图解:

    kimball理论

    Kimball 模式从流程上看是是自底向上的,即从数据源到数据集市再到数据仓库(先有数据集市再有数据仓库)的一种敏捷开发方法。

    对于Kimball模式,数据源往往是给定的若干个数据库表,数据来源较稳定。

    维度表和事实表是以需求为导向,根据业务需求创建维度表和事实表,不采用三范式,会存在一定的数据冗余。

    kimball理论从数据源获取数据后直接进行维度建模,维度之间互相交错,最终一般呈现为星座模型,整个星座模型就是数据仓库

    示例:

     总结

    • 对于大多数互联网公司由于需求的快速变化,处心积虑设计(Inmon)实体-关系的设计哲学似乎并不能满足快速迭代的业务需要。所以,更多场景下趋向于使用(Kimball)维度-事实的设计哲学反而可以更快地完成任务。

    • 数据仓库建设通常以日为粒度,将OLTP数据变化的不情况增量同步到数据仓库中。

    • 在数据仓库的实际工作中,80%的时间会花费在任务调度、数据清洗和业务梳理上,只有20%的时间会投入到数据挖掘上。

    因此我们将基于kimball理论搭建数仓。

    数仓命名规范

    分层

    为什么分层:

    1.复杂问题简单化,容易定位问题

    2.减少重复开发,利用中间层数据,大大减少重复计算,增加数据复用性

    3.隔离原始数据,将统计数据和原始数据隔离开

    如何分层:

    Ods层:存放原始数据

    Dwd层:数据清洗(去空,脏数据,不合理数据),维度退化,脱敏等

    Dws层:以dwd为基础,按天进行轻度汇总

    Dwt层:以dws为基础,按主题(维度)进行汇总

    Ads层:以dwt,dws为基础,为报表提供数据

    数仓建模(主要在dwd层建模)

    常用建模方式:

    1.关系建模:三范式 -> 属性不可分割;不存在部分函数依赖;不存在传递依赖

    好处:不会造成冗余数据,但常常需要进行多次join操作

     

    2.维度建模:不遵循三范式,分为维度表,事实表

    好处:join操作少,mr计算速度大大加快

     

    维度表:主要是描述信息,比如对商品的描述。

    事实表:用户做了什么,比如今天10点,用户买了一部手机。

    特征:字段多为外键或可进行度量的值

     

    数据仓库建模方式:维度建模

     

    三大维度建模模型:

    星型模型:事实表周围只有一层维度(join操作最少,冗余数最多)

    雪花模型:两层维度以上

    星座模型:多个事实表共用一个维度(星座模型和前两种模型不冲突)

     

    一般采用星型模型,但呈现出来的是星座模型

     

     

    建模:

    ods:

    (1)保持数据原貌不做任何修改,起到备份数据的作用。
    (2)数据采用压缩,减少磁盘存储空间(例如:原始数据 100G,可以压缩到 10G 左
    右)
    (3)创建分区表,防止后续的全表扫描
    (4)创建外部表。在企业开发中,除了自己用的临时表,创建内部表外,绝大多数场景
    都是创建外部表。
     
    dwd (维度建模):
    dwd层需构建维度模型,一般采用星型模型
    1. 选择业务过程
    2. 声明粒度
    3. 确定事实表和维度表(事实表和ods层的表不会有太大差别)
    4. 维度退化(将与维度相关的表进行合并)

     

    dws:

    统计各个主题对象的当天行为,服务于 DWT 层的主题宽表,以及一些业务明细数据,
    应对特殊需求(例如,购买行为,统计商品复购率)。
    因为宽表使用频率高,一般不压缩
    粒度:天

     

    dwt:

    以分析的主题对象为建模驱动,基于上层的应用和产品的指标需求,构建主题对象的全
    量宽表。
    粒度:周,月
     
    (dws和dwt都是建宽表)
     

    ads:

    对电商系统各大主题指标分别进行分析。
  • 相关阅读:
    iOS基础
    iOS基础 ----- 内存管理
    NSAttributedString 的一些基本用法
    node安装使用
    docker常用命令
    docker lnmp
    easy-wechat
    composer
    center7系统搭建lnmp
    xammp环境配置
  • 原文地址:https://www.cnblogs.com/ldy233/p/14439983.html
Copyright © 2020-2023  润新知