数据仓库的分层及架构

数据仓库的定义

        数据仓库是一个面向主题的、集成的、随时间变化的、但信息自己相对稳定的数据集合,用于对管理决策过程的支持。数据仓库自己并不“生产”任何数据,同时自身也不须要“消费”任何的数据,数据来源于外部,而且开放给外部应用使用。sql

数据仓库的特色

​         面向主题的:数据仓库都是基于某个明确的主题,仅须要与该主题相关的数据,其余的无关细节将会被去掉。数据库

​         集成的:数据仓库里面的数据都是通过ETL( Extract-Transform-Load 抽取-转换-加载)操做后被集中放到同一个数据源,数据仓库里的数据是来自于各类不一样的数据源。缓存

​         随时间变化的:关键数据隐式或者显示地随时间变化而变化。服务器

        ​ 数据相对稳定的:数据装入后通常只是进行查询操做,没有传统数据库的增删改操做。架构

        总结:数据仓库就是整合多个数据源的历史数据进行细粒度的、多维的分析,能够有效地帮助高层管理者或者业务分析人员作出商业战略决策或商业报表。并发

数据仓库的做用

​         能够整合公司的全部业务,创建统一的数据中心。app

​         分析用户行为数据,经过数据挖掘来下降投入成本,提升投入效果。框架

​         能够做为各个业务的数据源,造成业务数据互相反馈的良性循环。oop

​         能够提供数据报表,用于公司的决策等等。性能

  传统数据库 数据仓库
特征 用于操做处理,面向OLTP 用于信息处理,面向OLAP
用户 用户:DBA、开发。用户规模:数百或数亿 用户:经理、主管、分析人员。用户规模:数百
功能 平常操做 长期信息需求、决策支持
DB设计 基于ER模型,面向应用 星形/雪花模型,面向主题
数据 当前的、最新的 历史的、跨时间维护

​         注解 数据处理大体能够分红两大类:联机事务处理OLTP(on-line transaction processing)、联机分析处理OLAP(On-Line Analytical Processing)。OLTP是传统的关系型数据库的主要应用,主要是基本的、平常的事务处理,例如银行交易。OLAP是数据仓库系统的主要应用,支持复杂的分析操做,侧重决策支持,而且提供直观易懂的查询结果。 OLTP 系统强调数据库内存效率,强调内存各类指标的命令率,强调绑定变量,强调并发操做。OLAP系统则强调数据分析,强调SQL执行市场,强调磁盘I/O,强调分区等。

数据仓库的架构

        数据采集层:数据采集层的任务就是把数据从各类数据源中采集和存储到数据库上,期间有可能会作一些ETL(抽取extra,转化transfer,装载load )操做。数据源种类能够有多种:

​             日志:所占份额最大,存储在备份服务器上 业务数据库:如Mysql、Oracle 来自HTTP/FTP的数据:合做伙伴提供的接口 其余数据源:如Excel等须要手工录入的数据 数据存储与分析

​             HDFS是大数据环境下数据仓库/数据平台最完美的数据存储解决方案。

​             离线数据分析与计算,也就是对实时性要求不高的部分,Hive是不错的选择。

​             使用Hadoop框架天然而然也提供了MapReduce接口,若是真的很乐意开发Java,或者对SQL不熟,那么也可使用MapReduce来作分析与计算。

​             Spark性能比MapReduce好不少,同时使用SparkSQL操做Hive。

​     数据共享

​             前面使用Hive、MR、Spark、SparkSQL分析和计算的结果,仍是在HDFS上,但大多业务和应用不可能直接从HDFS上获取数据,那么就须要一个数据共享的地方,使得各业务和产品能方便的获取数据。 这里的数据共享,其实指的是前面数据分析与计算后的结果存放的地方,其实就是关系型数据库和NOSQL数据库。

​     数据应用

​             报表:报表所使用的数据,通常也是已经统计汇总好的,存放于数据共享层。

​             接口:接口的数据都是直接查询数据共享层便可获得。

​             即席查询:即席查询一般是现有的报表和数据共享层的数据并不能知足需求,须要从数据存储层直接查询。通常都是经过直接操做SQL获得。

数据仓库的要求

