什么是数据仓库

一、数据仓库概念

数据仓库(Data Warehouse)可简写为DW或DWH。数据仓库的目的是构建面向分析的集成化数据环境,为企业所有决策定制过程,提供所有系统数据支持的战略计划。它出于分析性报告和决策支持的目的而创建。

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

通过对数据仓库中数据的分析,可以帮助企业,改进业务流程、控制成本、提高产品质量等。

数据仓库,并不是数据的最终目的,而是为数据最终的目的最好准备。这些准备包括对数据的:清晰,转义,分类,重组,合并,拆封,统计等等。

二、输出仓库和数据库的区别

数据库数据仓库的区别实际上是OLTP(操作性处理)和OLAP(分析型处理)的区别。

操作性处理(On-Line Transaction Processing),也叫面向交易的处理系统,是针对具体页面在数据库练级的日常操作,通常对少数数据进行查询和修改。

分析型处理(On-Line Analytical Processing),一般对某些主题的历史数据进行分析,用来支持管理决策。数据仓库并不是要取代数据库。

数据仓库,是在数据库已经大量存在的情况下,为了进一步挖掘数据资源、为了决策需要而产生的,不是所谓的“大型数据库”

三、数据仓库的主要特征

数据仓库是面向主题的(Subject-Oriented)、集成的(Integrated)、非易失的(Non-Volatile)和时变的(Time-Variant)数据集合,用以支持管理决策。

根据数据仓库处理的数据层次不同,数据仓库主要分为基础层、主题层、数据集市这三层。

3.1 面向主题

主题是一个抽象的概念,是较高层次上企业信息系统的数据综合、归类并进行分析利用的抽象。传统数据库的特点是面向业务应用的,各个业务系统相分离;而数据仓库则是面向主题的,它对应某一宏观分析领域所涉及的分析对象。

3.2 集成性

通过对分散、独立、异构的数据库数据进行抽取、清理、转换和汇总便得到了数据仓库的数据。这样保证了数据仓库数据的一致性。

数据仓库中的综合数据不能从原有数据库直接得到。隐藏在数据进入仓库前,要经过统一和综合,这是最关键复杂的一步:

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

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

如下,一保险公司与“保险”有关的数据来自多个不同的操作系统。这些系统内部数据命名、数据格式可能都不相同。把源数据存储到数据仓库之前,需要ETL(抽取、转换、加载),去除不一致。ETL的质量决定了我们决策的准确性。

2.3 不可更新性(非易失性)

操作性数据库主要服务于日常的业务操作,使得数据库必须实时更新。数据仓库只保存过去的业务信息,不需要实时更新,而是每隔一段时间把一批较新的数据导入数据仓库。

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

数据仓库有大量的查询操作,但是几乎没有修改和删除。因此,数据经加工和集成进入数据仓库后极少更新,通常只需要定期加载和更新。

2.4 时变性

数据仓库包含各种粒度的历史数据。目的是通过过去一段时间业务的经营情况,挖掘其中隐藏的模式。数据仓库的数据需要更新,以适应决策的需要。数据仓库的数据随时间的变化主要有以下表现:

1、数据仓库的数据时限一般远远长于操作性数据的数据时限;

2、操作性系统存储的是当前数据,而数据仓库存储历史数据;

3、数据仓库的数据按照实际顺序追加,都带有实际属性。

四、数据仓库分层结构

按照数据流入流出的过程,数据仓库分为三层:原始数据层(ODS)、数据仓库(DW)、数据应用层。我们可以这样理解,ODS层存放的是原始数据,DW存放我们要重点设计的数据,APP是面向业务定制的应用数据。

原始数据层(ODS:Operational Data Store):数据无任何更改,不对外开放;为临时存储层,是接口数据的临时存储区域,为后一步数据处理做准备。例如用户访问日志表、订单日志表、用户登录表等。

