Hive-08之数据仓库之建模、分析

一、目标

  1. 掌握数据仓库基本概念
  2. 熟悉数据仓库的模型建立

二、知识要点

1. 数据仓库基本介绍

英文名称为Data Warehouse,可简写为DW或DWH。数据仓库的目的是构建面向分析的集成化数据环境,为企业提供决策支持(Decision Support)。它出于分析性报告和决策支持目的而创建。

数据仓库本身并不“生产”任何数据,同时自身也不需要“消费”任何的数据,数据来源于外部,并且开放给外部应用,这也是为什么叫“仓库”,而不叫“工厂”的原因。

2. 数据仓库的定义

数据仓库是面向主题的(Subject-Oriented )、集成的(Integrated)、稳定性的(Non-Volatile)和时变的(Time-Variant )数据集合,用以支持管理决策。

2.1、面向主题

数据仓库中的数据是按照一定的主题域进行组织。

主题是一个抽象的概念,是指用户使用数据仓库进行决策时所关心的重点方面,一个主题通常与多个操作型信息系统相关。

2.2、集成性

根据决策分析的要求,将分散于各处的源数据进行抽取、筛选、清理、综合等工作,最终集成到数据仓库中。

在这里插入图片描述

2.3、稳定性

数据的相对稳定性,数据仓库中的数据只进行新增,没有更新操作、删除操作处理。

反映历史变化,以查询分析为主。

2.4、时变性

数据仓库的数据一般都带有时间属性,随着时间的推移而发生变化,不断地生成主题的新快照

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

4. 数据仓库与数据库的区别

数据库与数据仓库的区别实际讲的是 OLTP 与 OLAP 的区别。

OLTP: On-Line Transaction Processing 叫联机事务处理, 也可以称面向交易的处理系统,它是针对具体业务在数据库联机的日常操作,通常对少数记录进行查询、修改。用户较为关心操作的响应时间、数据的安全性、完整性和并发支持的用户数等问题。传统的数据库系统作为数据管理的主要手段,主要用于操作型处理 .

OLAP:On-Line Analytical Processing 叫联机分析处理,一般针对某些主题的历史数据进行分析,支持管理决策。

简而言之,数据库是面向事务的设计,数据仓库是面向主题设计的

数据库一般存储在线交易数据,有很高的事务要求;数据仓库存储的一般是历史数据。

数据库设计是尽量避免冗余,一般采用符合范式的规则来设计,数据仓库在设计是有意引入冗余,采用反范式的方式来设计。

数据库是为捕获数据而设计,数据仓库是为分析数据而设计,它的两个基本的元素是维表和事实表。维是看问题的角度,比如时间,部门,维表放的就是这些东西的定义,事实表里放着要查询的数据,同时有维的ID。

功能数据仓库数据库
数据范围存储历史的、完整的、反应历史变化的当前状态数据
数据变化可添加、无删除、无变更的、反应历史变化支持频繁的增、删、改、查操作
应用场景面向分析、支持战略决策面向业务交易流程
设计理论违范式、适当冗余遵照范式(第一、二、三等范式)、避免冗余
处理量非频繁、大批量、高吞吐、有延迟频繁、小批次、高并发、低延迟

5. 构建数据仓库常用手段

• 传统数仓建设更多的基于成熟的商业数据集成平台,比如Teradata、Oracle、Informatica等,技术体系比较成熟完善,但相对比较封闭,对实施者技术面要求也相对专业且单一,一般更多应用于银行、保险、电信等“有钱”行业.

• 基于大数据的数仓建设一般是基于非商业、开源的技术,常见的是基于hadoop生态构建,涉及技术较广泛、复杂,同时相对于商业产品,稳定性、服务支撑较弱,需要自己维护更多的技术框架。在大数据领域,常用的数据仓库构建手段很多基于hive,sparkSQL,impala等各种技术框架.

6. 数据仓库分层

6.1 数据仓库分层描述
  • 数据仓库更多代表的是一种对数据的管理和使用的方式,它是一整套包括了etl、调度、建模在内的完整的理论体系。现在所谓的大数据更多的是一种数据量级的增大和工具的上的更新。 两者并无冲突,相反,而是一种更好的结合。数据仓库在构建过程中通常都需要进行分层处理。业务不同,分层的技术处理手段也不同。
  • 分层是数据仓库解决方案中,数据架构设计的一种数据逻辑结构 ,通过分层理念建立的数据仓库,它的可扩展性非常好,这样设计出来的模型架构,可以任意地增减、替换数据仓库中的各个组成部分。

