暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

数据仓库理论体系扫盲

flychen的碎语 2021-08-12
1148


    简介


    数据仓库诞生原因
    历史数据积存
    企业数据分析需要
    ----------------------------------------------------


    1.数据仓库
    比尔 恩门 提出;
    1.1 数仓特点
    面向主题的、集成的、非集成的
    面向主题:为数据分析提供服务,根据主题将原始数据集合在一起。
    集成:原始数据来源于不同数据源,要整合成最终数据,需要经过抽取、清洗、转换的过程。
    非易失:保存的数据是一系列历史快餐,不允许被修改;
    时变性:数仓会定期接受、集成新的数据,以反应出数据的最新变化。


    1.2 数据仓库 VS 数据库
    数据库 : 面向事务、OLTP、ER模型
    数据仓库:面向主题,OLAP、 星型模型、雪花模型


    1.3 传统数据仓库
    MPP 大规模并行处理、集群
    完全兼容SQL


    1.4 大数据数据仓库


    天然的扩展性 + 海量数据存储计算
    分布式SQL引擎 + 大数据计算引擎 + 分布式文件系统
    Yarn 调度引擎


    1.5
    1.6 分布式架构
    Hadoop 架构 批处理架构


    P 分区容错性
    A 可用性
    C 一致性


    吞吐量大时,优势明显。


    1.7 常见数据仓库产品
    1.7.1 传统数据仓库
    Oracle RAC
    DB2
    Teradata
    Greenplum 开源,基于 postgreSQL 开发;


    1.7.2 大数据数据仓库


    Hive sql 转换 MapReduce ,或转换 spark
    Spark SQL 速度更快,
    Hbase No SQL 数据库,非结构化数据、半结构化数据
    Impala
    HAWQ greenplum 在hadoop 上的移植产品
    TIDB 兼容mysql 、同时可用于 OLTP、OLAP


    ----------------------------------------------------


    2.架构
    2.1 架构图-数据仓库架构设计


    ETL 数据同步模块 sqoop kettle
    ODS 操作数据源层 原始数据 Operational Data Store
    CDM 公共维度模型层 Common data model
    DWD 数据明细层 Data Warehouse details
    DWS 数据汇总层 Data Warehouse Services
    ADS 数据应用层
    报表决策、并发查询、搜索检索
    Application Data Store


    2.2 ETL流程


    ETL extract transform load 提取-转换-执行
    数据抽取
    全量同步
    增量同步
    数据转换
    清洗
    转换
    数据加载




    结构化数据ETL工具


    Sqoop 1.X版本建议
    Kettle
    Datastage 商业软件
    Informatica 商业软件
    kafaka 消息队列、提供etl功能


    非|半结构化数据ETL工具
    Flume
    Logstash




    2.3 数据积存
    操作数据层 ODS
    与原始数据保持一致,可以增加字段用来进行数据管理;


    2.4 数据分析


    DWD 数据明细层
    对ODS层数据进行清洗、标准化】维度退化(时间、分类、地域)
    DWS 数据汇总层
    按照主题汇总
    ADS 数据应用层
    又称数据集市
    Kylin 报表决策
    Hbase 并发查询
    Elastic Search 搜索检索


    ----------------------------------------------------


    3.建模方法
    3.1 基本概念
    OLAP 在线联机分析
    Online analysis process
    在线事务处理,主要操作是随机读写
    为保证一致性,减少冗余,常使用关系模型
    在关系模型中,使用3NF三范式规则来减少冗余


    ROLAP 关系型OLAP relation OLAP
    MOLAP 多维型 MOLAP Multidimensional OLAP
    Group by 运算,提前计算
    预先聚合运算,使用多维数组的形式保存数据结果,加快查询分析时间。
    HOLAP 混合架构的OLAP Hybrid OLAP
    ROLAP 和 MOLAP 两者的集成,如底层是关系型的,高层是多维矩阵型的;
    查询效率高于ROLAP,低于MOLAP
    3.2 ROLAP维度模型
    ER模型、维度模型、Data Value 、Anchor
    面向数据仓库的 DWS层(原始数据层)
    维度模型
    表:维度表、事实表
    维度:分类、时间、地域
    维度模型:
    星型模型(一个中心 事实表)、
    雪花模型、
    星座模型:星座模型基于多个事实表,事实表之间会共享一些维度表
    是大型数据仓库中的常态,是业务增长的结果,与模型设计无关。


    维度模型建立后,方便对数据进行多维分析。


    宽表模型
    宽表模型是维度模型的衍生,适合join性能不佳的数据仓库产品。
    宽表模型将维度冗余到事实表中,形成宽表,以减少join操作。


    3.3 MOLAP 系统建模方法
    对数据进行预运算
    以多维数组 cube(多维立方体)模型存储,物化到存储系统中,加快后续查询。
    生成CUBE 需要大量的时间、空间,
    维度预处理可能会导致数据膨胀。


    常见mOLAP 产品
    Kylin ,MOLAP产品的开源代表
    应用于数据仓库ADS (应用数据层)
    Druid


    3.4 多维分析
    复杂查询:count 、sum、avg
    钻取:对维度的不同层次分析,通过改变维度的层次来变换分析的粒度。
    上卷(roll-up):从低层次到上层次
    下钻(drill-down):从高层次到低层次
    切片:选择某个维度进行分割称为切片。
    切块:按照多维进行的切片称为切块。
    旋转:对维度方向的互换,类似于较差坐标轴上卷。


    ----------------------------------------------------


    4. 最佳实践
    表的分类
    (维度建模中的表类型)
    事实表:一个现实存在的业务对象。
    维度表:对一些业务状态、代码的解释,也可以称为码表。
    事务事实表:一旦产生不会改变,只会增加、追增。
    周期快照事实表:周期重新计算
    使用周期+ 状态度量的组合:如累计订单数,年是周期,订单总数是量度。
    写入压力小,查询压力大。
    累积快照事实表:记录不确定周期的度量统计,完全覆盖一个事实的生命周期,如订单状态表。
    通常有多个时间字段,用于记录生命周期中的关键时间点。
    只有一条记录,针对此记录不断更新。
    累计快照事实表具体实现
    实现方式1:日期分区表
    全量数据记录,每天的分区存储昨天全量数据 与 当天增量数据合并的结果。
    数据量大导致全量表膨胀,存储大量永远不更新的冷数据,对性能影响较大。
    适用于数据量少的情况
    实现方式2:日期分区表 + 冷数据清理
    使用日期分区表,推测数据最长生命周期,存储周期内数据;周期外的冷数据存储到归档表
    需要保留多天的分区数据,存储消耗依然很大。
    实现方式3:日期分区表+业务实体的结束时间分区
    每天的分区存放当天结束的数据,
    设计一个时间非常大的分区,存放截止当前未结束的数据。
    以结束的数据存放到相应分区,存放未结束数据的分区,数据量也不会很大。
    无存储浪费,数据全局唯一
    业务系统可能无法标识业务实体的结束时间,可以使用其他相关业务系统的结束标志作为此业务系统的结束,也可以使用最长生命周期时间或前端系统的数据归档时间。


    拉链表,不属于数据建模表类型。
    拉链表记录每天信息的生命周期,用于保留数据的所有历史(变更状态)
    拉链表将表数据的随机修改方式,变为顺序追加。


    ETL策略
    全量同步
    数据初始化转载一定使用全量同步的方式;


    增量同步
    传统数据整合方案: merge方式(update + insert)


    任务调度
    为什么需要任务调度
    解决任务单元间的依赖关系
    自动化完成任务的定时执行


    常见任务类型
    Shell
    Java 程序
    mapreduce程序
    sql脚本


    常见调度工具
    Azkaban
    Oozie


    文章转载自flychen的碎语,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

    评论