​     高效率:数据仓库的分析数据通常分为日、周、月、季、年等,能够看出,以日为周期的数据要求的效率最高,要求24小时甚至12小时内,客户能看到昨天的数据分析。因为有的企业每日的数据量很大,若是数据仓库设计的很差,须要延时一到两天才能显示数据,这显然是不能出现这种事情的。

​     数据质量高:数据仓库所提供的各类信息,确定要准确的数据。数据仓库一般要通过数据清洗,装载,查询,展示等多个流程而获得的,若是复杂的架构会有更多层次,那么因为数据源有脏数据或者代码不严谨,均可以致使数据不许确或者有错误,若是客户看到错误的信息就可能致使分析出错误的决策,形成损失经济的损失。

    扩展性:之因此有的大型数据仓库系统架构设计复杂,是由于考虑到了将来3-5年的扩展性,由于若是在将来须要扩展一些新的功能了,就能够不用重建数据仓库系统,就能很稳定运行。由于重建一个数据创库是比较耗费人力和财力。可扩展性主要体如今数据建模的合理性。

​     为了达到上述的要求,创建起一个高效率、高数据质量、良好的可扩展性,再加上为了提升建仓的速度,根据在实际生产环境中的经验的总结,因而就提出来了数据仓库的分层概念,那么到底什么是数据仓库的分层?为何要分红?数据仓库的分层的好处是什么呢?接下来将介绍关于数据仓库分层的一些概念。

什么是数据仓库分层

​         分层是数据仓库解决方案中,数据架构设计的一种数据逻辑结构 ,经过分层理念创建的数据仓库,它的可扩展性很是好,这样设计出来的模型架构,能够任意地增减、替换数据仓库中的各个组成部分。

数据仓库分层的缘由

​         一、用空间换时间,经过数据预处理提升效率,经过大量的预处理能够提高应用系统的用户体验(效率),可是数据仓库会存在大量冗余的数据.

​         二、加强可扩展性,方便之后业务的变动。若是不分层的话,当源业务系统的业务规则发生变化整个数据仓库须要重建,这样将会影响整个数据清洗过程,工做量巨大。

​         三、经过分层管理来实现分步完成工做,简化数据清洗的过程,使每一层处理逻辑变得更简单。由于把原来一步的工做分到了多个步骤去完成,至关于把一个复杂的工做拆成了多个简单的工做,把一个大的黑盒变成了一个白盒,每一层的处理逻辑都相对简单和容易理解,这样咱们比较容易保证每个步骤的正确性,当数据发生错误的时候,每每咱们只须要局部调整某个步骤便可。

数据仓库具体的分层

​         标准的数据仓库分层:ods(临时存储层),pdw(数据仓库层),mid(数据集市层),app(应用层)。

​                 ods:历史存储层,它和源系统数据是同构的,并且这一层数据粒度是最细的,这层的表分为两种,一种是存储当前须要加载的数据,一种是用于存储处理完后的数据。

                pdw:数据仓库层,它的数据是干净的数据,是一致的准确的,也就是清洗后的数据,它的数据通常都遵循数据库第三范式,数据粒度和ods的粒度相同,它会保存bi系统中全部历史数据

​                 mid:数据集市层,它是面向主题组织数据的,一般是星状和雪花状数据,从数据粒度来说,它是轻度汇总级别的数据,已经不存在明细的数据了,从广度来讲,它包含了全部业务数量。从分析角度讲,大概就是近几年

​                 app:应用层,数据粒度高度汇总,倒不必定涵盖全部业务数据,只是mid层数据的一个子集。

补充

        数据缓存层:用于存放接口方提供的原始数据的数据库层,此层的表结构与源数据保持基本一致,数据存放时间根据数据量大小和项目状况而定,若是数据量较大,能够只存近期数据,将历史数据进行备份。此层的目的在于数据的中转和备份。

        核心数据层:此层的数据在数据缓存层的基础上作了必定程度的整合,称之为数据集市,存储上还是关系模型。此层的目的在于进行必要的数据整合为下一步多维模型作准备。

        分析应用层:此层的数据为根据业务分析须要构造的多维模型数据。数据能够直接用于分析展示。

说明

        数据层次的划分不是固定不变的,能够根据工做当中实际项目的须要进行适当裁剪或者是添加。若是业务相对简单和独立,能够将核心数据层与分析应用层进行合并。另外,分析应用的数据能够来自多维模型的数据,也能够来自关系模型数据甚至原始数据。

相关文章
相关标签/搜索