在这里插入图片描述

从整体的逻辑划分来讲,数据仓库模型实际上就是这三层架构。接入层:底层的数据源或者是操作数据层,一般在公司的话,统一都是称为ODS层中间层:是做数据仓库的同志需要花费更多精力的一层,这一层包括的内容是最多的、最复杂的。应用层:对不同的应用提供对应的数据。该层主要是提供数据产品和数据分析使用的数据,比如我们经常说的报表数据
  • 针对于这三层架构,这里给出比较典型的一个做数据仓库在实施的时候,具体的层次划分。

在这里插入图片描述

  • ODS

    • Operation Data Store 原始数据层
  • DWD

    • data warehouse detail 数据明细层

    • 它主要是针对于接入层的数据进行数据的清洗和转换。还有就是一些维度的补充。

  • DWS

    • data warehouse summary 数据汇总层

    • 它是在DWD明细层之上,也有公司叫DW层

    • 它是按照一定的粒度进行了汇总聚合操作。它是单业务场景。

  • DWM

    • data warehouse market 数据集市层
    • 它是在DWS数据汇总层之上,集市层它是多业务场景的。
  • APP

    • Application 应用层
    • 这个是数据仓库的最后一层数据,为应用层数据,直接可以给业务人员使用
TMP临时表:在做一些中间层表计算的时候,大量使用tmp临时表。
DIM维度层:基于ODS层和DWD层抽象出一些公共的维度,典型的公共维度主要包括城市信息、渠道信息、个人基础属性信息。

ADS层(Application Data Store),实践中dws之后直接就是ADS层(Application Data Store)。

6.2 为什么要进行数据仓库分层
  • 分层的主要原因是在管理数据的时候,能对数据有一个更加清晰的掌控,主要有下面几个原因:
    • 空间换时间
      • 通过建设多层次的数据模型供用户使用,避免用户直接使用底层操作型数据,可以更高效的访问数据。
    • 把复杂问题简单化
      • 讲一个复杂的任务分解成多个步骤来完成,每一层只处理单一的步骤,比较简单和容易理解。而且便于维护数据的准确性,当数据出现问题之后,可以不用修复所有的数据,只需要从有问题的步骤开始修复。
    • 便于处理业务的变化
      • 随着业务的变化,只需要调整底层的数据,对应用层对业务的调整零感知。

7. 数据仓库建模

​ 目前业界较为流行的数据仓库的建模方法非常多,这里主要介绍范式建模法维度建模法实体建模法等几种方法,每种方法其实从本质上讲就是从不同的角度看我们业务中的问题,不管从技术层面还是业务层面,其实代表的是哲学上的一种世界观。

7.1 范式建模法(Third Normal Form 3NF)
范式建模法是基于整个关系型数据库的理论基础之上发展而来的,其实是我们在构建数据模型常用的一个方法,主要解决关系型数据库得数据存储,利用的一种技术层面上的方法。目前,我们在关系型数据库中的建模方法,大部分采用的是三范式建模法。从其表达的含义来看,一个符合第三范式的关系必须具有以下三个条件 :(1)每个属性值唯一,不具有多义性 ;
(2)每个非主属性必须完全依赖于整个主键,而非主键的一部分 ;
(3)每个非主属性不能依赖于其他关系中的属性,因为这样的话,这种属性应该归到其他关系中去。
7.2 维度建模法
维度建模(dimensional modeling)是专门用于分析型数据库、数据仓库、数据集市建模的方法。维度建模法简单描述就是按照事实表、维度表来构建数仓、集市。
维度建模从分析决策的需求出发构建模型,为分析需求服务,因此它重点关注用户如何更快速地完成需求分析,同时具有较好的大规模复杂查询的相应性能。
  • 维度表
维度表示你要对数据进行分析时所用的一个量,比如你要分析产品销售情况, 
你可以选择按类别来进行分析,或按区域来分析。通常来说维度表信息比较固定,且数据量小
  • 事实表
