数据仓库是什么?和数据库有何区别?

2023-11-17

在具体学习数据仓库之前先看一下数据中心的整体构架以及数据流向。
在这里插入图片描述

  • DB 是现有的数据来源,可以为mysql、SQLserver、文件日志等,为数据仓库提供数据来源的一般存在于现有的业务系统之中。

  • ETL 是 Extract-Transform-Load 的缩写,用来描述将数据从来源迁移到目标的几个过程:

     Extract,数据抽取,也就是把数据从数据源读出来。
     Transform,数据转换,把原始数据转换成期望的格式和维度。如果用在数据仓库的场景下,Transform也包含数据清洗,清洗掉噪音数据。
     Load 数据加载,把处理后的数据加载到目标处,比如数据仓库。
    
  • ODS(Operational Data Store) 操作性数据,是作为数据库到数据仓库的一种过渡,ODS的数据结构一般与数据来源保持一致,便于减少ETL的工作复杂性,而且ODS的数据周期一般比较短。ODS的数据最终流入DW。

     DW (Data Warehouse)数据仓库,是数据的归宿,这里保存且长期保存着所有从ODS来的数据,并且这些数据不会被修改。
    
  • DM(Data Mart) 数据集市,为了特定的应用目的或应用范围,而从数据仓库中独立出来的一部分数据,也可称为部门数据或主题数据,面向应用。


面对大数据的多样性,在存储和处理这些大数据时,我们就必须要知道两个重要的技术,其分别是:数据仓库技术、Hadoop。
当数据为结构化数据,来自传统的数据源,则采用数据仓库技术来存储和处理这些数据。
在这里插入图片描述

一、什么是数据仓库

数据仓库之父Bill Inmon将数据仓库描述为一个面向主题的、集成的、随时间变化的、非易失的数据集合,用于支持管理者的决策过程。
数据仓库的目的是构建面向分析的集成化数据环境为企业提供决策支持。数据仓库本身并不“生产”任何数据,同时自身也不需要“消费”任何的数据,数据来源于外部,并且开放给外部应用,这也是为什么叫“仓库”,而不叫“工厂”的原因。

二、数据仓库的基本概念

(一)数据源

构建一个数据仓库,必然要有充足的数据源,从外部为数据仓库系统提供进行分析的“原材料”——数据,这些数据来源称为数据仓库的数据源。
数据源并不局限与传统数据库,可以是非结构化的信息,如爬取日志,也可以是埋点日志。

(二)ETL

在BI项目中ETL会花掉整个项目至少1/3的时间,ETL设计的好坏直接关系到BI项目的成败。其中,花费时间最长的是“T”(transform,清洗、转换)的部分,一般情况下这部分工作量是整个ETL的2/3。
ETL是将业务系统中的数据经过抽取(Extract)、清洗转换(Transform)和加载(Load)到数据仓库的过程,目的是将企业中的分散、凌乱、标准不统一的数据整合到一起,为企业的决策提供分析依据。
在这里插入图片描述
ETL处理分为五大模块,分别是:数据抽取、数据清洗、数据转换、规则检查、数据装载。各模块之间灵活组合,形成ETL处理流程。下面简单介绍一下各模块之间的功能。

1.数据抽取

在构建数据仓库的过程中,数据源所提供的数据并不都是有用的,有些数据对决策并不能提供支持,同时,外部数据源中数据冗余的现象也很普遍。数据仓库既然是面向主题的,那么在数据源中,只有那些与主题相关的内容才是必需的、有使用价值的。因此,必需以主题的需求为依据,对数据源的内容进行有目的地选择,这一过程被称为“数据抽取”(Data Extraction)。

对于数据的抽取,是从各个不同的数据源抽取到ODS(Operational Data Store,操作型数据存储)中。具体步骤为,首先要搞清楚数据是从哪几个业务系统中来,各个业务系统的数据库服务器运行什么DBMS,是否存在非结构化的数据等,当收集完这些信息后才可以进行数据抽取的设计。

(1)对于与存放 DW 的数据库系统相同的数据源处理方法

这类数据源在设计上比较容易处理。一般情况下,DBMS(Mysql、SQLServer)都会提供数据库连接功能,在 DW 数据库服务器和原业务系统之间建立直接的连接关系,接下来就可以写查询语句直接访问。

(2)对于与存放 DW 的数据库系统不同的数据源处理方法

