数据仓库系列篇之基本概述

@Author  : Spinach | GHB
@Link    : http://blog.csdn.net/bocai8058

文章目录

  • 前言
  • 什么是数据仓库
  • 数据仓库与数据库的区别
  • 为什么要建立数据仓库及数仓平台的优势
    • 为什么要建立数据仓库
    • 大数据数仓平台的特点或优势
    • 数据仓库和数据集市的关系


前言

通过收集资料、个人经验总结整理了【数据仓库系列篇】,有不足之处多多包涵,可参考如下:

《数据仓库系列篇之基本概述》
《数据仓库系列篇之分层思想》
《数据仓库系列篇之管理规范》
《数据仓库系列篇之实现架构》

更多可查看【博客数据仓库分组】

什么是数据仓库

数据仓库,是由数据仓库之父比尔·恩门(Bill Inmon)于1990年提出的。

数据仓库(Data Warehouse,可简写为DW或DWH),数据仓库是决策支持系统(Decision Support)和联机分析(OLAP)应用数据源的结构化数据环境。数据仓库研究和解决从数据库中获取信息的问题,目的就是为了联机分析(OLAP)和决策支持系统(Decision Support)

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

数据仓库的特征在于面向主题、集成性、稳定性和时变性,用于支持管理决策。

  • 面向主题
    • 传统数据库中,最大的特点是面向应用进行数据的组织,各个业务系统可能是相互分离的。而数据仓库则是面向主题的。主题是一个抽象的概念,是较高层次上企业信息系统中的数据综合、归类并进行分析利用的抽象。在逻辑意义上,它是对应企业中某一个宏观分析领域所涉及的分析对象。
    • 操作型处理(传统数据)对数据的划分并不适用于决策分析。而基于主题组织的数据则不同,它们被划分为各自独立的领域,每个领域有各自的逻辑内涵但互不交叉,在抽象层次上对数据进行完整、一致和准确的描述。一些主题相关的数据通常分布在多个操作型系统中。
  • 集成性
    • 通过对分散、独立、异构的数据库数据进行抽取、清洗、转换和汇总便得到数据仓库的数据,这样保证了数据仓库内的数据关于整个企业的一致性。
    • 数据仓库中综合数据不能从原有的数据库系统直接得到,因此在数据进入数据仓库之前,必然要经过统一于综合,这一步是数据仓库建设中最关键、最复杂的一步,所要完成的工作有:(1)要统一源数据中所有矛盾之处,如字段的同名异义、异名同义、单位不统一、字长不一致等等;(2)进行数据综合和计算, 数据仓库中的数据综合工作可以在从原有数据库抽取数据时声场,但很多是在数据仓库内部生成。

数据仓库系列篇之基本概述_第1张图片
上图是一个保险公司综合数据的简单处理过程,其中数据仓库中与“保险”主题有关的数据来自于多个不同的操作型系统。这些系统内部数据的命名可能不同,数据格式也可能不同。把不同来源的数据存储到数据仓库之前,需要去除这些不一致。

  • 稳定性
    • 操作型数据库主要服务于日常的业务操作,使得数据库需要不断地对数据实时更新,以便迅速获取当前最新数据,不至于影响正常的业务运作。在数据仓库中只要保存过去的业务数据,不需要每一笔业务都实时更新数据仓库,而是根据商业需要每隔一段时间把一批较新的数据导入数据仓库。
    • 数据仓库的数据反映的是一段相当长的时间内历史数据的内容,是不同时点的数据库快照的集合,以及基于这些快照进行统计、综合和重组的导出数据。
    • 数据稳定性(非易失性)主要是针对应用而言。数据仓库的用户对数据的操作大多是数据查询或比较复杂的挖掘,一旦数据进入数据仓库以后,一般情况下被较长时间保留。数据仓库中一般有大量的查询操作,但修改和删除操作很少。因此,数据经加工和集成进入数据仓库后是极少更新的,通常只需要定期的加载和更新
  • 时变性
    • 数据仓库包含各种粒度的历史数据。 数据仓库中的数据可能与某个特定日期、星期、月份、季度或年份有关。数据仓库的目的是通过分析企业过去一段时间业务的经营状况,挖掘其中隐藏的模式。虽然数据仓库的用户不能修改数据,但并不是说数据仓库的数据是永远不变的。分析的结果只能反映过去的情况,当业务变化后,挖掘出的模式会失去时效性。因此数据仓库的数据需要更新,以适应决策的需要。从这个角度讲,数据仓库建设是一个项目,更是一个过程。数据仓库的数据随时间的变化表现在以下几个方面。
      (1)数据仓库的数据时限一般要远远长于操作型数据的数据时限。
      (2)操作型系统存储的是当前数据,而数据仓库中的数据是历史数据。
      (3)数据仓库中的数据时按照时间顺序追加的,他们都带有时间属性。
      

