数据仓库原理 - 概念、架构、建模方法

news2024/11/16 12:26:32

目录

    • 1、介绍
      • 1.1 数据仓库诞生原因
      • 1.2 数据仓库概述
      • 1.3 数仓的技术实现
      • 1.4 MPP&分布式架构
        • MPP架构
        • 分布式架构
        • MPP+分布式架构
      • 1.5 常见产品
    • 2、架构
      • 2.1 架构图
        • ETL
        • ODS
        • CDM
        • ADS
      • 2.2 ETL流程
        • 数据抽取
        • 数据转换
        • 数据加载
        • ETL工具
      • 2.3 数据积存
        • 操作数据层ODS
      • 2.4 数据分析
        • 数据明细层DWD
        • 数据汇总层DWS
        • 数据应用层ADS
    • 3、建模方法
      • 3.1 基本概念
      • 3.2 ROLAP
      • 3.3 MOLAP
      • 3.4 多维分析

1、介绍

1.1 数据仓库诞生原因

  1. 历史数据积存
    历史数据使用频率低,堆积在业务库中,导致性能低,所以会将其存放在数据仓库
  2. 企业数据分析需要
    各个部门自己建立独立的数据抽取系统,导致数据不一致已经资源浪费
    为解决问题,引入数据仓库

1.2 数据仓库概述

定义:数据仓库是一个面向主题的、集成的、非易失的且随时间变化的数据集合
作用:主要用于组织积累的历史数据,并使用分析方法(OLAP、数据分析)进行分析整理,进而辅助决策,为管理者、企业系统提供数据支持,构建商业智能

数据仓库特点:

  • 面向主题。根据主题将原始数据集合在一起
  • 集成:数据来源于不同的数据源,通过抽取、清洗、转换等整合成最终数据
  • 非易失:数仓保存的数据是一系列的历史快照,和业务那边同步的数据,不允许被修改,只允许通过工具进行查询、分析
  • 时变性:数仓会定期接受、集成新的数据【即历史数据不能改,最新数据进行载入】

数据仓库VS数据库

  • 数据库面向事务设计,属于OLTP(在线事务处理)系统,主要操作是随机读写,设计时避免冗余,常采用符合规范来设计
  • 数据仓库面向主题设计的,属于OLAP(在线分析处理)系统,主要操作是批量读写,关注数据整合,会有意引入冗余,采用反范式方式设计

在这里插入图片描述

1.3 数仓的技术实现

两种:传统数仓,大数据数库

传统数据仓库:
由关系型数据库组成MPP(大规模并行处理)集群,利用单机数据库形成
问题:扩展性有限,热点问题

大数据数据仓库:
将SQL转换为大数据计算引擎任务,完成数据分析
分布式文件系统 —解决扩展性问题
备份三份,可选 — 解决热点问题
自身问题:SQL支持率不高,缺少事务支持

1.4 MPP&分布式架构

MPP架构

  • 传统数仓中常见的技术架构,将单机数据库节点组成集群,来提升处理性能
  • 每个节点都有独立的磁盘存储系统和内存系统
  • 每个数据节点通过专用网络或者商业网络互相连接,彼此协同计算,为整体服务,每个节点不能单独作用
  • 设计上优先考虑C(一致性),再A(可用性),最后考虑P(分区容错性)

优点:

  • 运算方式精细,延迟低,吞吐低
  • 适合中等规模的结构化数据处理

缺点:

  • 存储位置不透明
  • 分布式事务的实现会导致扩展性降低
  • 并行计算时,一个节点的瓶颈就会造成整个系统的短板,一个节点的问题会造成其他节点也需要等它,所以没法实现超大的结构,越多节点出错概率越高

分布式架构

  • 大数据中常见的技术架构,也称为Hadoop架构/批处理架构
  • 每个节点即包含存储资源,也含有计算资源。可以单独的运行局部任务。
  • 相比于MPP不共享数据,而分布式架构数据全局透明共享
  • 每台节点通过局域网或广域网相连,节点间的通信开销大,在运算时致力于减少数据移动
  • 优先考虑P(分区容错性),再A(可用性),再考虑C(一致性)
  • 随着数据增大,分布式架构的优势越发明显。数据量较小时,可能分布式架构的运行速度慢于MPP

MPP+分布式架构

  • 数据存储采用分布式架构的公共存储,提供分区容错性
  • 上层架构采用MPP,减少运算延迟

1.5 常见产品

传统数据仓库:

  • Oracle(使用方便,but单个集群只能支持100左右的节点,适合数据量不大)
  • DB2(企业很少用,经常会被赠送)
  • Teradata(贵,但优秀,企业常用)
  • Greenplum(开源)