对于这类数据源,一般情况下也可以通过 ODBC 的方式建立数据库连接。如果不能建立数据库连接,可以用两种方法完成,一种是通过工具将数据源导出成 .txt 或者 .xls 文件,然后再将这些源系统文件导入到 ODS 中。另一种方法是通过程序接口来完成。

(3)对于文件类型数据源(.txt/.xls)

业务人员可以利用数据库工具将这些数据导入到指定的数据库,然后从指定的数据库中抽取。或者业务人员借助工具实现。

(4)增量更新问题

对于数据量大的系统,必须考虑增量抽取。一般情况,业务系统会记录业务发生的时间,可以用作增量的标志,每次抽取之前首先判断 ODS 中记录最大的时间,然后根据这个时间去业务系统取大于这个时间的所有记录。

2.数据清洗转换

一般情况下,数据仓库分为ODS、DW两部分。通过的做法是从业务系统到ODS做清洗,将脏数据和不完整数据过滤掉,再从ODS到DW的过程中转换,进行一些业务规则的计算和聚合。

(1) 数据清洗

数据仓库的数据源所提供的数据内容并不完美,存在着“脏数据”——即数据有缺省值、异常值等缺陷,而且在数据仓库的各数据源之间,其内容也存在着不一致的现象。为了控制这些“脏数据”对数据仓库分析结果的影响程度,必须采取各种有效的措施,对其进行处理,这一处理过程称为“数据清洗”(Data Transform)。对于任何数据仓库而言,数据清洗过程都是不可缺少的。

不同类型的“脏数据”,清洗处理的方法是不同的。

对于缺省值,产生的原因可能是,信息暂时无法获取、信息被遗漏、属性值不存在,比如一个儿童的固定收入等。解决方法是,通过简单的统计分析,得到含有缺失值的属性个数,以及每个属性的未缺失数、缺失数和缺失率。删除含有缺失值的记录、对可能值进行插补和不处理三种情况。

对于异常值,产生的原因可能是:业务系统检查不充分。解决方法是,先对变量做一个描述性统计,进而查看哪些数据是不合理的。最常用的统计量是最大值和最小值,然后判断变量是否超过了合理的范围。如果数据是符合正态分布,在原则下,异常值被定义为一组测定值中与平均值的偏差超过 3 倍标准的值,如果不符合正态分布,也可以用原理平均值的多少倍标准差来描述。

对于不一致值,产生的原因可能是:业务系统检查不充分。解决方法是,先对变量做一个描述性统计,进而查看哪些数据是不合理的。最常用的统计量是最大值和最小值,然后判断变量是否超过了合理的范围。如果数据是符合正态分布,在原则下,异常值被定义为一组测定值中与平均值的偏差超过 3 倍标准的值,如果不符合正态分布,也可以用原理平均值的多少倍标准差来描述。

数据清洗是一个反复的过程,不可能在几天内完成,只有不断的发现问题,解决问题。对于是否过滤、是否修正一般要求客户确认;对于过滤掉的数据,写入 Excel 文件或者将过滤数据写入数据表,在 ETL 开发的初期可以每天向业务单位发送过来数据的邮件,促使他们尽快的修正错误,同时也可以作为将来验证数据的依据。数据清洗需要注意的是不要将有用的数据过滤掉了,对于每个过滤规则认真进行验证,并要用户确认才行。

(2) 数据转换

数据转换的任务主要是进行不一致的数据转换、数据粒度和的转换和一些商务规则的计算等。

a. 不一致的数据转换

这个过程是一个整合的过程,将不同业务系统的相同类型的数据统一,比如同一个用户在用户管理系统的编码是 XX0001 ,而在订单系统的编码是 YY0001 ,这样在抽取过来之后统一转换成一个编码。

b. 数据粒度的转换

业务系统一般存储粒度较小的数据,而数据仓库中的数据是用来分析的,不需要粒度很小的数据,一般情况下,会将业务系统数据按照数据仓库粒度进行聚合。

c. 商务规则的计算

不同的企业有不同的业务规则,不同的数据指标,这些指标有时候不能简单的加加减减就能完成,这个时候需要在 ETL 中将这些数据指标计算好了之后存储在数据仓库中,供分析使用。

(三)元数据

所谓“元数据”(Meta Data),就是关于数据仓库中各种数据的数据。它是关于数据仓库中数据、操作数据以及应用程序的结构和意义的描述信息。它的作用类似于数据库管理系统的数据字典,保存了逻辑数据结构、文件、地址和索引等信息。广义上讲,在数据仓库中,元数据描述了数据仓库内数据的结构和建立方法的数据。

