数据仓库理论

news2024/12/22 15:51:55

数据仓库理论

  • 基础理论
    • 数据仓库
    • 主要特征
      • 面相主题
      • 集成性
      • 非易失性、非易变性
      • 时变性
    • OLTP、OLAP
      • OLTP
      • OLAP
      • 对比
    • 数据库与数据仓库的区别
    • 数据仓库、数据集市
    • 数据仓库分层架构
      • 分层思想和标准
      • 阿里巴巴数仓三层架构
        • ODS层
        • DW层
        • DA层(ADS层)
      • 分层的好处
        • 好处
    • ETL和ELT的区别
      • ETL
      • ELT


基础理论

数据仓库

数据仓库(Data Warehouse,简称数仓DW),是一种用于存储。分析、报告的数据系统,其目的是构建面向分析的集成化数据环境,分析结果为企业提供决策支持

数据集仓库本身并不生产任何数据,其数据来源于不同外部系统。同时数据仓库自身也不需要消费任何的数据,其结果开放给各个外部应用使用,这也是为什么叫做“仓库”而不叫做工厂的原因
image-20230521082449742

数据仓库为何而来?

是为了分析数据而来,分析结果给企业决策提供支持,企业中,信息总是用作两个目的:

  1. 操作型记录的保存
  2. 分析型决策的指定

主要特征

面向主题:主题是一个抽象的概念,是较高层次上数据综合、归并并进行分析利用的抽象
集成性:主题相关的数据通常会分布在多个操作性系统中,彼此分散、独立、异构,需要集成到数仓主题下
非易失性:也叫做非易变性,数据仓库是分析数据的平台,而不是创造数据的平台
时变性:数据仓库的数据需要随着时间更新,以适应决策的需要

面相主题

数据仓中,最大的特点是面向应用进行数据的组织,各个业务系统可能是相互分离的,而数据仓库则是面向主题的,主题是一个抽象的概念,是较高层次上企业信息系统中数据综合、归类并进行分析利用的抽象,在逻辑意义上,他是对应企业中某一宏观分析领域所涉及的分析对象.操作型处理(传统数据)对数据的划分并不适用于决策分析,而基于主题组织的数据则不同,他们被划分为各自独立的领域,每个领域有各自的逻辑内涵单互不交叉,在抽象层次上对数据进行完整、一致和准确的描述

集成性

确定主题之后,就需要获取和主题相关的数据,当下企业中主题相关的数据通常会分布在多个操作型系统中,彼此分散、独立、异构。因此在数据进入数据仓库之前,必然要经过统一与综合,对数据进行抽取、清理、转换和汇总,这已不是数据仓库建设中最关键、最复杂的一部,所要完成的工作有:

  1. 要统一数据中所有矛盾之处,如字段的同名异义、异名同义、单位不同意、字长不一致等等问题
  2. 进行数据综合和计算,数据仓库中的数据综合工作可以在从原有数据库抽取数据时生成,但是许多是在数据仓库内部生成的,即进入数据仓库以后进行综合生成的。

非易失性、非易变性

数据仓库是分析数据的平台,而不是创造数据的平台,我们是通过束苍区分析数据中的规律,而不是去创造、修改其中的规律,因此数据进入数据仓库之后,他便稳定且不会改变。
操作型数据库主要服务于日常的业务操作,是的数据库需要不断的对数据实时更新,以便迅速获得当前最新数据,不至于影响正常的业务运作,在数据仓库中主要保存过去的业务数据,不需要每一笔业务都实时更新数据仓库,而是根据上也需要每隔一段时间把一批较新的数据导入到数据仓库
数据仓库的数据反映的是相当一段长时间内历史数据的内容,是不同时点的数据库快照的集合,以及基于这些快照进行统计、综合和重组的导入数据
数据仓库的用户对数据的操作大多数是数据查询或者比较复杂的挖掘,一旦数据进入数据仓库之后,一般情况下被长时间保留,数据仓库中一般有大量的查询操作,但是修改和删除操作很少

时变性

数据仓库包含各种粒度的历史数据,数据可能是某个特定日期、星期、月份、季度或者年份有关

虽然数据仓库的用户不能修改数据,但并不是说数据仓库的数据是一成不变的,分析的结果只能反映过去的情况,当业务发生了变化,挖掘出的模式失去了时效性,因此数据仓库的数据需要随着时间更新,以适应决策的需要,从这个角度讲,数据仓库建设是一个项目,更是一个过程

