-
数据仓库诞生原因
- 历史数据积存
- 企业数据分析需要
- 各个部门自己建立独立的数据抽取系统,导致数据不一致
-
概念:面向主题的、集成的、非易失的且随时间变化的数据集合
-
主要用于组织积累的历史数据,并使用分析方法 (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):保存结果数据,开放查询接口
- 数据抽取 Extraction
- 抽取的数据源可以分为结构化数据、非结构化数据、半结构化数据
- 结构化数据一般采用JDBC、数据库日志方式、非/半结构化数据会监听文件变动
- 数据抽取方式有全量同步、增量同步两种
- 全量同步会将全部数据进行抽取,一般用于初始化的数据装载
- 增量同步会检测数据的变动,抽取发生变动的数据,一般用于数据更新
- 数据转换 Transfermation
- 数据转换要经历数据清洗和转换两个阶段
- 数据清洗主要是对出现的重复、二义性、不完整、违反业务或逻辑规则等问题的数据进行统一的处理
- 数据转换主要是对数据进行标准化处理,进行字段、数据类型、数据定义的转换
- 数据转换要经历数据清洗和转换两个阶段
- 数据加载 Loading
- 将最后处理完的数据导入到对应的目标源里。
- 结构化ETL工具:Sqoop、 Kettle、Datastage、 Kafka 等
- 非结构化ETL工具: Flume、 Logstash 等
- 数据与原业务数据保持一致,可以增加字段用来进行数据管理
- 存储的历史数据是只读的,提供业务系统查询使用
- 业务系统对历史数据完成修改后,将update_type字段更新成UPDATE,追加回ODS中
- 在离线数仓中,业务数据定期通过ETL流程导入到ODS中,导入方式有全量、增量两种
- 全量导入:数据第一次导入时,选择此种方式
- 增量导入:数据非第一次导入,每次只需要导入新增、更改的数据,建议采用外连接&全覆盖方式
- 数据明细层 (DWD)
- 数据明细层对ODS层的数据进行清洗、标准化、维度退化 (时间、分类、地域)
- 数据仍然满足3NF模型,为分析运算做准备
- 数据汇总层 (DWS)
- 数据汇总层的数据对数据明细层的数据,按照分析主题进行计算汇总,存放便于分析的宽表
- 存储模型并非3NF,而是注重数据聚合,复杂查询、处理性能更优的数仓模型,如维度模型
- 数据应用层也被称为数据集市
- 存储数据分析结果,为不同的业务场景提供接口,减轻数据仓库的负担
- OLTP (在线事务处理)系统中,主要 *** 作是随机读写,为了保证数据一致性、减少冗余,常使用关系模型 (ER模型),在关系模型中,使用3NF来减少冗余
-
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)
-
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)