首先的疑问是什么是数据仓库?

作为理工科出身多多少少都会了解数据库的概念,我也一样,了解的层面可能只是知道数据库是存储我们很多系统里用的数据的地方,可能也只是在这个层面了,对于数据仓库的也只是停留在听说的层面。

为了了解什么是数据仓库,我可以简单的举个小例子。

假设有一天,你收到你boss的任务,要求你在半天的时间内分析一个公司几个项目的业绩分析报表要求,你觉得很简单,因为操作已经在你脑子里哦,不就是直接在数据库里查询这几个项目业绩数据,再做一个可视化的报表即可么,但是当你真正开始做的时候,你发现你老板要求看到的数据不完全在一个数据库里,这几个项目有的数据存储在MySQL数据库里,有的存储在的存储在mongodb里,还有的在一些外部数据,这个时候你慌了,半天时间可能不能够完成老板的任务了,虽然最后你也能完成任务,但是花费的时间和精力是很大的。这个时候你可能就会想,要是能有个工具把这些存在不同地方的数据汇总到一个地方该多好啊,那么就不用费那么大事情进行查询处理了。

对没错,这个工具就可以理解是数据仓库了。

也就是说数仓是存数据的,可以简单的理解为:面向分析的存储系统。企业的各种数据往里面塞,主要目的是为了有效分析数据,后续会基于它产出供分析挖掘的数据,或者数据应用需要的数据,如企业的分析性报告和各类报表,为企业的决策提供支持。

到这里或许会有人说:我们经常使用的关系型数据库不也可以满足部分内容么?后面给出答案。

关系型数据库,它可以被划分为两大基本类型:操作型数据库和分析型数据库。

1. 操作型数据库

主要面向应用,用于业务支撑,支持对实际业务的处理,也可以叫业务型数据库,是基本的、日常的事务处理,例如银行交易。

可以理解为通常意义上的数据库(后端开发同学口中的经常提到的就是这种)。比如我们常用的MYSQL,Mongodb,SQLSERVER等

2. 分析型数据库

主要面向数据分析,侧重决策支持,作为公司的单独数据存储,负责利用历史数据对公司各主题域进行统计分析。

由于分析型数据库中的操作都是查询,因此也就不需要严格满足关系型数据库一些设计规范,这样的情况下再将它归为数据库不太合适,也容易不引起混淆,所以称之为数据仓库。

数据处理大致可以分成两大类:OLTP(联机事务处理)和OLAP(联机分析处理)。

OLTP(联机事务处理)就是操作型数据库的主要应用,更侧重于基本的、日常的事务处理,包括数据的增删改查。

OLAP(联机分析处理)就是分析型数据库的主要应用,以多维度的方式分析数据, 这个后续会整理。

二、数据仓库有什么特点

相对于数据库,数据仓库有以下特点

(1)面向主题

数据仓库通过一个个主题域将多个业务系统的数据加载到一起,为了各个主题(如:用户、订单、商品等)进行分析而建,操作型数据库是为了支撑各种业务而建立。

(2)集成性

数据仓库会将不同源数据库中的数据汇总到一起。

(3)历史性

较之操作型数据库,数据仓库的数据是为企业数据分析而建立,所以数据被加载后一般情况下将被长期保留,前者通常保存几个月,后者可能几年甚至几十年。

(4)时变性

是指数据仓库包含来自其时间范围不同时间段的数据快照,有了这些数据快照以后,用户便可将其汇总,生成各历史阶段的数据分析报告。

(5)稳定性

数据仓库中的数据一般仅执行查询操作,很少会有删除和更新。但是需定期加载和刷新数据。

三、为什么搭建数据仓库

简单来说,就是为了有效分析数据 。

你说直接从业务数据库中取数据来做分析?

也不是不可以,就是业务系统多,业务复杂时,会发现结构复杂,数据脏乱,难以理解,缺少历史,大规模查询缓慢这些问题。

业务到一定规模,大家需要面临的问题越来越复杂和深入,数据需求不再只是昨日的营收,上月的uv这些,而是“28到45岁女性在社区的活跃度与公司策划的专题内容活动的关系”这类精细化的分析,而从数据库是很难取出这类数据的。

毕竟业务型数据库是为了支撑业务设计的,不是为了查询和分析数据

四、数据仓库结构

用AXURE画了个结构图,如下:简单来说,就是把各数据源的数据ETL到数仓中,数仓再对数据进行集成和统计,然后再输出给各数据应用,图中涉及的模块,接下来会分别介绍。