数据仓库随着时间变化表现在这几个方面:

  1. 数据仓库的数据时限一般要远远长于操作型数据的时限
  2. 操作性系统存储的是当前数据,二数据仓库中的数据是历史数据
  3. 数据仓库中的数据是按照时间顺序追加的,他们都带有时间属性

OLTP、OLAP

联机事务分析OLTP(On-Line Transaction Processing)。
联机分析处理OLAP(On-Line Analytical Processing)。

OLTP

操作型处理,叫联机事务分析OLTP(On-Line Transaction Processing),主要目标是做数据处理的骂他是针对具体业务在数据库练级的日常操作,通常对少数记录进行查询、修改

用户比较关心操作的响应时间、数据的安全性、完整性和并发支持用户数的问题

传统的关系型数据库系统(RDBMS)作为数据管理的主要手段,主要用于操作处理型。
image-20230521091518665

OLAP

分析型处理,叫联机分析处理OLAP(On-Line Analytical Processing)主要目标是做数据分析,一般针对某个主题的历史数据进行复杂的多维分析,支持管理决策。数据仓库是OLAP系统的一个典型示例,主要用于数据分析
image-20230521091751224

对比

OLTPOLAP
数据源仅包含当前运行日常业务数据整合来自多个来源的数据,包括OLTP和外部来源
目的面向应用,面向业务,支持事务面向主题,面向分析,支持分析决策
焦点当下主要面向过去、面向历史,实时数仓除外
任务读写操作大量读而很少写操作
响应时间毫秒级别秒、分、小时或者天,取决于数据量和查询复杂度
数据量小数据 MB、GB大数据 TB、PB

image-20230521092054282

数据库与数据仓库的区别

数据库与数据仓库的区别实际上就是OLTP和OLAP的区别
OLTP系统的典型应用就是RDBMS,也就是我们俗称的数据库,当然这里特别强调的是此数据库表示的是关系型数据库,NoSQL不在讨论范围内
OLAP系统的典型应用就是DW,也就是我俗称的数据仓库

数据仓库不是大型数据库,虽然数据仓库存储的数据规模很大
数据仓库的出现,并不是要取代数据库
数据库是面向事务的设计,数据仓库是面向主题设计的
数据库一般存储业务数据,数据仓库一般是历史数据
数据库是为了捕获数据而设计的,数据仓库是为分析数据而设计的

数据仓库、数据集市

数据仓库是面向整个集团组织的数据,数据集市(Data Mart)是面向单个部门使用的

可以认为数据集市是数据仓库的子集,也有人把数据集市叫做小型数据仓库,数据集市通常指设计一个主题领域,因为他们较小更具体,所以他们通常更便于维护和管理,具有更灵活的结构

数据仓库分层架构

分层思想和标准

数仓的特点是本身不产生数据,也不最终消费数据,按照数据流如流出数仓的过程进行分层就显得水到渠成,每个企业根据自己的业务需求可以分成不同的层次,但是最基础的分层思想、,理论上分为三层:操作性数据层(ODS)、数据仓库层(DW)和数据应用层(DA)

企业在实际运用中可以基于这个基础分层之上添加新的层次来满足不同的业务需求
image-20230521093656993

阿里巴巴数仓三层架构

image-20230521095158650

ODS层

ODS(Operation Data Store)

操作性数据层,也称之为源数据层。数据引入曾、数据暂存曾、临时缓存层

此层存放未经过处理的原始数据之数据仓库,结构上与源系统保持一致,是数据仓库的数据准备区
主要完成操作数据引入到数仓的职责,和数据源系统进行解耦合,同时记录基础数据的历史变化

DW层

DW层(Data Warehouse)
数据仓库层,由ODS层数据加工而成,主要完成数据加工与整合,建立一致性的维度,构建可以复用的面向分析和统计的明细事实表,以及汇总公共粒度的指标,内部具体划分如下:

  • 公共维度层(DIM):基于维度建模理念思想,建立整个企业一致性维度
  • 公共汇总粒度事实层(DWS、DWB):以分析的主体对象作为建模驱动,基于上层的应用和产品的指标需求,构建公共力度的汇总指标事实表,以宽表化手段物理化模型
  • 明细粒度事实层(DWD):将明细事实表的重要维度属性字段做适当的荣誉,即宽表化处理

