【技术分享】数据仓库介绍

一. 引言

1991年Bill Inmon出版的《Building the Data Warehouse》一书中正式提出了数据仓库的概念,Inmon也被人成为数据仓库之父。从本质上说,数据仓库是一种从操作型系统到决策支持环境的数据流架构模型。这定义看上去有些抽象,解释起来还要从数据库说起。

数据库是在信息化初期,给业务使用的记录和处理数据的工具。数据从纸质文件数字化后在数据库中处理和存储。随着信息化发展到一定阶段,商业世界中更需要从数据中分析出有价值的信息,为决策提供可靠的依据。比如老板需要得到哪款女装最适合推荐给初入职场的女性,哪些产品在市场表现不佳,客户对商品反馈主要集中在哪些方面等等。依靠传统的操作型数据库已经给不出准确的答案了,这就需要多数据源集成、面向主题、适合复杂查询的数据载体,也就是数据仓库。

二. 数据仓库与大数据

了解了为什么有了数据库还要数据仓库,可能另外个问题又来了,数据仓库与大数据是什么关系?解释这个问题还要从数据库说起,准确说是关系型数据库。

关系型数据库存在横向扩展的瓶颈,而这正是大数据平台的优势,大数据平台可以利用廉价的服务器搭建集群,承载海量的数据。打个比方,有一根木头,正好一头牛可以拉动,而如果有十根木头怎么办,与其想方设法培育更健壮的牛,还不如找十头牛一起来拉。大数据平台就是这个机制。在面临浩瀚的企业级数据时,数据仓库搭建在大数据平台上成了“天作之合”。

三. 数据仓库的架构

既然数据仓库不同于传统数据库,而且可以搭载在大数据平台上,那么数据仓库的架构是怎样的?

在这里插入图片描述

图中显示的整个数据仓库环境包括操作型系统和数据仓库系统两大部分。操作型系统的数据由各种形式的业务数据组成,这其中可能有关系数据库、TXT或CSV文 件、HTML或XML文档,还可能存在外部系统的数据,比如网络爬虫抓取来的互联网数据等,数据可能是结构化、半结构化、非结构化的。这些数据经过抽取、转换和装载(ETL)过程进入数据仓库系统。 这里把ETL过程分成了抽取和转换装载两个部分。抽取过程负责从操作型系统获取数据,该过程一般不做数据聚合和汇总,但是会按照主题进行集成,物理上是将操 作型系统的数据全量或增量复制到数据仓库系统的RDS中。转换装载过程并将数据进行清洗、过滤、汇总、统一格式化等一系列转换操作,使数据转为适合查询的格式,然后装载进数据仓库系统的TDS中。传统数据仓库的基本模式是用一些过程将操作型系统的数据抽取到文件,然后另一些过程将这些文件转化成MySQL或Oracle这样的关 系数据库的记录。最后,第三部分过程负责把数据导入进数据仓库。

RDS(RAW DATA STORES)是原始数据存储的意思。将原始数据保存到数据仓库里是个不错的想法。ETL过程的bug或系统中的其他错误是不可避免的,保留原始数 据使得追踪并修改这些错误成为可能。有时数据仓库的用户会有查询细节数据的需求,这些细节数据的粒度与操作型系统的相同。有了RDS,这种需求就很容易实现,用 户可以查询RDS里的数据而不必影响业务系统的正常运行。这里的RDS实际上是起到了操作型数据存储(ODS)的作用。

TDS(TRANSFORMED DATA STORES)意为转换后的数据存储。这是真正的数据仓库中的数据。大量的用户会在经过转换的数据集上处理他们的日常查询。如果前面的工作做得好,这些数据将被以保证最重要的和最频繁的查询能够快速执行的方式构建。

自动化调度组件的作用是自动定期重复执行ETL过程。不同角色的数据仓库用户对数据的更新频率要求也会有所不同,财务主管需要每月的营收汇总报告,而销售人员想看到每天的产品销售数据。作为通用的需求,所有数据仓库系统都应该能够建立周期性自动执行的工作流作业。传统数据仓库一般利用操作系统自带的调度功能(如 Linux的cron或Windows的计划任务)实现作业自动执行。

数据目录有时也被称为元数据存储,它可以提供一份数据仓库中数据的清单。用户通过它应该可以快速解决这些问题:什么类型的数据被存储在哪里,数据集的构建有何区别,数据最后的访问或更新时间等。此外还可以通过数据目录感知数据是如何被操作和转换的。一个好的数据目录是让用户体验到系统易用性的关键。

查询引擎组件负责实际执行用户查询。传统数据仓库中,它可能是存储转换后数据的(Oracle、MySQL等关系数据库系统内置的)查询引擎,还可能是以固定时间间隔向其导入数据的OLAP立方体,如Essbasecube。

用户界面指的是最终用户所使用的接口程序。可能是一个GUI软件,如BI套件的中的客户端软件,也可能就是一个浏览器。

四. 数据仓库在Hadoop大数据平台的实践

概括一下数据仓库的架构为:

ODS->ETL->RDS->ETL->TDS

从ODS(Operational Data Store)数据经过抽取、转换和装载(ETL)到RDS(RAW DATA STORES)是原始数据存储,再经过ETL 到TDS(TRANSFORMED DATA STORES)为转换后的数据存储,成为数仓数据。ETL是建立数据仓库最重要的处理过程,也是最体现工作量的环节,一般会占到整个数据仓库项目工作量的一半以上。

数据仓库各环节都可以使用Hadoop大数据平台组件实现,对应关系如下:

RDS/TDS <> Hive

ETL 的E抽取<> Sqoop/Flume

ETL的TL转换装载 <>Hivesql

ETL的过程管理和自动化调度 <> Falcon/Oozie

数据目录 <> HCatalog

SQL查询 <> Impala/Hivesql/Sparksql

可视化 <> Hue/Zeppelin

参考:

数据库 与 数据仓库的本质区别是什么?

什么是数据仓库,以及我为什么需要它?

为什么说数据中台是大数据的下一站?

《Hadoop构建数据仓库实践》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值