数据仓库学习笔记

数据仓库学习笔记,第1张

数据仓库学习笔记 数据仓库 概念
  • 数据仓库诞生原因

    • 历史数据积存
    • 企业数据分析需要
      • 各个部门自己建立独立的数据抽取系统,导致数据不一致
  • 概念:面向主题的、集成的、非易失的且随时间变化的数据集合

  • 主要用于组织积累的历史数据,并使用分析方法 (OLAP、数据分析)进行分析整理,进而辅助决策,为管理者、企业系统提供数据支持,构建商业智能

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

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

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

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

  • 数据库 vs 数据仓库

    • 数据库面向事务设计,属于OLTP (在线事务处理)系统,主要 *** 作是随机读写;在设计时尽量避免冗余,按照范式规范涉及
    • 数据仓库是面向主题设计的,属于OLAP (在线分析处理)系统,主要 *** 作是批量读写;关注数据整合,以及分析、处理性能;会有意引入冗余,采用反范式方式设计
  • 数据仓库建设方案

    • 传统数据仓库
      • 由关系型数据库组成MPP(大规模并行)集群。
      • 将单机数据库节点组成集群,提升整体处理性能
      • 节点间为非共享架构(Share Nothing),每个节点都有独立的磁盘存储系统和内存系统,不共享数据
      • 每台数据节点通过专用网络或者商业通用网络互相连接,彼此协同运算,作为整体提供服务
      • 传统数据仓库包括:Oracle RAC、DB2、Teradata、Greenplum等
    • 大数据数据仓库
      • 利用大数据天然的扩展性,完成海量数据的存放
      • 将SQL转换为大数据计算引擎,完成数据分析
      • 分布式架构(Hadoop架构/批处理架构)是大数据中常见的技术架构
      • 各节点(既包含存储资源也包含计算资源)实现场地自治 (可以单独运行局部应用),数据在集群中全局透明共享
      • 各台节点通过局域网或者广域网相连,节点间的通信开销大,在运算时致力减少数据的移动(移动计算而非移动数据)。
      • 大数据数据仓库:Hive (Hadoop 分布式架构,适用场景:离线批处理)、 Spark SQL (属于Spark生态圈,开发起来更加灵活)、 Hbase (NoSql数据库,适合存储非结构化、半结构化数据等)、 Impala (数据查询引擎)等
架构
  • ETL (抽取Extraction, 转换Transfer, 加载Load):数据同步模块,将数据从数据源(业务数据库)进行抽取,转换(清洗、标准化等)之后加载到目的地
  • *** 作数据源层 (ODS): 与原始数据保持一致,目的是存储原始数据,保证数据一致
  • 公共维度模型层 (CDM):为数据分析提供服务
    • 数据汇总层 (DWS): 根据主题进行汇总
    • 数据明细层 (DWD): 接受ODS层的数据,对数据进行清洗
  • 数据应用层 (ADS):保存结果数据,开放查询接口
ETL流程
  • 数据抽取 Extraction
    • 抽取的数据源可以分为结构化数据、非结构化数据、半结构化数据
    • 结构化数据一般采用JDBC、数据库日志方式、非/半结构化数据会监听文件变动
    • 数据抽取方式有全量同步、增量同步两种
    • 全量同步会将全部数据进行抽取,一般用于初始化的数据装载
    • 增量同步会检测数据的变动,抽取发生变动的数据,一般用于数据更新
  • 数据转换 Transfermation
    • 数据转换要经历数据清洗和转换两个阶段
      • 数据清洗主要是对出现的重复、二义性、不完整、违反业务或逻辑规则等问题的数据进行统一的处理
      • 数据转换主要是对数据进行标准化处理,进行字段、数据类型、数据定义的转换
  • 数据加载 Loading
    • 将最后处理完的数据导入到对应的目标源里。
  • 结构化ETL工具:Sqoop、 Kettle、Datastage、 Kafka 等
  • 非结构化ETL工具: Flume、 Logstash 等