大数据数据仓库:

  • Hive(主流。原理:SQL转成大数据的计算引擎)(延迟大,离线批处理优秀)
  • Spark SQL(产生原因:Hive运算速度太慢了)
  • HBase(高并发读)
  • Lmpala(数据查询引擎)
  • HAWQ(Greenplum在Hadoop上的移植产品)
  • TLDB(MPP+SMP)

2、架构

2.1 架构图

在这里插入图片描述
根据数据流方向,依次是ETL (数据接入)-- > ODS (保存原始数据)–> CDM (数据分析)–>ADS(保存结果数据)

ETL

数据同步模块,将从业务数据库进行抽取,交互转换,清洗,标准化,再加载到目的地
ETL(extranct抽取,transform转换,load加载)
采用sqoop或kattle或其他工具,或者定制专有的ETL系统

ODS

对原始数据不进行修改,存储作用,到了ODS层后不允许修改,即体现”不易失性“

CDM

CDM层为数据分析提供服务
DWD数据明细层:接收ODS来的原始数据,对其清洗,编码,字段描述等,拿到统一规范的数据
DWS数据汇总层:聚合汇总成一个大表,宽表,减少对其他表的操作

ADS

DWS拿到的结果表,存储进ADS数据应用层
为外部查询提供接口

2.2 ETL流程

将数据从来源端经过抽取、交互转换、加载至目的端的过程
将数据按照定义好的格式加载到数据仓库中去
ETL规则的设计和实施约占整个数据仓库搭建工作量的60%-80%

数据抽取

抽取的数据源可以分为:机构化数据、非结构化数据、半结构化数据
结构化数据采用JDBC、数据库日志方式。非/半结构化数据会监听文件变动
抽取方式:

  • 数据抽取方式有全量同步、增量同步两种
  • 全量同步将全部数据进行抽取,一般用于初始化数据装载(一开始数据仓库刚搭建好的时候)
  • 增量同步:检测数据的变动,抽取变动的数据,一般用于数据更新
  • (在一开始数据仓库搭建好的时候全量同步,后面就都增量同步)

数据转换

数据转换包括数据清洗和转换两阶段

  • 数据清洗:对重复数据,二义性,不完整,违反业务逻辑的数据处理
  • 数据转换:对数据进行标准化处理,进行字段、数据类型、数据定义的转换

数据加载

将处理完的数据导入目标层

ETL工具

结构化数据ETL工具:Sqoop、Kettle、Datastage、Informatica、Kafka、
非半/结构化数据ETL工具:Flume、Logstash
在这里插入图片描述

2.3 数据积存

操作数据层ODS

数据与原业务数据保存一致,可以增加字段用来进行数据管理
扩充集,可以增加字段:(比如增加数据进入时间字段)
在这里插入图片描述
业务数据库里的数据是可以修改的,ODS这里不能修改,但能增加字段

在离线数仓中,业务数据定期通过ETL流程导入ODS中,导入方式有全量、增量两种:

  • 全量导入:数据第一次导入时,用此方式
  • 增量导入:非第一次导入时,每次需要导入新增、更改的数据,建议使用外连接&全覆盖方式

2.4 数据分析

数据明细层DWD

对ODS层的数据进行清洗、标准化、维度退还(时间、分类、地域)
数据仍然满足3NF模型,为分析运算做准备

在这里插入图片描述
在这里插入图片描述
维度退化:三张表合并成一个大表,避免多次的join
比如来自不同地域的多张表,通过增加字段,合并成一个大表

数据汇总层DWS

数据汇总层的数据对数据明细层的数据,按照分析主题进行计算汇总,存放便于分析的宽表
在这里插入图片描述

数据应用层ADS

数据应用层也被称数据集市
存储数据分析结果,为不同业务场景提供接口,减轻数据仓库的负担
数据仓库擅长数据分析,直接开发业务查询接口,会加重负担

在这里插入图片描述

3、建模方法

3.1 基本概念

OLTP
OLTP(在线事务处理)系统中,主要操作是随机读写
为了保证数据一致性、减少冗余,常使用关系模型
在关系模型中,使用三范式规则来减少冗余

OLAP
在线联机分析,主要操作是复杂分析查询,关注数据整合,以及分析、处理性能
OLAP根据数据存储的方式不同,又分为ROLAP、MOLAP、HOLAP
目的:加快计算性能
ROLAP(relation OLAP 关系型OLAP):使用关系模型构建,存储系统一般为RDBMS

MOLAP(multidimensional OLAP 多维型OLAP):预先聚合计算
HOLAP(hybrid OLAP混合架构的OLAP):ROLAP与MOLAP两者的集成

查询效率ROLAP < HOLAP <MOLAP

3.2 ROLAP

经典的数据仓库建模方法有ER模型、维度模型、Data Value 、Anchor

在这里插入图片描述
维度模型灵活,多采用维度模型

