数据仓库基础

news2025/7/18 20:05:07

文章目录

      • 1 数据仓库
        • 1.1 数据仓库为何而来
        • 1.2 数据仓库主要特征
          • 1.2.1 面向主题
          • 1.2.2 集成性
          • 1.2.3 非易失性
          • 1.2.4 时变性
        • 1.3 数据仓库、数据库、数据集市
          • 1.3.1 OLTP
          • 1.3.2 OLAP
          • 1.3.3 OLTP和OLAP的对比
          • 1.3.4 数据库和数据仓库的区别
          • 1.3.5 数据仓库和数据集市的区别
        • 1.4 数据仓库分层架构
          • 1.4.1 分层的思想和标准
          • 1.4.2 阿里巴巴数仓3层架构
          • 1.4.3 分层的好处
          • 1.4.4 ETL和ELT

1 数据仓库

概述

  • 数据仓库(英语:Data Warehouse,简称数仓DW),是一个用于存储、分析、报告的数据系统。
  • 数据仓库的目的是构建面向分析的集成化数据环境,分析结果为企业提供决策支持(Decision Support)。
  • 数据仓库本身并不“生产”任何数据,其数据来源于不同外部系统;
  • 同时数据仓库自身也不需要“消费”任何的数据,其结果开放给各个外部应用使用;
  • 这也是为什么叫“仓库”,而不叫“工厂”的原因。

1.1 数据仓库为何而来

企业中,信息总是用作两个目的:

  • 操作型记录的保存
  • 分析型决策的制定。

联机事务处理系统(OLTP)正好可以满足操作型记录的保存的需求开展, 其主要任务是执行联机事务处理。其基本特征是前台接收的用户数据可以立即传送到后台进行处理,并在很短的时间内给出处理结果。关系型数据库(RDBMS)是OLTP典型应用,比如:Oracle、MySQL、SQL Server等。

但是由于数据越来越多,会出现一定的问题,决策者为了能够正确认识这些问题,制定相关的解决措施。因此需要基于业务数据开展数据分析,基于分析的结果给决策提供支撑。

:在哪里进行数据分析呢?存储数据的数据库可以吗?

答:可以,但没必要。OLTP系统的核心是面向业务,支持业务,支持事务。所有的业务操作可以分为读、写两种操作,一般来说读的压力明显大于写的压力。如果在OLTP环境直接开展各种分析,有以下问题需要考虑:

  • 数据分析也是对数据进行读取操作,会让读取压力倍增;

  • OLTP仅存储数周或数月的数据;

  • 数据分散在不同系统不同表中,字段类型属性不统一;

  • 当分析所涉及数据规模较小的时候,在业务低峰期时可以在OLTP系统上开展直接分析。但是为了更好的进行各种规模的数据分析,同时也不影响OLTP系统运行,此时需要构建一个集成统一的数据分析平台。

  • 该平台的目的很简单:面向分析,支持分析,并且和OLTP系统解耦合。

  • 基于这种需求,数据仓库的雏形开始在企业中出现了。

1.2 数据仓库主要特征

数仓体系图
在这里插入图片描述

  • 数据仓库目的是构建面向分析的集成化数据环境,分析结果为企业提供决策支持(Decision Support)。
  • 数据仓库本身并不“生产”任何数据,其数据来源于不同外部系统;
  • 同时数据仓库自身也不需要“消费”任何的数据,其结果开放给各个外部应用使用;

主要特征

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

数据库中,最大的特点是面向应用进行数据的组织,各个业务系统可能是相互分离的。

而数据仓库则是面向主题的。主题是一个抽象的概念,是较高层次上企业信息系统中的数据综合、归类并进行分析利用的抽象。在逻辑意义上,它是对应企业中某一宏观分析领域所涉及的分析对象。

操作型处理(传统数据)对数据的划分并不适用于决策分析。而基于主题组织的数据则不同,它们被划分为各自独立的领域,每个领域有各自的逻辑内涵但互不交叉,在抽象层次上对数据进行完整、一致和准确的描述。

1.2.2 集成性

确定主题之后,就需要获取和主题相关的数据。当下企业中主题相关的数据通常会分布在多个操作型系统中,彼此分散、独立、异构。

