上海古都建筑设计集团,上海办公室装修设计公司,上海装修公司高质量的内容分享社区,上海装修公司我们不是内容生产者,我们只是上海办公室装修设计公司内容的搬运工平台

数据仓库——原理+实战(一)

guduadmin23小时前

 一、数据仓库概述

1. 数据仓库诞生原因

(1)历史数据积存(存放在线上业务数据库中,当数据积压到一定程度会导致性能下降,所以需要将实用频率低的冷数据转移到数据仓库中)

(2)企业数据分析的需要(业务数据库中的数据实时更新,企业各个部门自己建立独立的数据抽取系统,导致数据不一致;数仓面向数据分析,业务数据库面向业务系统)

2. 数据仓库概述

(1)数据仓库是一个面向主题的、集成的、非易失的且随时间变化的数据集合。

(2)主要用于组织积累的历史数据,并使用分析方法(OLAP、数据分析)进行分析整理,进而

辅助決策,为管理者、企业系统提供数据支持,构建商业智能 

面向主题:为数据分析提供服务,根据主题将原始数据集合在一起   

集成:原始数据来源于不同数据源,要整合成最终数据,需要经过抽取、清洗、转换的过程

非易失:保存的数据是一系列历史快照,不允许被修改,只允许通过工进行查询、分析

时变性:数仓会定期接收、集成新的数据,从而反映出数据的最新变化

数据仓库——原理+实战(一),第1张

3. 数据仓库建设方案 

(1)传统数据仓库(扩展性有限,热点问题)

由关系型数据库组成MPP(大规模并行处理)集群;hash算法;分库分表

(2)大数据数据仓库

利用大数据天然的扩展性(分布式存储,包括分布式计算,并添加了SQL的支持),完成海量数据的存放,但是在数据量较少的时候后计算速度较慢。解决了传统数据仓库扩展性和热点问题。

4. MMP架构

数据仓库——原理+实战(一),第2张

 架构方式有三种:share everything; share disk; share nothing

>>MMP架构缺点

(1)由于这种非共享架构,存储位置不透明,通过Hash确定数据所在的物理节点,查询任务在所有节点均会执行;

(2)并行计算时(在整个协同运算的过程中),单节点瓶颈(单个节点运行缓慢的时候)会成为整个系统短板,容错性差;随着节点总数的增加,集群规模的增大,节点故障的数量也会增加,瓶颈将会越发明显,这也是MMP数据库扩展性较差的根本原因;

(3)MMP数据库致力于实现分布式事务(为了保证数据的一致性),但是在分布式事务中,实现这种事务之后,一定会影响它的扩展性。

5. 分布式架构

(1)分布式架构大数据中常见的技术架构,也称为Hadoop架构/批处理架构;

(2)各节点实现场地自治(可以单独运行局部应用,MMP不可单独运行局部应用,只能作为整体对外提供服务),数据在集群中全局透明;

(3)每台节点通过局域网或广域网相连,节点问的通信开销较大,在运算时致力减少数据(移动计算而非移动数据);

(4)优先考虑的是P(分区容错性,数据存储到集群会被拆分成多个分片,每个分片又会保存多个副本,解决了单点故障问题),然后是A(可用性),最后再考虑C(一致性)。

数据仓库——原理+实战(一),第3张

数据量低的时候用MMP数据库,数据量一但达到某个量级,推荐使用分布式架构,其吞吐量大的优势就会显示出来。 

6.  MPP +分布式架构

(1)数据存储采用分布式架构中的公共存储,提高分区容错性

(2)上层架构采用MPP,减少运算延迟;

(3)相较于其他大数据产品来说,延迟较低,运行速度较快。在实时的流数据处理中,经常被采用;相较于传统的MMP架构数据库,扩展性有了进一步提升。

总结:MMP数据库适用于中等规模的数据,延迟较低,SQL支持率高;分布式批处理这种架构更适合处理海量数据的批处理计算,其吞吐较高,运算速度快,扩展性强。

 二、架构

1. 架构图

数据仓库——原理+实战(一),第4张

2. ETL流程(extract+transform+load)

(1)数据抽取 (Extraction)

抽取的数据源可以分为结构化数据、非结构化数据、半结构化数据。结枸化数据一般采用JDBC、数据库日志方式(推荐方式),非半结构化数据会监听文件

(2)抽取方式

数据抽取方式有全量同步、增量同步两种方式:

        - 全量同步会将全部数据进行抽取,一般用于初始化数据装载

        - 增量同步方式会检测数据的变动,抽取发生变动的数据,一般用于数据

 (3)数据转换 (Transformation)