DA层(ADS层)

数据应用层,面向最终用户,面向业务定制提供给产品和数据分析使用的数据

包括前端报表、分析图表等

分层的好处

分层的主要原因是在管理数据时,能对数据有一个更加清晰的掌控,,主要原因有这几个:

清洗数据结构:每一个数据分层都有他的作用域,在使用表的时候能更加方便地定位和理解

数据血缘追踪:简单的来说,我们最终给业务呈现的是一个能直接使用的业务表,但是它的来源有很多,如果一张表出问题,我们希望能够快速定位到这个问题并查清楚他的危害范围

减少重复开发:规范数据分层,开发一些通用的中间层数据,能够减少极大的重复计算

好处

把复杂问题简单化:将一个复杂的任务分解成多个步骤来完成,每一层处理单一的步骤,比较简单和处容易理解,而且便于维护数据的准确性,当数据出现问题后,可以不用修复所有数据,著需要从有问题的步骤开始修复即可

屏蔽原始数据的异常:屏蔽业务的影响,不必改一次业务就必须重新接入数据

ETL和ELT的区别

数据仓库从各个数据源获取数据及在数据仓库内的数据转换和流动都可以认为是ETL(抽取Excel、转化Transfer、装载Load)的过程

但是在实际操作中将数据加载到仓库却产生了两种不同的做法:ETL和ELT

ETL

ETL(Extract、Transform、Load)

首先从数据源池中提取数据,这些数据源通常是事务性数据库,数据保存在临时缓存数据库中(ODS),然后执行转换操作,将数据结构化并转换为适合目标数据仓库系统的形式,然后将结构化数据加载到仓库中,以备分析

image-20230521101635387

ELT

Extract Load Transform

使用ELT,数据在从数据池中抽取出来后立即加载,没有专门的临时数据库(ODS),这意味着数据会立即加载到单一的集中存储库中,数据在数据仓库系统中进行转换,以便于商业智能工具(BI 工具)一起使用,大数据时代的数仓这个特点非常明显

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

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

相关文章

mysql存储过程实例统计最大销售数量