元数据是整个数据仓库的核心部件,元数据管理器是企业级数据仓库中的关键部件,贯穿数据仓库构建的整个过程,直接影响着数据仓库的构建、使用和维护。

a. 数据获取区域元数据

在这个区域中,数据仓库的处理过程主要包括数据抽取、数据转换、数据清洗、数据集成、数据准备五项功能。这些处理过程是通过相应的工具完成的,在这些处理过程进行时,相应的工具就记录下了与这些处理相关的元数据。在以后的数据仓库维护和管理过程中,技术人员也将使用这些已记录下来的元数据管理和监控正在运行的功能。

b. 数据存储区域元数据

在这个区域中,数据仓库的处理过程主要包括数据装载、数据存储、数据管理三项功能。这些处理过程同样是通过相应的工具完成的,在这些处理过程进行时,相应的工具就记录下了与这些处理相关的元数据。数据仓库的管理员在进行完全数据刷新和数据增量装载中会用到这些元数据;在数据备份、恢复的处理中,以及对数据仓库的清理和数据定期归档中也需要用到这些元数据。对用户来说,也有可能用到这些元数据。

c. 数据传递区域元数据

在这个区域中,数据仓库的处理过程主要包括报表生成、查询处理、复杂分析三项功能。信息传递区域的处理过程主要是为最终用户服务的,所记录的元数据为用户提供预定义查询和预定义报表解疑,定义了用户查询和报表生成需要输入的相关参数,也包括与 OLAP 相关的元数据。系统的开发者和管理员都会参加这个区域的处理过程。

在该区域中,当用户在查询处理工具的辅助下构建一条查询时,也会引用数据获取区域和数据存储区域中记录的元数据。
在这里插入图片描述
元数据定义了数据仓库中的数据的模式、来源、抽取和转换规则等,而且是整个数据仓库系统运行的基础,元数据把数据仓库系统中各个松散的组件联系起来,组成了一个有机的整体。

(四)数据集市

数据集市(Data Market,DM)是为企业特定部门的决策支持而组织起来的一批数据和业务规划。它是一种小型的、部门级数据仓库。习惯上称之为 “主题域” ,企业的不同部门有不同的 “主题域” ,因而就有不同的数据集市。

数据集市有两种类型:独立型数据集市(Independent Data Mart)和从属型数据集市(Dependent Data Mart)。

独立型数据集市的实质,是为了满足企业内各部门的分析需求而建立的微型数据仓库。有些企业在实施数据仓库项目时,为了节省投资,尽快见效,针对不同部门的需要,分布建立起这类数据集市,已解决一些较为迫切的问题。但是,当多个独立的数据集市增长到一定规模后,由于没有统一的数据仓库协调,企业只会又增长出一些新的信息孤岛,仍然不能以整个企业的视角来分析数据。
在这里插入图片描述
从属型数据集市的内容并不直接来自外部数据源,而是从数据仓库中得到。在数据仓库内部,数据根据分析主题,划分成若干个子集,进行组织、存放。这种面向某个具体的主题而在逻辑上或物理上进行划分所形成的数据子集,就是从属型数据集市。数据划分成集市之后,在进行某个确定主题的分析时,可以有效缩小数据的检索范围,明显提高工作效率。
在这里插入图片描述

三、数据仓库的四个基本特征

(一)面向主题

传统的操作型系统是围绕组织的功能性应用进行组织的,而数据仓库是面向主题的。主题是一个抽象概念,简单地说就是与业务相关的数据的类别,每一个主题基本对应一个宏观的分析领域。数据仓库则是辅助人们分析数据的设计。

比如,一个公司要分析销售数据,就可以建立一个专注于销售的数据仓库,使用这个数据仓库,就可以回答类似于 “上一季度谁是我们这款产品的最佳用户” 这样的问题。这个场景下的销售,就是一个数据主题,而这种通过划分主题定义数据仓库的能力,就使得数据仓库是面向主题的。

主题域是对某个主题进行分析后确定的主题的边界,如客户、销售、产品都是主题域的例子。

(二)集成

在这里插入图片描述
数据仓库的一个重要的功能是把不同的数据源的数据汇总到一起(如上图)。

集成是指把不同类型的数据源的数据进行整合,按照统一的形式进行集成。比如性别在一个数据源用男/女,另一个数据源用1/2,那么在数据仓库中,就需要对其进行统一。

(三)非易失