因此在数据进入数据仓库之前,必然要经过统一与综合,对数据进行抽取、清理、转换和汇总,这一步是数据仓库建设中最关键、最复杂的一步,所要完成的工作有:

  • 要统一源数据中所有矛盾之处,如字段的同名异义、异名同义、单位不统一、字长不一致,等等。

  • 进行数据综合和计算。数据仓库中的数据综合工作可以在从原有数据库抽取数据时生成,但许多是在数据仓库内部生成的,即进入数据仓库以后进行综合生成的。

1.2.3 非易失性

数据仓库是分析数据的平台,而不是创造数据的平台。我们是通过数仓去分析数据中的规律,而不是去创造修改其中的规律。因此数据进入数据仓库后,它便稳定且不会改变。

操作型数据库主要服务于日常的业务操作,使得数据库需要不断地对数据实时更新,以便迅速获得当前最新数据,不至于影响正常的业务运作。在数据仓库中只要保存过去的业务数据,不需要每一笔业务都实时更新数据仓库,而是根据商业需要每隔一段时间把一批较新的数据导入数据仓库。

数据仓库的数据反映的是一段相当长的时间内历史数据的内容,是不同时点的数据库快照的集合,以及基于这些快照进行统计、综合和重组的导出数据。

数据仓库的用户对数据的操作大多是数据查询或比较复杂的挖掘,一旦数据进入数据仓库以后,一般情况下被较长时间保留。数据仓库中一般有大量的查询操作,但修改和删除操作很少。

1.2.4 时变性

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

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

数据仓库的数据随时间的变化表现在以下几个方面。

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

1.3 数据仓库、数据库、数据集市

1.3.1 OLTP
  • 操作型处理,叫联机事务处理OLTP(On-Line Transaction Processing),主要目标是做数据处理,它是针对具体业务在数据库联机的日常操作,通常对少数记录进行查询、修改。
  • 用户较为关心操作的响应时间、数据的安全性、完整性和并发支持的用户数等问题。
  • 传统的关系型数据库系统(RDBMS)作为数据管理的主要手段,主要用于操作型处理。
1.3.2 OLAP
  • 分析型处理,叫联机分析处理OLAP(On-Line Analytical Processing),主要目标是做数据分析。
  • 一般针对某些主题的历史数据进行复杂的多维分析,支持管理决策。
  • 数据仓库是OLAP系统的一个典型示例,主要用于数据分析。
1.3.3 OLTP和OLAP的对比
OLTPOLAP
数据源仅包含当前运行日常业务数据整合来自多个来源的数据,包括OLTP和外部来源
目的面向应用,面向业务,支撑事务面向主题,面向分析,支撑分析决策
焦点当下主要面向过去、面向历史 实时数仓除外
任务读写操作大量读而很少写操作
响应时间毫秒秒、分钟、小时或者天 取决于数据量和查询复杂性
数据量小数据,MB,GB大数据,TP,PB
1.3.4 数据库和数据仓库的区别
  • 数据库与数据仓库的区别实际讲的是OLTP与OLAP的区别。
  • OLTP系统的典型应用就是RDBMS,也就是我们俗称的数据库,当然这里要特别强调此数据库表示的是关系型数据库,Nosql数据库并不在讨论范围内。
  • OLAP系统的典型应用就是DW(Data Warehouse),也就是我们俗称的数据仓库。
  • 数据仓库不是大型的数据库,虽然数据仓库存储数据规模大。
  • 数据仓库的出现,并不是要取代数据库。
  • 数据库是面向事务的设计,数据仓库是面向主题设计的。
  • 数据库一般存储业务数据,数据仓库存储的一般是历史数据。
  • 数据库是为捕获数据而设计,数据仓库是为分析数据而设计。
1.3.5 数据仓库和数据集市的区别
  • 数据仓库(Data Warehouse)是面向整个集团组织的数据,数据集市( Data Mart ) 是面向单个部门使用的。
  • 可以认为数据集市是数据仓库的子集,也有人把数据集市叫做小型数据仓库。数据集市通常只涉及一个主题领域,例如市场营销或销售。因为它们较小且更具体,所以它们通常更易于管理和维护,并具有更灵活的结构。
  • 下图中,各种操作型系统数据和包括文件在内的等其他数据作为数据源,经过ETL(抽取转换加载)填充到数据仓库中;数据仓库中有不同主题数据,数据集市则根据部门特点面向指定主题,比如Purchasing(采购)、Sales(销售)、Inventory(库存);
  • 用户可以基于主题数据开展各种应用:数据分析、数据报表、数据挖掘。