1.需求 统计某天的销售的商品中,数量大于m的最大的销售数量。 传入参数:销售日期,销售数量 返回参数:最大销售数量 2.数据库表 销售表 CREATE TABLE t_sale ( id int NOT NULL COMMENT ‘主键’, good_id int NULL COMMENT ‘…

[山海关crypto 训练营 day17]

[HNCTF 2022 WEEK3]pnearq 题目代码和数据 from Crypto.Util.number import * from gmpy2 import next_prime from flag import flagp getPrime(1024) q next_prime(p) n p*q e 0x10001 c pow(bytes_to_long(flag), e, n) print(f"n {n}") print(f"c {…

chatgpt赋能Python-python8_9

Python 8-9: 了解更多关于Python的新特性 Python 作为一种高级编程语言已经被广泛应用于数据科学,Web开发,人工智能等领域。Python 8-9带来了新特色的更新和改进,这些功能使得Python更加强大和易于使用,吸引了越来越多开发者的关…

符尧最新研究:大语言模型玩砍价游戏?技巧水涨船高!

深度学习自然语言处理 原创作者:鸽鸽 若干年前,AlphaGo Zero用两个AI代理切磋围棋技艺,打败了人类。今早,符尧的一篇论文刷新了我的认知:让大语言模型相互对弈,再加一个评论家提供建设性意见,提…

自动控制原理备考-1题-传递函数

首先致敬西北工业大学自动控制原理的无冕之王张科老师。 期末考试,先下手为强,后下手遭殃。今天我们就开始一起针对期末考试有关题型一一梳理,突破解决。 给你一个系统结构图,让你求R(s)和N(s)同时作用下的C(s)。基本…

机器学习项目实战-能源利用率 Part-5(模型解释)

博主前期相关的博客可见下: 机器学习项目实战-能源利用率 Part-1(数据清洗) 机器学习项目实战-能源利用率 Part-2(探索性数据分析) 机器学习项目实战-能源利用率 Part-3(特征工程与特征筛选) 机…

匿名通信 Windows 客户端的设计与实现

访问【WRITE-BUG数字空间】_[内附完整源码和文档] 本课题基于 U-TRI 匿名通信系统,设计一个 Windows 匿名通信客户端。该客户端在匿名通信系统中扮演了重要角色,实现了两个重要功能:第一,实现匿名通信协议,拦截/修改主…

TCP 三次握手与四次挥手

1 三次握手 三次握手的过程如下图: 一开始,客户端和服务端都处于 CLOSE 状态。先是服务端主动监听某个端口,处于 LISTEN 状态 客户端会随机初始化序号(client_isn),将此序号置于 TCP 首部的「序号」字段中…

如何在 iPhone 上恢复已删除的应用程序数据

您是不小心删除了重要应用程序并且似乎无法在您的设备上找到它的 iPhone 用户吗?别担心,你并不孤单。在 iPhone 上丢失应用程序可能会令人沮丧,但幸运的是,有一些方法可以恢复它们。在本文中,我们将通过分步说明向您展…

你真的懂Java中的Cloneable接口和深拷贝么?

Cloneable接口 和 深拷贝 💐文章导读 这篇文章就为大家讲讲什么是Cloneable接口,接口的用法以及什么是深拷贝和浅拷贝,如果有不足的地方,还望读者在评论区提出!!! 上篇文章讲过用Comparable接口…

单模光纤的特征方程以及MATLAB求解

在之前的文章中,我们写出了单模光纤的特征方程以及对应的导波模式 这里我们在MATLAB中求解特征方程并表示出几个归一化参数的变化曲线 用到的公式是单模光纤导波模式的特征方程: clear close all tic Vmax 10; N 100;for j 1:NV(j) j/N*Vmax;Vtemp …

电脑微信占用100多GB空间 解决办法来了:重回清爽流畅

这几天微信吃内存的话题又上热搜了,作为一款10亿用户的国民级APP,微信的真是让人又爱又恨,不用几乎不可能,用起来槽点又多,光是磁盘占用就是个头疼的问题。 不论是工作还是日常沟通,微信里面的文件及语音、…

python中的类型转换

文章目录 类型转换简介int()float()str()bool() 类型转换简介 所谓的类型转换,将一个类型的对象转换为其他对象。 类型转换不是改变对象本身的类型,而是将对象的值转换为新的对象。 类型转换四个函数 int() 、 float() 、 str() 、 bool() int() int()…

cpp11实现线程池(一)——项目介绍

项目介绍 线程池是库的形式提供给用户,是必须放到代码中,不能单独运行,亦称为基础组件 第一版线程池任务对象使用继承技术,提供一个抽象基类Task,里面有一个纯虚函数run(),使用时继承该类,并重…

第二篇:强化学习中的7个基础概念

你好,我是zhenguo(郭震) 这是强化学习第二篇:强化学习7个基础概念 在强化学习中,智能体需要在不断尝试和错误的过程中学习,通过观察环境的反馈(奖励或惩罚)来调整自己的行为&#xf…

windows系统安装curl

下载安装包 https://curl.se/windows/ 2.如图所示,把下载的zip包解压到C盘某个目录下 把bin目录配置到系统环境变量Path里 在命令行里直接输入curl即可开始使用 5.curl测试访问百度 6.curl 测试ip端口连通性 用法:curl -v ip:port

推荐一款C端的低代码产品

目录 写在前面 低代码平台 平台怎么选 各平台区别 为什么选它 写在前面 大家都知道低代码这个叫法是从B端叫起来的,也就是说不管是业务人员还是开发人员,都是企业内部使用。那么有没有C端的,且免费使用的低代码产品呢? 低代码…

Matlab论文插图绘制模板第93期—带类别标签的散点图

在之前的文章中,分享了很多Matlab散点图的绘制模板: 进一步,再来分享一种特殊的散点图:带类别标签的散点图。 先来看一下成品效果: 特别提示:本期内容『数据代码』已上传资源群中,加群的朋友请…

数据库基础5-复合查询

文章目录 多表查询自连接子查询合并查询 基础查询中,再补充一个点: 在使用年薪进行降序排序中,我们有以下语句 //A: select ename, sal*12ifnull(comm,0) as 年薪 from emp order by 年薪 desc;查询到的结果: //B: select ename,…

Leetcode 剑指 Offer II 027. 回文链表

题目难度: 简单 原题链接 今天继续更新 Leetcode 的剑指 Offer(专项突击版)系列, 大家在公众号 算法精选 里回复 剑指offer2 就能看到该系列当前连载的所有文章了, 记得关注哦~ 题目描述 给定一个链表的 头节点 head ,请判断其是否为回文链表…