表示对分析主题的度量。
事实表包含了与各维度表相关联的外键,并通过join方式与维度表关联。事实表的度量通常是数值类型,且记录数会不断增加,表规模迅速增长。消费事实表:Prod_id(引用商品维度表), TimeKey(引用时间维度表), Place_id(引用地点维度表), Unit(销售量)。
总的说来,在数据仓库中不需要严格遵守规范化设计原则。因为数据仓库的主导功能就是面向分析,以查询为主,不涉及数据更新操作。事实表的设计是以能够正确记录历史信息为准则,维度表的设计是以能够以合适的角度来聚合主题内容为准则
7.2.1 维度建模三种模式

基于事实表和维表就可以构建出多种多维模型,包括星形模型、雪花模型和星座模型。

维度建模法最被人广泛知晓的名字就是星型模式。

  • 星型模式

    星形模式(Star Schema)是最常用的维度建模方式。星型模式是以事实表为
    中心,所有的维度表直接连接在事实表上,像星星一样。
    星形模式的维度建模由一个事实表和一组维表成,且具有以下特点:
    a. 维表只和事实表关联,维表之间没有关联;
    b. 每个维表主键为单列,且该主键放置在事实表中,作为两边连接的外键;
    c. 以事实表为核心,维表围绕核心呈星形分布;

    在这里插入图片描述

  • 雪花模式

雪花模式是对星形模式的扩展。雪花模式的维度表可以拥有其他维度表的,虽然这种模型相比星型更规范一些,但是由于这种模型不太容易理解,维护成本比较高,而且性能方面需要关联多层维表,性能也比星型模型要低。所以一般不是很常用。

在这里插入图片描述

  • 星座模式
星座模式是星型模式延伸而来,星型模式是基于一张事实表的,而星座模式是基于多张事实表的,而且共享维度信息。前面介绍的两种维度建模方法都是多维表对应单事实表,但在很多时候维度空间内的事实表不止一个,而一个维表也可能被多个事实表用到。在业务发展后期,绝大部分维度建模都采用的是星座模式。

在这里插入图片描述

绝大部分维度建模都采用的是星座模式。

7.3 实体建模法
实体建模法并不是数据仓库建模中常见的一个方法,它来源于哲学的一个流派。从哲学的意义上说,客观世界应该是可以细分的,客观世界应该可以分成由一个个实体,以及实体与实体之间的关系组成。那么我们在数据仓库的建模过程中完全可以引入这个抽象的方法,将整个业务也可以划分成一个个的实体,而每个实体之间的关系,以及针对这些关系的说明就是我们数据建模需要做的工作。

参考文档:http://www.uml.org.cn/sjjmck/201810163.asp

8、数据仓库架构

在这里插入图片描述

  • 数据采集
数据采集层的任务就是把数据从各种数据源中采集和存储到数据存储上,期间有可能会做一些ETL操作。数据源种类可以有多种:
日志:所占份额最大,存储在备份服务器上
业务数据库:如Mysql、Oracle
来自HTTP/FTP的数据:合作伙伴提供的接口
其他数据源:如Excel等需要手工录入的数据
  • 数据存储与分析
HDFS是大数据环境下数据仓库/数据平台最完美的数据存储解决方案。离线数据分析与计算,也就是对实时性要求不高的部分,Hive是不错的选择。
使用Hadoop框架自然而然也提供了MapReduce接口,如果真的很乐意开发Java,或者对SQL不熟,那么也可以使用MapReduce来做分析与计算。
Spark性能比MapReduce好很多,同时使用SparkSQL操作Hive。
  • 数据共享
  前面使用Hive、MR、Spark、SparkSQL分析和计算的结果,还是在HDFS上,但大多业务和应用不可能直接从HDFS上获取数据,那么就需要一个数据共享的地方,使得各业务和产品能方便的获取数据。这里的数据共享,其实指的是前面数据分析与计算后的结果存放的地方,其实就是关系型数据库和NOSQL数据库。
  • 数据应用
报表:报表所使用的数据,一般也是已经统计汇总好的,存放于数据共享层。
接口:接口的数据都是直接查询数据共享层即可得到。
即席查询:即席查询通常是现有的报表和数据共享层的数据并不能满足需求,需要从数据存储层直接查询。一般都是通过直接操作SQL得到。

三、拓展