数据仓库与数据库的区别

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

面向业务的数据库常称作OLTP,面向分析的数据仓库亦称为OLAP。

  • 操作型处理,叫联机事务处理OLTP(On-Line Transaction Processing),也可以称面向交易的处理系统,它是针对具体业务在数据库联机的日常操作,通常对少数记录进行查询、修改。用户较为关心操作的响应时间、数据的安全性、完整性和并发支持的用户数等问题。传统的数据库系统作为数据管理的主要手段,主要用于操作型处理,像Mysql,Oracle等关系型数据库一般属于OLTP。
  • 分析型处理,叫联机分析处理OLAP(On-Line Analytical Processing),一般针对某些主题的历史数据进行分析,支持管理决策。
    • 首先要明白,数据仓库的出现,并不是要取代数据库。数据库是面向事务的设计,数据仓库是面向主题设计的。数据库一般存储业务数据,数据仓库存储的一般是历史数据。
    • 数据库设计是尽量避免冗余,一般针对某一业务应用进行设计,比如一张简单的User表,记录用户名、密码等简单数据即可,符合业务应用,但是不符合分析。数据仓库在设计是有意引入冗余,依照分析需求,分析维度、分析指标进行设计
    • 数据库是为捕获数据而设计,数据仓库是为分析数据而设计

以银行业务为例:

  1. 数据库是事务系统的数据平台,客户在银行做的每笔交易都会写入数据库,被记录下来,这里,可以简单地理解为用数据库记账。
  2. 数据仓库是分析系统的数据平台,它从事务系统获取数据,并做汇总、加工,为决策者提供决策的依据。

比如,某银行某分行一个月发生多少交易,该分行当前存款余额是多少。如果存款又多,消费交易又多,那么该地区就有必要设立ATM了。显然,银行的交易量是巨大的,通常以百万甚至千万次来计算。

  1. 事务系统是实时的,这就要求时效性,客户存一笔钱需要几十秒是无法忍受的,这就要求数据库只能存储很短一段时间的数据。
  2. 而分析系统是事后的,它要提供关注时间段内所有的有效数据。这些数据是海量的,汇总计算起来也要慢一些,但是,只要能够提供有效的分析数据就达到目的了。数据仓库,是在数据库已经大量存在的情况下,为了进一步挖掘数据资源、为了决策需要而产生的,它决不是所谓的“大型数据库”。

为什么要建立数据仓库及数仓平台的优势

为什么要建立数据仓库

先来看下数据仓库的数据从哪里来,最终要到哪里去?

通常数据仓库的数据来自各个业务应用系统。业务系统中的数据形式多种多样,可能是Oracle、MySQL、SQLServer等关系数据库里的结构化数据,可能是文本、CSV等平面文件或Word、Excel文档中的数据,还可能是HTML、XML等自描述的半结构化数据。这些业务数据经过一系列的数据抽取、转换、清洗,最终以一种统一的格式装载进数据仓库。数据仓库里的数据作为分析用的数据源,提供给后面的即席查询、分析系统、数据集市、报表系统、数据挖掘系统等