在这里插入图片描述

1.4 数据仓库分层架构

1.4.1 分层的思想和标准
  • 数据仓库的特点是本身不生产数据,也不最终消费数据。按照数据流入流出数仓的过程进行分层就显得水到渠成。
  • 每个企业根据自己的业务需求可以分成不同的层次。但是最基础的分层思想,理论上分为三个层:操作型数据层(ODS)、数据仓库层(DW)和数据应用层(DA)。
  • 企业在实际运用中可以基于这个基础分层之上添加新的层次,来满足不同的业务需求。
1.4.2 阿里巴巴数仓3层架构

概述

  • 为了更好的理解数据仓库分层的思想以及每层的功能意义,下面结合阿里巴巴提供出的数仓分层架构图进行分析。
  • 阿里数仓是非常经典的3层架构,从下往上依次是:ODS、DW、DA。
  • 通过元数据管理和数据质量监控来把控整个数仓中数据的流转过程、血缘依赖关系和生命周期。
    当下我们不做深入探讨,只做宏观了解掌握。

ODS层(Operation Data Store)

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

DW层(Data Warehouse)

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

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

DA层(或ADS层)

  • 数据应用层,面向最终用户,面向业务定制提供给产品和数据分析使用的数据。
  • 包括前端报表、分析图表、KPI、仪表盘、OLAP专题、数据挖掘等分析。
1.4.3 分层的好处

分层的主要原因是在管理数据的时候,能对数据有一个更加清晰的掌控,详细来讲,主要有下面几个原因:

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

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

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

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

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

1.4.4 ETL和ELT

数据仓库从各数据源获取数据及在数据仓库内的数据转换和流动都可以认为是ETL(抽取Extra, 转化Transfer, 装载Load)的过程。但是在实际操作中将数据加载到仓库却产生了两种不同做法:ETL和ELT。

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

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

---------------------------根据黑马程序员学习所总结

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

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

相关文章

Spring Boot Admin2 自定义异常监控

其他相关文章: Spring Boot Admin 参考指南SpringBoot Admin服务离线、不显示健康信息的问题Spring Boot Admin2 EnableAdminServer的加载Spring Boot Admin2 AdminServerAutoConfiguration详解Spring Boot Admin2 实例状态监控详解Spring Boot Admin2 自定义JVM监控…

Java项目:JSP旅游产品销售管理系统

作者主页:源码空间站2022 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 本项目分为前后台,分为管理员与普通用户两种角色,管理员登录后台,普通用户登录前台; 管理员角色…

Docker-CentOS开启防火墙firewalled映射Docker端口

开启docker的Tomcat容器后,启动 docker run -d -p 8080:8080 tomcat 访问不了Tomcat 查看防火墙所有开放的端口 firewall-cmd --zonepublic --list-ports 一、需要防火墙开启8080 端口 1、通过systemctl status firewalld查看firewalld状态,发现当前…

03.OpenWrt-系统固件烧录

03.OpenWrt-系统固件烧录 3.1 tft软件烧录 tftp是运行在windows的软件,是将windows主机作为服务端,OpenWrt开发板作为客户端,通过tftp协议将数据发送到开发板进行数据升级. 3.1.1 tftp升级的连接方式 tftp烧录有两种连接方式: windows主机通过有线或者无线的方式连接到路由…

IDEA 代码提交前流程及提交日志模板化

前言 在开发大型项目时,通常都是由团队来进行开发。此时,每个人有每个人的代码编写风格和提交习惯,如果放任自由发挥,那么代码质量和代码提交日志就难免风格各异,导致项目代码质量难以保持统一。针对这一问题&#xf…

Flutter高仿微信-第44篇-群聊