*** 作数据源层 (ODS)
  • 数据与原业务数据保持一致,可以增加字段用来进行数据管理
  • 存储的历史数据是只读的,提供业务系统查询使用
  • 业务系统对历史数据完成修改后,将update_type字段更新成UPDATE,追加回ODS中
  • 在离线数仓中,业务数据定期通过ETL流程导入到ODS中,导入方式有全量、增量两种
    • 全量导入:数据第一次导入时,选择此种方式
    • 增量导入:数据非第一次导入,每次只需要导入新增、更改的数据,建议采用外连接&全覆盖方式
公共维度模型层 (CDM)
  1. 数据明细层 (DWD)
  • 数据明细层对ODS层的数据进行清洗、标准化、维度退化 (时间、分类、地域)
  • 数据仍然满足3NF模型,为分析运算做准备
  1. 数据汇总层 (DWS)
  • 数据汇总层的数据对数据明细层的数据,按照分析主题进行计算汇总,存放便于分析的宽表
  • 存储模型并非3NF,而是注重数据聚合,复杂查询、处理性能更优的数仓模型,如维度模型
数据应用层 (ADS)
  • 数据应用层也被称为数据集市
  • 存储数据分析结果,为不同的业务场景提供接口,减轻数据仓库的负担
建模方法 OLTP在线事务处理
  • OLTP (在线事务处理)系统中,主要 *** 作是随机读写,为了保证数据一致性、减少冗余,常使用关系模型 (ER模型),在关系模型中,使用3NF来减少冗余
OLAP在线分析处理
  • OLAP系统,主要 *** 作是复杂分析查询;关注数据整合,以及分析、处理性能

  • OLAP根据数据存储的方式不同,又分为ROLAP/ MOLAP / HOLAP

    • ROLAP (Relation OLAP, 关系型 OLAP):使用关系模型构建,存储系统一般为RDBMS
    • MOLAP (Multidimwnsional OLAP, 多维型 OLAP):预先聚合计算 (GROUP BY),使用多维数组的形式保存数据结果,加快查询分析时间
    • HOLAP:(Hybrid OLAP, 混合架构的OLAP):ROLAP和MOLAP两者的集成;如底层是关系型的,高层是多维矩阵型的;查询效率高于ROLAP,低于MOLAP
  • ROLAP系统建模方法

    • 典型的数据仓库建模方法有ER模型、维度模型 (适合互联网行业)、Data Value、 Anchor
    • 维度模型
      • 维度模型中,表被分为维度表、事实表,维度是对事实的一种组织
      • 维度一般包含分类、时间、地域等
      • 维度模型分为星型模型 (维度只有一层,分析性能最优)、雪花模型 (具有多层维度,比较接近三范式设计,较为灵活)、星座模型 (基于多个事实表,事实表之间会共享一些维度表)
      • 维度模型建立后,方便对数据进行多维分析
    • 宽表模型
      • 宽表模型是维度模型的衍生,适合join性能不佳的数据仓库产品
      • 宽表模型将维度冗余到事实表中,形成宽表,以此减少join *** 作
  • MOLAP系统建模方法

    • MOLAP将数据进行预结算,并将聚合结果存储到CUBE模型中
    • CUBE模型以多维数组的形式,物化到存储系统中,加快后续的查询
    • 生成CUBE需要大量的时间、空间,维度预处理可能会导致数据膨胀
    • 常见的MOLAP产品:Kylin、 Druid
  • 多维分析

    • 主要 *** 作是复杂查询,可以多表关联,使用COUNT、SUM、AVG等聚合函数

    • OLAP对复杂查询 *** 作做了直观的定义,包括钻取、切片、切块、旋转

    • 钻取包括上卷 (Roll-up)、下钻 (Drill-down)

      • 上卷 (Roll-up):也称为向上钻取,指从低层次到高层次的切换

      • 下钻 (Drill-down):指从高层次到低层次的切换

    • 切片 (Slice):选择某个维度进行分割称为切片

    • 切块(Dice):按照多维进行的切片称为切块

    • 旋转(Pivot):对维度方向的互换,类似于交换坐标轴上卷 (Roll - up)

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5638647.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存