这时我们就想了,为什么不能把业务系统的数据直接拿来供即席查询、分析系统、报表系统等使用呢,为什么要经过数据仓库这一步?

实际上在数仓出现之前,确实是这么做的,但是有很多数据分析的先驱者当时已经发现,简单的“直接访问”方式很难良好工作,这样做的失败案例数不胜数。下面列举一些直接访问业务系统无法工作的原因:

  • 某些业务数据由于安全或其他因素不能直接访问。
  • 业务系统的版本变更很频繁,每次变更都需要重写分析系统并重新测试。
  • 很难建立和维护汇总数据来源于多个业务系统版本的报表。
  • 业务系统的列名通常是硬编码,有时仅仅是无意义的字符串,这让编写分析系统更加困难。
  • 业务系统的数据格式,如日期、数字的格式不统一。
  • 业务系统的表结构为事务处理性能而优化,有时并不适合查询与分析。
  • 没有适当的方式将有价值的数据合并进特定应用的数据库。
  • 没有适当的位置存储元数据。
  • 用户需要看到的显示数据字段,有时在数据库中并不存在。
  • 通常事务处理的优先级比分析系统高,所以如果分析系统和事务处理运行在同一硬件之上,分析系统往往性能很差。
  • 有误用业务数据的风险。
  • 大规模查询慢,当业务数据量较大时,查询就会变得缓慢。尤其同时关联多张大表,比如还款表关联订单表再关联用户表,体量非常巨大。
  • 缺少历史数据,出于节约空间的考虑,业务数据库对部分业务不会记录状态流变更历史,这就使得某些基于流变历史的分析无法进行。

尽管需要增加软硬件的投入,但建立独立数据仓库与直接访问业务数据相比,无论是成本还是带来的好处,这样做都是值得的。随着处理器和存储成本的逐年降低,数据仓库方案的优势更加明显,在经济上也更具可行性。

大数据数仓平台的特点或优势

  1. 基于高扩展高效率高安全的hadoop(hdfs组件)或者云,海量数据,集群规模达到成千上万台机器;
  2. 大数据平台的服务器相对都是廉价、低成本的服务器;
  3. 有强大的计算集群来支撑计算分析能力:hive、spark、flink,同样也有快速查询框架来支撑:hbase、es、clickhouse、doris、presto、impala、druid;
  4. 存在两种模式,即离线和实时模式,其中 离线:hive、spark,实时:flink。

我们看到上面的大数据数据仓库的平台架构,包括从数据存储–>数据计算–>数据分析查询,我们可以很容易的联想到数据中台的概念,即数据源来自于同一个地方(数据湖),以离线+实时模式,打通公司的所有业务。

数据仓库和数据集市的关系

数据集市是企业级数据仓库的一个子集,主要面向部门级业务,并且只面向某个特定的主题。为了解决灵活性和性能之间的矛盾,数据集市就是数据仓库体系结构中增加的一种小型的部门或工作组级别的数据仓库。数据集市存储为特定用户预先计算好的数据,从而满足用户对性能的需求。数据集市可以在一定程度上缓解访问数据仓库的瓶颈。

数据集市和数据仓库的主要区别

数据仓库是企业级的,能为整个企业各个部门的运行提供决策支持手段;而数据集市则是一种微型的数据仓库,它通常有更少的数据,更少的主题区域,以及更少的历史数据,因此是部门级的,一般只能为某个局部范围内的管理人员服务,因此也称之为部门级数据仓库。
数据仓库的数据源是内外部多种数据源,而数据集市的数据源是数据仓库的表数据。


引用:公众号[五分钟学大数据]、咕泡教育等

你可能感兴趣的:(数据仓库,数据仓库,数据库,大数据)