维度模型中,表被分为维度表、事实表,维度是对事务的一种组织
维度一般包含分类、时间、地域等

在这里插入图片描述
维度模型分为星型模型、雪花模型、星座模型
维度模型建立后,方便对数据进行多维分析

星型模型
维度只有一层,带一层维度(时间or地域等),分析性能最优
在这里插入图片描述
雪花模型
多层维度,维度细分维度 or 维度下面接事实
比较接近三范式设计,较为灵活,性能较低
在这里插入图片描述

星座模型
基于多个事实表,事实表之间会共享一些维度表
是大型数据仓库中的常态,是业务增长的结果,与模型设计无关
业务增大的结果,常态
在这里插入图片描述
宽表模型
是维度模型的衍生,适用join性能不佳的数据仓库产品
宽表模型将维度冗余到事实表中,形成宽表,减少join操作

3.3 MOLAP

空间换时间的方式
只存储预计算结果
缺点:生成cube需要大量的时间、空间,维度预处理可能会造成数据膨胀
在这里插入图片描述
常见的MOLAP产品:Kylin、Druid
依靠产品的性能

3.4 多维分析

OLAP:主要操作是复杂查询,可以多表关联
OLAP对复杂查询操作做了直观的定义:包括钻取、切片、切块、旋转

钻取:
对维度不同层次的分析,通过改变维度的层次来变换分析的粒度
钻取包括上卷、下钻
上卷:低层次到高层次的切换
下钻:高层次到低层次的切换
在这里插入图片描述

切片、切块
对某个维度进行分割称为切片
按照多维进行的切片称为切块
在这里插入图片描述
旋转
对维度方向的互换,类似交换坐标轴上卷

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【scipy.sparse包】Python稀疏矩阵详解

【scipy.sparse包】Python稀疏矩阵 文章目录【scipy.sparse包】Python稀疏矩阵1. 前言2. 导入包3. 稀疏矩阵总览4. 稀疏矩阵详细介绍4.1 coo_matrix4.2 dok_matrix4.3 lil_matrix4.4 dia_matrix4.5 csc_matrix & csr_matrix4.6 bsr_matrix5. 稀疏矩阵的存取5.1 用save_npz保…

MATLAB 遗传算法

✅作者简介&#xff1a;人工智能专业本科在读&#xff0c;喜欢计算机与编程&#xff0c;写博客记录自己的学习历程。 &#x1f34e;个人主页&#xff1a;小嗷犬的个人主页 &#x1f34a;个人网站&#xff1a;小嗷犬的技术小站 &#x1f96d;个人信条&#xff1a;为天地立心&…

CSS布局之详解

在开发前端的时候&#xff0c;界面布局尤为重要&#xff0c;要布局的非常合理&#xff0c;好看&#xff0c;css是必不可少的&#xff0c;然后是各种布局&#xff0c;使用这些布局&#xff0c;进行混合搭配&#xff0c;最终的目的都是开发一个完整的界面。前端的技术变化是五花八…

mybatis-plus ---1

mybatis-plus 在mybatis的基础上只做加强&#xff0c;不做删减。 一个简单的mybatis-plus案例 结构图 创建一个springboot工程 添加依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0…

Linux(Linux各目录结构详解)

我们知道Linux系统是一个文件系统&#xff0c;它的文件系统就类似windows系统下的磁盘文件系统。 我们连接上一台linux系统的服务器。 输入命令 &#xff1a; ls / 我们可以看到 linux系统的根目录下有这些目录 bin boot data dev etc hbr home lib lib64 lostfoun…

【前端】参考C站动态发红包界面,高度还原布局和交互

最近有些小伙伴咨询博主说前端布局好难&#xff0c;其实都是熟能生巧&#xff01; 模仿C站动态发红包界面&#xff0c;cssdiv实现布局&#xff0c;纯javascript实现交互效果 目录 1、界面效果 2、界面分析 2.1、整体结构 2.2、标题 2.3、表单 2.4、按钮 3、代码实现 3.…

【目标检测】如何使用Yolov8

如何使用Yolov8一、前言二、用法2.1 安装2.2 使用方法2.3 模型2.3.1 目标检测2.3.2 实例分割2.3.3 分类一、前言 一种易于使用的新的对象检测模型。 由 Ultralytics 开发的 Ultralytics YOLOv8 是一种尖端的、最先进的 (SOTA) 模型&#xff1a; https://github.com/ultralyt…

前端调试2

一、用chrome调试(node.js)例&#xff1a;const fs require(fs/promises);(async function() {const fileContent await fs.readFile(./package.json, {encoding: utf-8});await fs.writeFile(./package2.json, fileContent); })();1.先 node index.js 跑一下&#xff1a;2.然…

并发包工具之 批量处理任务 CompletionService(异步)、CompletableFuture(回调)