数据转换要经历数据清洗和转换两个阶段:

  • 数据清洗:主要是对出现的重复、二义性、不完整、违反业务或逻辑规则等问题的数据进行统一的处理
  • 数据转换:主要是对数据进行标准化处理,进行字段、数据类型、数据定义的转换

    结构化数据在转换过程中的逻辑较为简单,非|半结构化数据的转换会较为复杂。

    (4)数据加载(Loading)

    将最后处理完的数据导入到对应的目标

    3. 数据积存

    (1)操作数据层 (ODS)

            数据与原业务数据保持一致,可以增加字段用来进行数据管理(实际上属于原数据的扩充集)。存储的历史数据是只读的,提供业务系统查询使用。

    数据仓库——原理+实战(一),第5张

    4. 数据分析

    (1)数据明细层(DWD)

    数据仓库——原理+实战(一),第6张

     在ODS层下有多张表,将其汇总成一个表,得到标准数据,分析运算效率变高,接下来进行分析运算。

    (2)数据汇总层(DWS)

            数据汇总层的数据对数据明细层的数据,按照分析主题进行计算汇总,存放便于分析的宽表模型。脱离了三范式(存储模型并非3NF),而是注重数据聚合,复杂查询、处理性能更优的数仓模型,如维度模型。

            在大数据的数仓中,主要以大宽表为主;在传统数仓中会对汇总表建立一些模型,如维度模型。对DWS这一层的设计,是数据仓库的核心,因为数据仓库的面向主题,包括模型设计都是在DWS层中进行。目的是为了数据分析提供一个更优异的性能。

    数据仓库——原理+实战(一),第7张

    (3)数据应用层(ADS层)

            对DWS层数据进行分析完成之后得到的结果表就存在ADS层数据中,ADS层保存的数据要提供给外部系统进行使用。

    数据仓库——原理+实战(一),第8张

            由于数据仓库更注重分析和计算,与外部系统的查询和交互效率低,如果让外部系统直接对接数据仓库的话,大量的查询落进来,全部转换成批处理任务,这种频繁的查询会给数仓带来压力。所以使用ADS层来专们存储数据结果,为外部系统提供访问接口,提供更快的查询和交互速度。 

    三、建模方法

    1. 基本概念(OLTP和OLAP)

    数据仓库——原理+实战(一),第9张

            ROLAP依赖于模型设计;MOLAP和HOLPAP主要依赖于数仓产品的选型,更依赖于产品的底层设计。MOLAP主要存数据结果,一般不存明细数据(表数据);HOLAP底层是关系型的,所以可以存储明细数据、表的原数据,将预计算结果保存在上层,如果SQL在上层中查不到结果,也可以在底层中查询。

    2. ROLAP

    数据仓库——原理+实战(一),第10张

    最常用的是维度模型,适合互联网这种业务变动比较频繁的数据。其他三种适合比较成熟的数据仓库,数据的表结构变动不大。

    维度模型

    (1)维度模型中,表被分为维度表、事实表,维度是对事实的一种组织;

    (2)维度一般包含分类、时间、地域等

    数据仓库——原理+实战(一),第11张

    数据仓库——原理+实战(一),第12张

    直接对事实表进行聚合即可。在企业中这种情况比较少,可能会有多层的维度, 

    数据仓库——原理+实战(一),第13张

    当业务规模逐渐增长的情况下,出现的维度共用,形成了星座模型。 

    数据仓库——原理+实战(一),第14张

    宽表模型

    宽表模型是维度模型的行生,适合join性能不佳的数据仓库产品——大数据数据仓库,是维度模型的衍生,在大数据产品这块的妥协。宽表模型将维度元余到事实表中,形成宽表,以此减少join操作。

    数据仓库——原理+实战(一),第15张  

    3. MOLAP

    MOLAP系统建模方法

    • MOLAP将数据进行预结算,并将聚合结果存储到CUBE模型中;
    • CUBE模型以多维数组的形式,物化到存储系统中,加快后续的查询,以空间换时间,需要大量的存储空间;灵活性较差,只存储预计算结果,不存储原始数据;
    • 生成CUBE需要大量的时间、空间,维度预处理可能会导致数据膨胀

      数据仓库——原理+实战(一),第16张

      MOLAP是面向ADS层的,加快查询速度;ROLPAP是面向DWS层的。 

      4. 多维分析

       OLAP多维分析

      • OLAP主要操作是复杂查询,可以多表关联,使用COUNT、SUM、AVG等聚合函数
      • OLAP对复杂查询操作做了直观的定义,包括钻取、切片、切块、旋

        数据仓库——原理+实战(一),第17张

        数据仓库——原理+实战(一),第18张

        数据仓库——原理+实战(一),第19张

         四.  最佳实践

        1. 表的分类

        • 事实表
        • 维度表
        • 事务事实表
        • 周期快照事实表
        • 累积快照事实 累计快照事实的三种实现方式

          2. ETL技巧/策略

          (1)全量同步:

          •数据初始化装载一定使用全量同步的方式

          •因为业务、技术原因,使用全量同步的方式做周期数据更新,直接覆盖原有数据即可

          (2)增量同步

          针对结构化数据:对数据库日志进行抽取,Ogg或者CDC;或者JDBC方式,用SQL对时间字段进行筛选数据;

          针对非|半结构化数据:一般的抽取工具自带实时监控。

          • 传统数据整合方案中,大多采用merge方式 (updatetinsert)
          • 主流大数据平台不支持update操作,可采用全外连接+数据全量覆盖方式

            一如果担心数据更新出错,可以采用分区方式,每天保存最新的全量版本,保留较短

            数据仓库——原理+实战(一),第20张

            3. 任务调度

            数据仓库——原理+实战(一),第21张

            常见调度工具: Azkaban和Oozie 

            五、 项目实战

            >> 项目背景

            • 某电商企业,因数据积存、分析需要,筹划搭建数据仓库,提供数据分析访问接口
            • 项目一期需要完成数仓建设,并完成用户复购率的分析计算,支持业务查询需求

              >> 复购率计算

              • 复购率是指在一段附间问隔内,多次重复购买产品的用户,占全部人数的比率
              • 统计各个一级品类下,品牌月单次复购率,和多次复购率

                数据仓库——原理+实战(一),第22张

                >> 数据表 

                数据仓库——原理+实战(一),第23张数据仓库——原理+实战(一),第24张  数据仓库——原理+实战(一),第25张

                5.1 架构设计 数据仓库——原理+实战(一),第26张

                数据仓库——原理+实战(一),第27张

                1. 虚拟机环境搭建

                2. Xshell下载并与虚拟机连接

                3. 脚本准备

                4. 大数据集群的一键安装

网友评论

搜索
最新文章
热门文章
热门标签