在这里插入图片描述
传统的操作型环境中的数据一般是要周期性地更新的,且一般按一次一条记录的方式进行。但数据仓库中的数据通常以批量方式载入与访问(如上图),但在数据仓库环境中并不进行数据更新。数据仓库中的数据在进行装载时是以静态快照的格式进行的。当产生后继变化时,一个新的快照记录就会写入数据仓库。这样,在数据仓库中就保存了数据的历史状况。

(四)时变性

在这里插入图片描述
时变性指的是数据仓库中的每个数据单元只在某一时间是准确的。在一些情况下,记录中加有时间戳,而在另外一些情况下记录则包含一个事务的时间。总之,任何情况下,记录都包含某种形式的时间标志用以说明数据在哪一时间是准确的。

除了以上四个特性外,数据仓库还有一个非常重要的概念就是粒度。粒度问题遍布于数据仓库体系结构的各个部分。粒度是指数据的细节或汇总程度,细节程度越高,粒度级别越低。比如,单个事务是低粒度级别,而全部一个月事务的汇总就是高粒度级别(如下图)。
在这里插入图片描述
粒度之所以是数据仓库环境的关键设计问题,是因为它极大地影响数据仓库的数据量和可以进行的查询类型。粒度级别越低,数据量越大,查询的细节程度越高,查询范围越广泛,反之亦然。

四、数据库和数据仓库的区别

在这里插入图片描述
数据仓库是在传统数据库的基础之上发展起来的,但它并不是对传统数据库的彻底抛弃,而是旨在弥补传统数据库在数据分析能力方面的不足,以提供良好的大规模数据分析能力为己任,力图为决策提供有效的技术支持。和传统数据库相比,数据仓库在总体特征、面向用户、存储内容等方面,都有着重大的差异(如下表)。
在这里插入图片描述
数据仓库是在数据库已经大量存在的情况下,为了进一步挖掘数据资源、为了决策需要而产生的,它绝不是所谓的“大型数据库”。

数据仓库的出现,并不是要取代数据库。目前,大部分数据仓库还是用关系数据库管理系统来管理的。可以说,数据库、数据仓库相辅相成、各有千秋。


转载自:
https://www.jianshu.com/p/3e1386d6052e(作者:mr_酱)
http://www.chanpin100.com/article/113132(作者:猫耳朵)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据仓库是什么?和数据库有何区别? 的相关文章

  • 视频编解码(一):ffmpeg编码H.264帧类型判断

    本文主要讲述ffmpeg编码过程中是如何设置I帧 B帧及P帧的 以及如何通过代码判断帧类型 之前看过很多网上的文章 讲述如何判断I帧 B帧 P帧 然而都是停留在H 264官方文档中的定义 如果不结合ffmpeg 就仿佛纸上谈兵 有点不切实际