Flutter高仿微信系列共59篇,从Flutter客户端、Kotlin客户端、Web服务器、数据库表结构、Xmpp即时通讯服务器、视频通话服务器、腾讯云服务器全面讲解。 详情请查看 效果图: 实现代码: group_chat_main.dart /*** Author : wangning* Email …

Unity VR 开发教程: Oculus 一体机开发 (一) 环境配置(基于 Oculus Integration v46)

文章目录📕教程说明📕安装 Unity 时需要添加的模块📕设置 Unity 的 Build Settings📕导入 Oculus Integration📕设置 Project Settings⭐通用设置⭐Rendering 设置⭐Identification 设置⭐Configuration 设置⭐XR Plug…

信号类型(雷达)——雷达波形认识(一)

系列文章目录 《信号类型(雷达通信)》 文章目录 前言 简述 总结 前言 本文将结合个人研究经验,从雷达波形简单谈谈我对雷达的认识。之后将对常见的雷达波形进行简单分析。 简述 雷达的波形决定了信号处理的手段以及对应的雷达功能&#x…

关于WEB端实现电子海图研究二GeoServer

记笔记,免忘记! 接前面思路篇。本文章主要是讲,利用GeoServer对shp文件进行数据样式调整 ,数据拼接,shp文件发布,矢量切片。 Geoserver官网:GeoServer 可以使用最新版本,我使用的…

边缘计算那些事儿--网络切片技术(1)

0 背景 边缘计算可以支持就近的计算卸载,让数据在靠近数据源的设备上处理。对于边缘计算低时延的应用场景来说,网络性能的好坏,直接影响着卸载算法的整体耗时,决定着整个算法模型的可行性。因此如果想实现低时延卸载算法&#xff…

Go语言入门【7】指针

指针 在go语言中,每一个变量在运行时都会拥有一个地址,这个地址代表的就是变量在内存中的位置,而指针就是指向这个地址的变量。使用go语言中的指针很简单,只需要记住两个关键字符,&(取地址符&#xff…

[附源码]java毕业设计在线二手车交易信息管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

【App自动化测试】(九)移动端复杂测试环境模拟——来电、短信、网络切换

目录1. 发送短信2. GSM电话3. 设置模拟信号强弱4. 设置网速5. 设置网络连接类型前言: 本文为在霍格沃兹测试开发学社中学习到的一些技术写出来分享给大家,希望有志同道合的小伙伴可以一起交流技术,一起进步~ 😘 当我们使用模拟器来…

C#重启 --- 类和对象

​​​​​​ 1.类是抽象的,对象是具体的 2.类中有数据成员和方法成员(数据成员是名词性的,方法成员是动词性的) 1.类的关键字是class (变量:首字母小写,方法:首字母大写&#x…

【毕业设计】机器学习的员工离职模型研究-python

目录 前言 课题背景和意义 实现技术思路 变量分析 数据导入 构建机器学习模型 1. 1 复制数据删除不需要的变量 1.2 列变量属性分类 实现效果图样例 前言 📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设…

Charles证书安装windows11抓包 Https协议

1、Charles 的CA证书 如果需要截取分析 Https 协议相关的内容,那么需要安装 Charles 的 CA 证书,需要在 win11 电脑上安装证书。 2、证书安装路径 点击 Charles 的顶部菜单,选择 “Help” –> “SSL Proxying” –> “Install Charl…

Revit修改:网格角度,体量轮廓,梁随斜板

一、Revit中使幕墙系统网格改变角度 绘制幕墙系统时,若幕墙系统出现如下图情况: 若想改变该网格的角度,使其与该幕墙上下边界平行或垂直则选中该幕墙,修改属性栏的中的网格角度。如下图所示: 修改完所需角度后&#xf…

web网页设计期末课程大作业——汉中印象旅游景点介绍网页设计与实现19页面HTML+CSS+JavaScript

👨‍🎓学生HTML静态网页基础水平制作👩‍🎓,页面排版干净简洁。使用HTMLCSS页面布局设计,web大学生网页设计作业源码,这是一个不错的旅游网页制作,画面精明,排版整洁,内容…

基于FPGA的Hamiton方程--辛几何算法实现(全网唯一)

1、本文实验基于冯康院士的《哈密尔顿系统的辛几何算法》开展,链接:https://pan.baidu.com/s/1GM0Px7SLWBWzh4sXmAdcwg 提取码:fmkt 2、虽然题目写的是基于FPGA的求解,但实际上采用的是VHLS来实现的,最近根本不想写v…

m基于rbf神经网络和遗传算法优化的MIMO-OFDM系统信道估计算法matlab仿真

目录 1.算法描述 2.仿真效果预览 3.MATLAB部分代码预览 4.完整MATLAB程序 1.算法描述 MIMO-OFDM的信道估计:时,频,空三个域都要考虑,尤其是在空域,不同天线发射的导频序列需要相互正交,否则在接收端无法…