数据仓库(DW:Data Warehouse):也叫细节层。是对源数据进行了ETL之后的数据。一致、准确、干净的数据。数据仓库层是核心设计,从ODS中获取的数据按照主题建立各种数据模型,其又细分为以下几层:

1、数据明细层DWD(Data Warehouse Detail):该层一般保持与ODS一样的数据粒度,并提供一定的数据质量保证。该层会做少许聚合,将相同主题的数据汇集到一张表中,提供数据可用性。

2、数据中间层DWM(Data WareHouse Middle):改成在DWD层的基础上,对数据做轻度聚合操作,生成一系列中间表,提高指标复用性。其作用就是对核心数据进行聚合,算出统计指标。

3、数据服务层DWS(Data WareHouse Servce):又称数据集市。主要是面向各业务部门使用,并且仅面向某个特定的主题,例如商品主题宽表、店铺主题宽表、地址主题宽表。主要功能是将上两层的数据按照业务需求聚合,生成字段较多的宽表和Cube,用于后续的业务查询、OLAP分析,数据分发等。比如将表数据推送给MySQL数据库。

数据应用层(DA或APP:Application):前端应用直接读取的数据。根据报表、专题分析需求而计算生成的数据。这里主要是提供给数据产品和运营所使用的数据,一般存放在ES、Redis、PostgreSql等系统中,也可能存放在Hive中供数据分析和挖掘使用,比如报表数据等。

数据仓库从各个数据源获取的数据及在数据仓库内的转换和流动都可以认为是ETL。数据仓库的日常管理和维护大部分精力就是保持ETL的稳定。

为什么要进行数据仓库分层?

用空间换时间,用大量冗余(预处理)来换取快速响应,提升用户体验。如果不分层的话,源系统业务规则发送变化将影响整个数据清洗过程,工作量巨大。

通过分层管理简化数据清洗过程,把一步的工作分为多个步骤去完成,每一个步骤都相对简单和容易,这样我们容易保证每个步骤的准确性,当发生错误数据时,我们只需要局部修改即可。

五、数据仓库元数据管理

元数据(Mata Data),也叫解释性数据,描述性数据。元数据管理是企业级数据仓库中的关键组件,贯穿数据仓库构建的整个过程,直接影响着数据仓库的构建、使用和维护。

● 构建数据仓库的主要步骤之一是ETL。元数据定义了源数据系统到数据仓库的映射,数据转换的规则、数据仓库的逻辑结构,数据更新的规则,数据导入历史记录以及装载周期等相关内容。数据抽取和转换的专家及仓库管理员正是通过元数据高效地构建数据仓库。我们可以从元数据中知道,一个数据是经过了怎样的ETL达到数据仓库等信息。

● 用户在使用数据仓库时,通过元数据访问数据,明确数据项的含义及定制报表。

● 数据仓库的规模及复杂性离不开元数据管理,包括增加或移除外部数据源,改变数据清洗规则,控制出错的查询及安排备份等。

目前,行业对于元数据的管理普遍不是很好,用Excel记录等方式。


推荐阅读更多精彩内容

  • 目录一、什么是数据仓库二、数据集成:ETL三、主流的数据仓库简介 一、什么是数据仓库 我们先从一个故事开始:在很久...
    回锅肉不回锅了阅读 326评论 2 0
  • 什么时候需要用到数据仓库? 一个公司里面不同项目可能用到不同的数据源,有的存在MySQL里面,又的存在MongoD...
    dy2903阅读 15,834评论 0 7
  • 上一篇:098-BigData-26Hive企业级调优 十、数据仓库 10.1 什么是数据仓库数据仓库,英文名称为...
    AncientMing阅读 414评论 0 0
  • 仓库就是放东西, 数据仓库就是放数据的,各种数据,肯定是大型的,小型的肯定的没必要了就。这里的大型主要包括业务上的...
    hanyffynah阅读 246评论 0 2
  • 10.1 什么是数据仓库 数据仓库,英文名称为Data Warehouse,可简写为DW或DWH。数据仓库,是为企...
    小鬼神仙阅读 115评论 0 0