文章目录一、处理异步任务并获取返回值——CompletionService二、线程池三、Callable 与 Future四、通过回调方式处理可组合编排任务——CompletableFuture一、处理异步任务并获取返回值——CompletionService 特点描述&#xff1a; 对于比较复杂的计算&#xff0c;把…

dfs(九)字符串的全排列

字符串的排列_牛客题霸_牛客网【牛客题霸】收集各企业高频校招笔面试题目&#xff0c;配有官方题解&#xff0c;在线进行百度阿里腾讯网易等互联网名企笔试面试模拟考试练习,和牛人一起讨论经典试题,全面提升你的技术能力https://www.nowcoder.com/practice/fe6b651b66ae47d7ac…

Windows 安装Tomcat

版本:tomcat8.5jdk-8u231一.解压JDK安装包 更换JDK安装路径二.解压安装Tomcat 选择jdk安装路径更换tomcat安装路径三.设置环境变量 1.“环境变量”界面中系统变量点击”新建“&#xff0c;创建CATALINA_HOMEC:\RESSET\tomcat&#xff08;Tomcat服务器的根目录&#xff09;2.创建…

电脑录屏win+g没反应怎么办?打开这2个开关,就能解决

有不少的小伙伴在使用电脑自带的录屏软件的时候&#xff0c;发现录屏快捷键wing没反应了。电脑录屏wing没反应怎么办&#xff1f;解决办法很简单&#xff0c;只需要打开2个开关&#xff0c;就能够快速解决&#xff0c;一起来看看吧&#xff01; 一、电脑录屏wing没反应怎么办&a…

响应式布局之viewport-超级简单

之前文章CSS布局之详解_故里2130的博客-CSDN博客 上面的文章可以实现响应式布局&#xff0c;根据浏览器的大小变化而变化&#xff0c;但是相对于viewport来说&#xff0c;之前的还是有点复杂&#xff0c;而使用viewport更加的简单。 当我们使用amfe-flexible的时候&#xff0…

记录ideal中使用springboot遇到的问题

持续记录&#xff0c;避免反复查找资料 选择Maven构建项目 创建springboot项目时&#xff0c;【Project Metadata页】的Type选项默认是Gradle&#xff0c;如果要使用Maven需要修改选项&#xff0c;如下图 mysql依赖包直接在pom.xml中添加 创建时在对话框中勾选【Mysql Driver】…

两个月,测试转岗产品经理,我是怎么规划的?

​本期同学依旧来自深圳 测试到产品转变&#xff0c;用了两个月 本周&#xff0c;为大家介绍M同学的佛系转岗经历 学员档 学员档案 原岗位&#xff1a;测试 转岗级别&#xff1a;中级产品经理 转岗特点&#xff1a; 1.未接触产品工作 2.对岗位地点要求严格 先看结果 …

浅显易懂的说清楚小游戏与H5游戏的技术区别

从“跳一跳”到“羊了个羊”微信小游戏上线4年时间&#xff0c;除了涌现出不少火爆全网的小游戏之外&#xff0c;也有类似于“动物餐厅”、“口袋奇兵”等游戏得以在此孵化繁荣&#xff0c;凭借着微信强大的社交属性小游戏成为游戏厂商在桌面端、App 端、H5 端之外争夺的另一个…

40个改变你编程技能的小技巧!

40个改变编程技能的小技巧 1、将大块代码分解成小函数 2、今日事今日毕&#xff0c;如果没毕&#xff0c;就留到明天。 如果下班之前还没有解决的问题&#xff0c;那么你需要做的&#xff0c;就是关闭电脑&#xff0c;把它留到明天。 中途不要再想着问题了&#xff01; 3、…

【LeetCode】不同的二叉搜索树 [M](卡特兰数)

96. 不同的二叉搜索树 - 力扣&#xff08;LeetCode&#xff09; 一、题目 给你一个整数 n &#xff0c;求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种&#xff1f;返回满足题意的二叉搜索树的种数。 示例 1&#xff1a; 输入&#xff1a;n 3 输出&a…

学会使用LoadRunner录制脚本

1.LoadRunner安装 https://blog.csdn.net/weixin_48584088/article/details/129012469 2.Loadrunner的基本概念 LoadRunner是一种适用于许多软件体系架构的自动负载测试工具&#xff0c;从用户关注的响应时间、吞吐量&#xff0c; 并发用户和性能计数器等方面来衡量系统的性…

Linux数据流重定向

数据流重定向就是将某个命令执行后应该要出现在屏幕上的数据&#xff0c;给它传输到其他地方去 如果我们要执行一个命令&#xff0c;它通常是这样的&#xff1a; 标准输入、输出、错误stdin标准输入0stdout标准输出1stderr标准错误输出2标准输入&#xff08;stdin&#xff09;…