随机推荐

  • 人脸识别5.1- insightface人脸检测模型scrfd-训练实战笔记,目标检测的理论理解

    1 insightface detection scrfd模型训练 1 0 数据集 数据集下载说明 https github com deepinsight insightface tree master detection dataset
  • Java面向对象编程

    对于IP地址130 63 160 2 MASK为255 255 255 0 子网号为 A 160 2 B 160 C 63 160 D 130 63 160 答案 B 将网络物理地址转换为IP地址的协议是 A IP B ICMP C ARP
  • uni-app项目中引入uView组件库

    在uni app项目中引入uView组件库 其实uView的官方文档写的很清楚了 但是作为菜鸟踩过坑的我还是记录一下 什么是uView uView是uni app生态专用的UI框架 uni app 是一个使用 Vue js 开发所有前端应用
  • Linux 中的 chmod 命令及示例

    在 Unix 操作系统中 chmod命令用于更改文件的访问模式 该名称是change mode的缩写 其中规定每个文件和目录都有一组权限来控制权限 例如谁可以读取 写入或执行该文件 其中权限分为三类 同时读 写和执行 用 r w 和 x 表
  • Java程序员需看的面试题

    进大厂是大部分程序员的梦想 而进大厂的门槛也是比较高的 所以这里整理了一份阿里 美团 滴滴 头条等大厂面试大全 对于Java后端的朋友来说应该是最全面最完整的面试备战仓库 为了更好地整理每个模块 我也参考了很多网上的优质博文和项目 力求不漏
  • 在父子页面嵌套的结构中,当父页面完成某个操作后给子页面一个回调函数

    企业级系统中有一种常见的页面结构 所有的表单都套在一个父页面里 有业务场景 要求父页面在子页面完成加载后做一些操作 如下 这些代码不是本文的重点内容 不做介绍了 这里的iframe是元素 init my iframe function if
  • 策略模式对象初始化为空解决方案及项目中具体的使用

    使用类 Component public class TaskReceiver Autowired TaskHandlerMapping mapper RabbitHandler RabbitListener queues MqTaskCo
  • 【OPENGLES】opengles-jni实例1

    首先 说明下为什么要用jni实现opengl es 在进行移动端图像算法开发的过程中 需要完成对大量的数据进行处理 opengl是在进行图形渲染或者大批量图像运算处理时有着很大的优势 如果能够在算法库开发中加入opengl 则对于提升算法运
  • dos磁盘管理命令

    dos磁盘管理命令 前言 磁盘管理命令用于日常的磁盘维护 DOS命令行提供了多种文件管理命令用于设置和管理磁盘列表 由于很多磁盘在没有安装图形界面的时候就需要对其进行操作 所以掌握DOS命令行下的磁盘管 理命令对系统管理员是十分必要的 磁盘
  • 区域气象-大气化学在线耦合模式(WRF/Chem)在大气环境领域实践技术应用

    大气污染是工农业生产 生活 交通 城市化等方面人为活动的综合结果 同时气象因素是控制大气污染的关键自然因素 大气污染问题既是局部 当地的 也是区域的 甚至是全球的 本地的污染物排放除了对当地造成严重影响外 同时还会在动力输送作用下 极大地影
  • 【小程序】解析小程序原理

    本文首发自 前端修罗场 一个专注 Web 技术 答疑解惑 面试辅导 职业发展的社区 实际学习过程中 有些同学常常会对小程序和 Web 应用之间的差别产生疑惑 它们之间到底有什么不同 Web 应用不能作为小程序吗 本期文章将会带你比较小程序和
  • JS如何判断是否为null、undefined、NaN

    判断null var exp null if exp typeof exp undefined exp 0 alert is null typeof exp undefined 排除了 undefined exp 0 排除了数字零和 fal
  • 【观影笔记】地平线:大数据时代(BBC)

    地平线 大数据时代 BBC 影片中的实例 大数据分析所需要素 感悟 影片中的实例 洛杉矶 利用预测地震余震发生的模型来预测犯罪 数据挖掘起源 约翰 格兰特Graunt 伦敦黑死病死亡记录 Phil Beales 基因生物学寻找疾病治疗方法
  • PostgreSQL 基本安装总结

    一 Mac 环境下的安装 brew install postgresql 1 1 查看当前环境版本 pg ctl V 1 2 初始化数据库 在开始使用数据库前 需要在磁盘上初始化一个数据库存储区域 通常称之为一个数据库集簇 SQL标准使用的
  • fastjson 问题

    问题 1 fastjson value 为null key 会丢失问题 2 SerializerFeature 配置参数 背景 和第三方系统进行对接 两边商量好了接口定义 有些是非必填项 从数据库查询出来的数据赋值给相应的key 有些Str
  • 会议是浪费工作时间的最佳去处

    本文为翻译初稿 更多精彩内容 敬请关注 高效能程序员的修炼 人民邮电出版社 今天你开了多少个会 这个星期呢 这个月呢 现在你再自问一下 那些会议中有多少是值得参加的 如果把相同的时间用在工作上 你又能完成多少事情 这不禁让人想知道 我们究竟
  • 【设计模式

    every blog every motto You can do more than you think https blog csdn net weixin 39190382 type blog 0 前言 设计模式 上 创建型 设计模式
  • 基于51单片机无线NRF24L01的温湿度光照采集

    接收端 原理图 发送端 原理图 实物焊接图 主端源程序 发送端程序 从机NRF24L01程序 ifndef API DEF define API DEF Define interface to nRF24L01 Define SPI pin
  • cJSON介绍与应用—基于VS以及STM32单片机

    一 cJSON介绍 cJSON是一个使用C语言编写的JSON数据解析器 具有超轻便 可移植 单文件的特点 使用MIT开源协议 cJSON的源码文件只有两个 1 cJSON h 2 cJSON c 使用的时候 只需要将这两个文件复制到工程目录
  • 数据仓库是什么?和数据库有何区别?

    在具体学习数据仓库之前先看一下数据中心的整体构架以及数据流向 DB 是现有的数据来源 可以为mysql SQLserver 文件日志等 为数据仓库提供数据来源的一般存在于现有的业务系统之中 ETL 是 Extract Transform L