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

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

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

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

​ 数据相对稳定的:数据装入后一般只是进行查询操作,没有传统数据库的增删改操作。

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

数据仓库与传统数据库的区别:
  传统数据库 数据仓库
特征 用于操作处理,面向OLTP 用于信息处理,面向OLAP
用户 用户:DBA、开发。用户规模:数百或数亿 用户:经理、主管、分析人员。用户规模:数百
功能 日常操作 长期信息需求、决策支持
DB设计 基于ER模型,面向应用 星形/雪花模型,面向主题
数据 当前的、最新的 历史的、跨时间维护
说明: 数据处理大致可以分成两大类:联机事务处理OLTP(on-line transaction processing)、联机分析处理OLAP(On-Line Analytical Processing)。

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

数据仓库建模的意义:
如果把数据看作图书馆里的书,我们希望看到它们在书架上分门别类地放置;如果把数据看作城市的建筑,我们希望城市规划布局合理;如果把数据看作电脑文件和文件夹,我们希望按照自己的习惯有很好的文件夹组织方式,而不是糟糕混乱的桌面,经常为找一个文件而不知所措。

数据模型就是数据组织和存储方法,它强调从业务、数据存取和使用角度合理存储数据。Linux的创始人Torvalds有一段关于“什么才是优秀程序员”的话:“烂程序员关心的是代码,好程序员关心的是数据结构和它们之间的关系”,最能够说明数据模型的重要性。

数据仓库分层的原因
​ 1、用空间换时间,通过数据预处理提高效率,通过大量的预处理可以提升应用系统的用户体验(效率),但是数据仓库会存在大量冗余的数据.

​ 2、增强可扩展性,方便以后业务的变更。如果不分层的话,当源业务系统的业务规则发生变化整个数据仓库需要重建,这样将会影响整个数据清洗过程,工作量巨大。

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