大数据数仓基础知识学习笔记
Posted 卖山楂啦prss
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据数仓基础知识学习笔记相关的知识,希望对你有一定的参考价值。
数据仓库
数据仓库(Data Warehouse,DW)
数据仓库为各个部门建立了一个统一的数据视图,解决每个部门从业务数据库抽取数据而导致的分析结果不一致问题。
数仓面向于数据分析,业务数据库面向于业务系统
数据仓库是一个面向主题的、集成的、非易失的且随时间变化的数据集合
主要用于历史数据的积存,并使用分析方法(OLAP、数据分析)进行分析整理,进而辅助决策,为管理者、企业系统提供数据支持,构建商业智能
经典的三范式,维表和事实表;
星型模型,雪花模型,星座模型;
范式建模和维度建模;
数仓分层,ods/dwd/dws/dim, ads层,dm层;
数据湖,与数据仓库相比更加灵活和节约成本
数仓的主要目的就是:为决策系统提供数据支持
决策支持系统(Decision support System,即DDS),是用于支持业务或组织决策活动的信息系统,服务于组织管理、运营和规划管理层(通常是中层或高级管理层),帮助人们对可能快速变化并且不容易预测结果的问题做出决策。数据仓库就是为决策系统提供数据支持的。
数据仓库特点
1、面向主题:
(1)为数据分析提供服务,数据分析一般具有很明确的主题任务,根据主题将原始数据集合在一起。
例如,分析用户行为特征或分析用户购买商品习惯,由分表组合成宽表用于分析
(2)主题是指用户使用数据仓库进行决策时所关心的重点领域,与业务相关的数据的类别,每一个主题基本对应一个宏观的分析领域。
(3)从数据组织的角度看,主题是一些数据集合,这些数据集合对分析对象做了比较完整的、一致的描述,这种描述不仅涉及数据自身,而且涉及数据之间的关系。
例如,一个公司要分析销售数据,就可以建立一个专注于销售的数据仓库
2、集成:原始数据来源于不同数据源,要整合成最终数据,需要经过抽取、清洗、转换的过程(对数据进行统一的标准化、规范化),如解决诸如命名冲突、计量单位不一致等问题。
原始数据一般在加载到数仓之前必须进行清洗、整理、计算,才适合作分析处理,并且也会抛弃一些分析梳理不需要的数据项,必要时还要增加一些可能涉及的外部数据。
引用图片:《数据仓库与数据挖掘实践》
例如针对性别的编码上,有四个系统,每个 系统表示的方式有可能不同
又比如,计算口径上,每个系统也可能不相同
当完成了这些数据整合工作后,该数据仓库就可称为是集成的。
3、稳定性(非易失):
保存的数据是一系列历史快照,不允许被修改,只允许通过工具进行查询、分析。
引用:《数据仓库与数据挖掘实践》
例如:每天从业务数据库中把数据同步到数仓中,这些同步数据将于业务数据库保持一致,所以同步过来的数据时不能修改的,只能进行查询分析
4、时变性:
- 数仓会定期接收、集成新的数据,从而反映出数据的最新变化
- 数仓的数据不是一成不变的,虽然数仓重点在于存储历史数据,但也会随着时间推移定期从应用数据库中接收新数据进行存储(5-10年),删除超过最大年限数据。
补充:
业务:现实中的一些需求
引用:《数据仓库与数据挖掘实践》
数据仓库的分类
离线数仓
实时数仓
数据仓库的好处
- 将多个数据源集成到单一数据存储,因此可以使用单一数据查询引擎展示数据。
- 缓解在事务处理数据库上因执行大查询而产生的资源竞争问题。
- 维护历史数据。
- 通过对多个源系统的数据整合,使得在整个企业的角度存在统一的中心视图。
- 通过提供一致的编码和描述,减少或修正坏数据问题,提高数据质量。
- 一致性地表示组织信息。
- 提供所有数据的单一通用数据模型,而不用关心数据源。
- 重构数据,使数据对业务用户更有意义。
- 向复杂分析查询交付优秀的查询性能,同时不影响操作型系统。
- 开发决策型查询更简单
数据仓库的架构
参考不同书籍中的数据仓库架构
引用图片:《数据仓库与数据挖掘实践》
整个架构核心在于——数据仓库,提供大数据支持与高速检索技术
在不同数据源中,通过ETL(抽取、转换、加载)把杂乱的原始数据归纳整理加载到数据仓库中, 这个过程实际上包含了很多步骤,比如数据的计算合并拆分、统一数据定义方式、计算统计和衍生数据等等
这里注意:E抽取时既满足决策需要、也不影响业务系统的性能,对于不同场景,在抽取数据时需要制定好不同的抽取方式、时机以及周期等。同样的,对于转换,也是需要制定相应的策略和规则。
ETL(抽取、转换、加载)完成数据的接入
ODS保存原始数据,完成数据的积存功能
DWS DWD 为数据分析提供服务
DWD (各种各样的零散表,满足三范式,联想mbh)==》 DWS(汇总为宽表,不满足三范式,主要用于分析、建模 )
补充:
学习:https://www.bilibili.com/video/BV1Bk4y197KZ?p=12&spm_id_from=pageDriver
补充
元数据
位于数据仓库上层,主要存储数据的结构、位置以及建立方法等数据(如表的结构、数据类型等等)
数据仓库DW(企业级)
↓
数据集市DM(部门级数据仓库):
(1)数据仓库中存放了企业的整体信息,而数据集市只存放了某个主题需要的信息,其目的是减少数据处理量,使信息的利用更加快捷和灵活。
(2)若干部门的数据集市组成一个数据仓库,数据仓库数据粒度更细。
(3)对于数据集市,可细分为从属型数据集市(访问频繁、数据结构一致、提高查询速度)、独立型数据集市
操作型系统(OLTP)和分析系统(OLAP)
OLTP和OLAP的区别
联机事务处理OLTP(on-ine transaction processing)主要是执行基本日常的事务处理,比如数据库记录的增删查改。比如在银行的一笔交易记录,就是一个典型的事务。
OLTP的特点一般有:1、实时性要求高;2、数据量不是很大;3、交易一般是确定的,对确定性的数据进行存取;4、高并发
OLTP即联机事务处理,就是经常说的关系数据库,增删查改就是我们经常应用的东西,这是数据库的基础。
联机分析处理OLAP(On-Line Analytical Processing)是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持
OLAP的特点一股有:1、实时性要求不高;2、数据量不;3、OLAP系统的重点是通过数据提供决策支持
OLAP即联机分析处理,是数据仓库的核心部心,所谓数据仓库是对于大量已经由OLTP形成的数据的一种分析型的数据库,用于处理商业智能、决策支持等
补充:
数据仓库是联机分析处理(OLAP)
与之对应的是,操作型数据库,是在线=
(2)引用图片:《Hadoop构建数据仓库实践》
RDS ( RAW DATA STORES )是原始数据存储的意思。
TDS ( TRANSFORMED DATA STORES )意为转换后的数据存储。这是真正的数据仓库中的数据。
大量的用户会在经过转换的数据集上处理他们的日常查询。如果前面的工作做得好,这些数据将被以保证最重要的和最频繁的查询能够快速执行的方式构建。
操作型系统的数据由各种形式的业务数据组成,这其中可能有关系数据库、TXT 或 CSV 文件、 html 或 XML 文档,还可能存在外部系统的数据,比如网络爬虫抓取来的互联网数据等,数据可能是结构化、半结构化、非结构化的。这些数据经过抽取、转换和装载( ETL )过程进入数据仓库系统。
数据仓库数据源类型有:结构化数据、半结构化数据、非结构化数据
补充知识:
增量数据、存量数据、全量数据
增量数据是数据仓库中新增加的数据
存量数据是数据仓库中已经存在的数据或者可以被叫做历史数据
全量数据是数据仓库中全部数据
全量数据 = 存量 + 增量。
操作型数据库与数据仓库
参考:《数据仓库与数据挖掘实践》
操作型数据库一般不维护历史数据,其数据很多,但对于决策是远远不够的。数据仓库系统用于决策支持需要历史数据,将不同来源的数据统一(如聚集和汇总),产生高质量、一致和集成的数据。
通常数据仓库的数据来自各个业务应用系统。业务系统中的数据形式多种多样,可能是Oracle 、 mysql 、 SQL Server 等关系数据库里的结构化数据,可能是文本、 CSV 等平面文件或 Word 、 Excel 文档中的非结构化数据,还可能是 HTML 、 XML 等自描述的半结构化数据。这些业务数据经过一系列的数据抽取、转换、清洗,最终以一种统一的格式装载进数据仓库。数据仓库里的数据作为分析用的数据源,提供给后面的即席查询、分析系统、数据集市、报表系统、数据挖掘系统等。
在一个大组织中,往往都有两种类型的系统,操作型和分析型,而这两种系统大都以数据库作为数据管理、组织和操作的工具。
-
操作型系统完成组织的核心业务,例如下订单、更新库存、记录支付信息等。这些系统是事务型的,核心目标是尽可能快地处理事务,同时维护数据的一致性和完整性。
-
分析型系统的主要作用是通过数据分析评估组织的业务经营状况,并进一步辅助决策。
分析型系统的数据源一般来自数据仓库,而数据仓库的数据来自于操作型系统。
数据仓库的技术实现
传统数据仓库
由关系型数据库组成MPP(大规模并行处理)集群
数据存储在RDBMS(关系数据库管理系统)中的,SQL语句运行在DB Server中的。适用场景:数据量不大。
流行的RDBMS(关系数据库管理系统):MySQL(MariaDB),Oracle,Sql Server,DB2等等。(历史的数合)
大数据数据仓库
利用大数据天然的扩展性,完成海量数据的存放
将SQL转换为大数据计算引擎任务,完成数据分析
适用HQL语句分析的是HDFS上沟量的数据,HQL语句运行在Hadoopt群,Sparkt群中的。适用场景:数据量庞大,对性能要求高的场合。(时下的数合)
Hive On MR(Hive底层的计算模型默认是MapReduce)
Hive On Spark(Hive底层的计算模型默认是Spark)
分布式文件方式存储,在上层数据处理的时候,采用元数据,把同步出来的文件还原为表结构,解决了传统数仓中的扩展性以及热点性问题
大数据仓库 缺少事务支持,但是事务对于大数据数仓并没有那么的重要,因为数据仓库面向的是分析
大数据数仓在数据量很少的时候,效率反而很低
MPP架构 & 分布式架构(Hadoop架构)
MPP架构
前面提到,MPP架构(大规模并行处理系统)是传统数据仓库一种常见的架构,
-
传统数仓中常见的技术架构,将单机数据库节点组成集群,提升整体处理性能
-
节点间为非共享架构(Share Nothing),每个节点都有独立的磁盘存储系统和内存系统
-
每台数据节点通过专用网络或者商业通用网络互相连接,彼此协同计算,作为整体提供服务
-
设计上优先考虑C(一致性),其次考虑A(可用性),尽量做好P(分区容错性)
MPP每个节点都是独立运行、独立计算的,不需要去关心整个集群的一个状态,也不用关心其他存储节点存储的一些数据信息,但是每个节点必须依托于集群,脱离集群后将不能运算
MPP架构图:
架构优点
-
运算方式精细,延迟低、吞吐低
-
适合中等规模的结构化数据处理
架构缺点
-
存储位置不透明,通过Hash确定数据所在的物理节点,查询任务在所有节点均会执行
-
并行计算时,单节点瓶颈会成为整个系统短板,容错性差
-
分布式事务的实现会导致扩展性降低
分布式架构(Hadoop架构)
大数据中常见的技术架构,也称为Hadoop架构/批处理架构
优先考虑的是P(分区容错性),然后是A(可用性),最后再考虑C(一致性)
把数据当做文件来拆分处理,导致数据的吞吐量非常大,但一旦数据超过某个量级,吞吐量达的优势将发挥出来
因为使用文件形式存储数据,因此,可以存储结构化数据,半结构化以及非结构化数据
学习参考
《Hadoop构建数据仓库实践》
《数据仓库与数据挖掘实践》
https://www.bilibili.com/video/BV1Bk4y197KZ?p=12&spm_id_from=pageDriver
以上是关于大数据数仓基础知识学习笔记的主要内容,如果未能解决你的问题,请参考以下文章
Hadoop(HDFS+MapReduce+Hive+数仓基础概念)学习笔记(自用)