初识数据仓库

 

五、ETL

ETL分别代表:抽取extraction、转换transformation、加载load。

(1)抽取(Extract)

从数据来源提取指定数据,数据是需要指定的,不是所有的数据都要抽取过来, 某些源数据对于分析而言没有价值,或者其可能产生的价值,远低于储存这些数据所需要的数据仓库的实现和性能上的成本,就不会抽取了。

(2)转换(Transform)

将数据转换为指定格式并进行数据清洗保证数据质量。

数据转换,如包括编码转换(m/f->男/女),字段转换(balance->bal),度量单位的转换(cm->m),数据粒度的转换。业务系统数据存储非常明细的数据,而数据仓库中数据是用分析的,不需要非常明细,会将业务系统数据按照数据仓库粒度进行聚合。

数据清洗,如会对不完整数据,错误数据和重复数据等脏数据进行清洗。

(3)加载(Load)

将转换过后的数据加载到目标数据仓库,加载可分为两种:

全量加载:一次对全部数据进行加载。增量加载:一般首次需要全量加载,但是在第二次周期或者第三次周期的时候仍然全量加载的话,耗费了极大的物理和时间资源。有可能部分数据源并未发生变化,而有的数据源可能只是增加了少量的数据。 对数据源中的数据只考虑新修改的记录和新插入的记录就是增量加载。

ETL很可能是数据仓库开发中最耗时最耗资源的一个环节,因为该环节要整理各大业务系统中杂乱无章的数据,并协调元数据上的差别,工作量很大,但也是构建数据仓库的重要环节,对数据仓库的后续环节影响比较大。

 

六、ODS

ODS:全称是Operational Data Store,操作数据存储。

人们对数据的处理行为可以划分为操作型数据处理和分析型数据处理,操作型数据处理一般放在传统的数据库(Database,DB)中进行,分析型数据处理则需要在数据仓库(Data Warehouse,DW)中进行。但是并不是所有的数据处理都可以这样划分,换句话说,人们对数据的处理需求并不只有这两类,比如,有些操作型处理并不适合放在传统的数据库上完成,也有些分析型处理不适合在数据仓库中进行。这时候就需要第三种数据存储体系,操作数据存储(Operational Data Store,ODS)系统就因此产生。它的出现,也将DB~DW两层数据架构转变成DB~ODS~DW三层数据架构。

ODS是这样一种数据存储系统,它将来自不同数据源的数据(各种操作型数据库、外部数据源等)通过ETL过程汇聚整合成面向主题的、集成的、企业全局的、一致的数据集合(主要是最新的或者最近的细节数据以及可能需要的汇总数据),用于满足企业准实时的OLAP操作和企业全局的OLTP操作,并为数据仓库提供集成后的数据,将数据仓库系统中的ETL过程下沉到ODS中完成以减轻数据仓库的压力。

6.1 ODS中的数据具有以下4个基本特征:
① 面向主题的:进入ODS的数据是来源于各个操作型数据库以及其他外部数据源,数据进入ODS前必须经过 ETL过程(抽取、清洗、转换、加载等)。
② 集成的:ODS的数据来源于各个操作型数据库,同时也会在数据清理加工后进行一定程度的综合。
③ 可更新的:可以联机修改。这一点区别于数据仓库。
④ 当前或接近当前的:“当前”是指数据在存取时刻是最新的,“接近当前”是指存取的数据是最近一段时间得到的。

6.2 ODS功能:

(1)实现企业级的OLTP操作:
传统的操作型数据库往往只存放企业某一类业务或者某一个部门的数据,因此无法面向企业全局数据的OLTP,而ODS可以实现。因为ODS的数据是面向整个企业进行集成汇总的,克服了原来面向应用的操作型数据库数据分散的缺陷。
(2)实现即时的OLAP操作:
在数据仓库上进行OALP,往往由于数据量十分庞大而需要较长的时间。而在企业实际应用中,对于一些较低层次的决策,往往并不需要太多的历史数据,可能只需要参考当前的或者接近当前的数据就可以完成,并且要求具有较快的响应时间,因此数据仓库显然无法满足这样的要求,但是ODS可以实现。ODS中不仅有面向企业全局的细节数据和汇总数据,而且规模比数据仓库小,具有较强的实时响应能力。

6.3 ODS和DW的区别:

ODS在DB~ODS~DW三层体系结构中起到一个承上启下的作用。
ODS中的数据虽然具有DW中的数据的面向主题的、集成的特点,但是也有很多区别。
(1)存放的数据内容不同:
ODS中主要存放当前或接近当前的数据、细节数据,可以进行联机更新。
DW中主要存放细节数据和历史数据,以及各种程度的综合数据,不能进行联机更新。
ODS中也可以存放综合数据,但只在需要的时候生成。
(2)数据规模不同:
由于存放的数据内容不同,因此DW的数据规模远远超过ODS。
(3)技术支持不同:
ODS需要支持面向记录的联机更新,并随时保证其数据与数据源中的数据一致。
DW则需要支持ETL技术和数据快速存取技术等。
(4)面向的需求不同:
ODS主要面向两个需求:一是用于满足企业进行全局应用的需要,即企业级的OLTP和即时的OLAP;二是向数据仓库提供一致的数据环境用于数据抽取。
DW主要用于高层战略决策,供挖掘分析使用。
(5)使用者不同:
ODS主要使用者是企业中层管理人员,他们使用ODS进行企业日常管理和控制。
DW主要使用者是企业高层和数据分析人员。

 

七、数据集市

7.1 数据集市由来

不同单位的异构数据都可以存储在数据仓库中。要综合考虑企业的功能、性能和数据需求,合理搭建数据仓库。数据仓库是一项复杂、繁琐、成本高、周期长的工程。因此,数据仓库并不适用于中小型企业。数据集市有效解决了数据仓库的问题和弊端,是一种小型的数据仓库,能够支持决策分析和部门级应用,集成了大部分服务和业务。企业级的数据仓库能够对数据进行存储、采集和分析,满足用户的不同需求。然而,不同部门职责范围不同,需要采集和分析不同的数据。如果全部数据操作和处理都从数据仓库进行,会加重系统的负担,降低工作效率,造成资源浪费。数据集市就是在这个背景下发展起来的,一方面符合部门级数据分析的需要,另一方面减轻了中央数据仓库的负担,提高了工作效率。数据集市是在数据仓库的基础上发展起来的,通常由各部门安排数据集市中存储的数据,也通常采用不同的 OLAP 设计数据集市。相关数据表明,数据集市的投资占数据仓库投资的 50%。

数据集市(DM)可以理解为是一种“小型数据仓库”,一般面向部门、单个主题或特定应用,且之间互不影响。

可以分为以下两种:

初识数据仓库

独立数据集市:有自己的源数据库和ETL架构;

非独立数据集市:没有自己的源数据,它的数据来自数据仓库。当用户或者应用程序不需要/不必要/不允许访问整个数仓数据时,就可以直接访问数据集市,为用户提供一个数据仓库的“子集”。

 

简单理解就是一个结构完全和数仓一样,有ETL,然后自己存储和计算;另一种就是直接用数仓处理过的数据,再次进行组合集成。可能后面结合数据分层更好理解。

八、元数据

元数据(Meta Date),即用来描述数据的数据。你细品,细品,再细品。。对就是那个意思。

技术元数据为开发和管理数据仓库的IT 人员使用,描述了与数据仓库开发、管理和维护相关的数据,包括数据源信息、数据转换描述、数据仓库模型、数据清洗与更新规则、数据映射和访问权限等。

而业务元数据为管理层和业务分析人员服务,从业务角度描述数据,包括商务术语、数据仓库中有什么数据、数据的位置和数据的可用性等,帮助业务人员更好地理解数据仓库中哪些数据是可用的以及如何使用。

元数据作用:

在数据仓库中,元数据的主要作用如下。
(1)描述哪些数据在数据仓库中,帮助决策分析者对数据仓库的内容定位。
(2)定义数据进入数据仓库的方式,作为数据汇总、映射和清洗的指南。
(3)记录业务事件发生而随之进行的数据抽取工作时间安排。
(4)记录并检测系统数据一致性的要求和执行情况。
(5)评估数据质量。
 

相关文章:

  • 2022-12-23
  • 2022-02-03
  • 2022-12-23
  • 2021-11-17
  • 2022-01-08
  • 2021-11-12
猜你喜欢
  • 2021-05-21
  • 2021-09-16
  • 2021-10-10
  • 2021-10-11
  • 2021-11-17
  • 2022-12-23
  • 2021-08-25
相关资源
相似解决方案