在这里插入图片描述

  • 增加以下内容
    • 数据采集
      • 采用Flume收集日志,采用Sqoop将RDBMS以及NoSQL中的数据同步到HDFS上
    • 消息系统
      • 可以加入Kafka分布式消息系统保证数据丢失
    • 机器学习
      • 使用了SparkMLlib提供的机器学习算法
    • 数据可视化
      • 提供可视化前端页面,方便运营等非开发人员直接查询
    • 任务调度和监控
      • 任务的统一调度和监控

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/26985.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【前端基础】3、HTML的常用元素(h、p、img、a、iframe、div、span)、不常用元素(strong、i、code、br)

HTML结构 一个HTML包含以下部分&#xff1a; 文档类型声明html元素 head元素body元素 例&#xff08;CSDN&#xff09;&#xff1a; 一、文档类型声明 HTML最一方的文档称为&#xff1a;文档类型声明&#xff0c;用于声明文档类型。即&#xff1a;<!DOCTYPE html>…

车载以太网-基于linux的ICMP协议

对于车载以太网-ICMP的技术要求: /** ICMP报文格式解析* -----------------* ICMP协议用于网络诊断和错误报告,常见应用包括Ping测试。* ICMP报文结构包括:IP头部、ICMP头部和ICMP数据部分。* 下面详细介绍每个部分的结构、字段的作用以及如何解析它们。* * ICMP头部结构:*…

Let‘s Encrypt 获取免费SSL证书

1、Lets Encrypt Lets Encrypt 官网点击这里 &#xff1a; 她推荐使用 Certbot 客户端请求证书&#xff0c;直接访问 Certbot 站点开干 &#xff1a; Certbot 2、Certbot 站点首页上直接选择操作系统和服务器软件&#xff0c;页面直接给出操作步骤 非常简单&#xff0c;…

tin这个单词怎么记

英语单词 tin&#xff0c;一般用作名词&#xff0c;意为“罐头&#xff1b;锡”&#xff1a; tin n.锡&#xff1b;罐头&#xff1b;罐&#xff1b;罐头盒&#xff1b;(盛涂料、胶水等的)马口铁罐&#xff0c;白铁桶&#xff1b;罐装物&#xff1b;金属食品盒&#xff1b;烘焙…

(十 三)趣学设计模式 之 模版方法模式!

目录 一、 啥是模板方法模式&#xff1f;二、 为什么要用模板方法模式&#xff1f;三、 模板方法模式的实现方式四、 模板方法模式的优缺点五、 模板方法模式的应用场景六、 总结 &#x1f31f;我的其他文章也讲解的比较有趣&#x1f601;&#xff0c;如果喜欢博主的讲解方式&a…

GitLab Pages 托管静态网站

文章目录 新建项目配置博客添加 .gitlab-ci.yml其他配置 曾经用 Github Pages 来托管博客内容&#xff0c;但是有一些不足&#xff1a; 在不科学上网的情况下&#xff0c;是没法访问的&#xff0c;或者访问速度非常慢代码仓库必须是公开的&#xff0c;如果设置为私有&#xff0…

redis --- 相关基础知识整理

目录 一、基本1、数据结构2、有序集合的编码1. 压缩列表&#xff08;Ziplist&#xff09;2. 跳跃列表&#xff08;SkipList&#xff09;3. 动态转换机制 二、应用场景三、持久化1、 RDB 持久化2、 AOF 持久化3、 混合持久化&#xff08;RDB AOF&#xff09;4、 RDB和AOF的对比…

想学大模型,但分不清longchain,huggingface,ollama各种工具之间区别?

总结就一句话&#xff0c;按需选择。 1. Hugging Face&#xff1a;AI 模型的“GitHub” Hugging Face 是 开源模型的集散地&#xff0c;相当于大模型界的 GitHub。这里有数万个预训练模型&#xff08;比如 Llama、Mistral&#xff09;&#xff0c;覆盖文本生成、翻译、代码补全…

开源PDF解析工具olmOCR

olmOCR 是由 Allen Institute for Artificial Intelligence (AI2) 的 AllenNLP 团队开发的一款开源工具&#xff0c;旨在将PDF文件和其他文档高效地转换为纯文本&#xff0c;同时保留自然的阅读顺序。它支持表格、公式、手写内容等。 olmOCR 经过学术论文、技术文档和其他文档…

基于Spring Boot和Vue的餐饮管理系统设计与实现

大家好&#xff0c;今天要和大家聊的是一款基于Spring Boot和Vue的餐饮管理系统的设计与实现。项目源码以及部署相关事宜请联系我&#xff0c;文末附上联系方式。 项目简介 基于Spring Boot和Vue的餐饮管理系统设计与实现的主要使用者分为管理员、员工和用户。没有授权的用户无…

HTTP/2 服务器端推送:FastAPI实现与前端集成指南

HTTP/2 服务器端推送&#xff1a;FastAPI实现与前端集成指南 注意&#xff1a;本文末尾附有完整示例代码&#xff0c;文中仅展示核心关键代码。完整代码可在GitHub仓库获取。 本文将会讲解HTTP2协议和相关配置实践。但是不要混淆&#xff0c;SSE的实现完全基于HTTP/1.1的持久连…

二、QT和驱动模块实现智能家居-----4、编译Qt程序并运行

一、编译QT程序 第1步 修改界面&#xff1a; 双击左侧的 Forms 里的 mainwindow.ui 文件&#xff0c;打开 Design 视图。 然后如下图所示&#xff0c;从左侧Display Widgets 栏目下&#xff0c;拖动 Label 和 PushPutton到中间的区域。 第2步 添加测试代码&#xff1a; 第3步…

HTTP四次挥手是什么?

四次挥手&#xff0c;这是TCP协议用来关闭连接的过程。四次挥手是确保两个主机之间能够安全、可靠地关闭连接的重要机制。我会用简单易懂的方式来讲解&#xff0c;帮助你理解它的原理和过程。 1. 什么是四次挥手&#xff1f; 定义 四次挥手是TCP协议用来关闭连接的过程。它通…

java+jvm笔记

JUC synchornized原理&#xff08;java锁机制&#xff09;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 升级顺序&#xff1a; 无锁偏向锁&#xff0c;只有一个线程来访问轻量级锁&#xff0c;有两个线程交替访问重锁&#xff0c;两个及以上线…

idea + Docker + 阿里镜像服务打包部署

一、下载docker desktop软件 官网下载docker desktop&#xff0c;需要结合wsl使用 启动成功的画面(如果不是这个画面例如一直处理start或者是stop需要重新启动&#xff0c;不行就重启电脑) 打包成功的镜像在这里&#xff0c;如果频繁打包会导致磁盘空间被占满&#xff0c;需…

探索Spring Cloud Config:构建高可用的配置中心

目录 认识Spring Cloud ConfigConfig Server读取配置文件步骤1&#xff1a; &#xff08;1&#xff09;创建config-server项目&#xff08;2&#xff09;在config-server中开启Config Server功能&#xff08;3&#xff09;在config-server配置文件进行相关配置&#xff08;4&a…

CSDN博客导出设置介绍

在CSDN编辑博客时&#xff0c;如果想导出保存到本地&#xff0c;可以选择导出为Markdown或者HTML格式。其中导出为HTML时有这几种选项&#xff1a;jekyll site&#xff0c;plain html&#xff0c;plain text&#xff0c;styled html&#xff0c;styled html with toc。分别是什…

代理对象中使用this

一、问题引出 业务逻辑层代码 Service public class DemoServiceImpl extends ServiceImpl<DemoMapper, Demo> implements DemoService, ApplicationContextAware {// 用于从Spring容器中获取指定Bean的对象private ApplicationContext applicationContext;// 通过Appl…

视觉图像坐标转换

1. 透镜成像 相机的镜头系统将三维场景中的光线聚焦到一个平面&#xff08;即传感器&#xff09;。这个过程可以用小孔成像模型来近似描述&#xff0c;尽管实际相机使用复杂的透镜系统来减少畸变和提高成像质量。 小孔成像模型&#xff1a; 假设有一个理想的小孔&#xff0c;…

Hadoop之01:HDFS分布式文件系统

HDFS分布式文件系统 1.目标 理解分布式思想学会使用HDFS的常用命令掌握如何使用java api操作HDFS能独立描述HDFS三大组件namenode、secondarynamenode、datanode的作用理解并独立描述HDFS读写流程HDFS如何解决大量小文件存储问题 2. HDFS 2.1 HDFS是什么 HDFS是Hadoop中的一…