一、数据仓库组成:
是整个数据仓库环境的核心,是数据存放的地方和提供对数据检索的支持。相对于操纵型数据库来说其突出的特点是对海量数据的支持和快速的检索技术。
元数据
元数据是描述数据仓库内数据的结构和建立方法的数据。可将其按用途的不同分为两类,技术元数据和商业元数据。
技术元数据是数据仓库的设计和管理人员用于开发和日常管理数据仓库使用的数据。
包括:数据源信息;数据转换的描述;数据仓库内对象和数据结构的定义;数据清理和数据更新时用的规则;源数据到目的数据的映射;用户访问权限,数据备份历史记录,数据导入历史记录,信息发布历史记录等。
商业元数据从商业业务的角度描述了数据仓库中的数据。包括:业务主题的描述,包含的数据、查询、报表;
元数据为访问数据仓库提供了一个信息目录(informationdirectory),这个目录全面描述了数据仓库中都有什么数据、这些数据怎么得到的、和怎么访问这些数据。
是数据仓库运行和维护的中心,数据仓库服务器利用他来存贮和更新数据,用户通过他来了解和访问数据。
数据集市
为了特定的应用目的或应用范围,而从数据仓库中独立出来的一部分数据,也可称为部门数据或主题数据(subjectarea)。
在数据仓库的实施过程中往往可以从一个部门的数据集市着手,以后再用几个数据集市组成一个完整的数据仓库。
需要注意的就是在实施不同的数据集市时,同一含义的字段定义一定要相容,这样在以后实施数据仓库时才不会造成大麻烦。
还包括:数据抽取工具,数据仓库管理,信息发布系统,访问工具
二、设计步骤
1)选择合适的主题(所要解决问题的领域)2)明确定义事实表
3)确定和确认维
4)选择事实表
5)计算并存储fact表中的衍生数据段
6)转换维表
7)数据库数据采集
8)根据需求刷新维表
9)确定查询优先级和查询模式。
三、数据仓库建模方法:
http://blog.csdn.net/nisjlvhudy/article/details/7895843
最常见的三种数据仓库建模体系分别为:规范化数据仓库,维度建模数据仓库,独立数据集市
四、星形模式/雪花模式/星座模式
星形模式:一个事实表和一组维表组成
a. 维表只和事实表关联,维表之间没有关联;
b. 每个维表的主码为单列,且该主码放置在事实表中,作为两边连接的外码;
c. 以事实表为核心,维表围绕核心呈星形分布;
雪花模式(Snowflake Schema):
是对星形模式的扩展,每个维表可继续向外连接多个子维表。相当于将星形模式的大维表拆分成小维表,满足了规范化设计。然而这种模式开发难度增大,查询效率低。
星座模式:
维度空间内的事实表不止一个
其它补充:
一、数据库与数据仓库区别 :
数据库:传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。
数据仓库:数据仓库系统的主要应用主要是OLAP(On-Line Analytical Processing),支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。
数据仓库与数据库的主要区别在于:
(1)数据库是面向事务的设计,数据仓库是面向主题设计的。
(2)数据库一般存储在线交易数据,数据仓库存储的一般是历史数据。
(3)数据库设计是尽量避免冗余,数据仓库在设计是有意引入冗余。
(4)数据库是为捕获数据而设计,数据仓库是为分析数据而设计。二、星型结构和雪花型结构的比较
(1) 数据优化雪花模型使用的是规范化数据,也就是说数据在数据库内部是组织好的,以便消除冗余,因此它能够有效地减少数据量。通过引用完整性,其业务层级和维度都将存储在数据模型之中相比较而言,星形模型实用的是反规范化数据。在星形模型中,维度直接指的是事实表,业务层级不会通过维度之间的参照完整性来部署
(2) 业务模型
主键是一个单独的唯一键(数据属性),为特殊数据所选择。外键(参考属性)仅仅是一个表中的字段,用来匹配其他纬度表中的住键。
在雪花模型中,数据模型的业务层级是由一个不同维度表主键-外键的关系来代表的。而在星形模型中,所有必要的维度表在事实表中都只拥有外键。
(3)性能
雪花模型在维度表、事实表之间的连接很多,因此性能方面会比较低。而星形模型的连接就少的多,因此性能方面比较好。
(4)ETL
雪花模型加载数据集市,因此ETL操作在设计上更加复杂,而且由于附属模型的限制,不能并行化。星形模型加载维度表,不需要再维度之间添加附属模型,因此ETL就相对简单,而且可以实现高度的并行化。
三、范式:
1. 第一范式(1NF)
一个表如果每一行都是唯一,并且任何行都没有包含多个值的列,则它满足1NF。
2. 第二范式(2NF)
一个表如果满足1NF,并且不包含部分函数依赖,则这个表满足2NF。
3. 第三范式(3NF)
一个表如果满足2NF,并且不包含传递函数依赖,则这个表满足3NF。
部分函数依赖(partial functional dependency)
是指关系的一列函数依赖于组合主码的一部分。显然这种依赖只有组合主码才存在。如本文样例数据中ModelID->ModelName,因为记录的复合主码(TravelCampaignID, ModelID)能确定记录的任何一列,ModelID只是该复合主码的一部分。
完全函数依赖(full key functional dependency)
是指复合主码函数确定关系中的其他列,并且复合主码的任意部分不能单独确定其他列。这个概念和上面的部分函数依赖显然是对立的。
传递函数依赖(transitive functional dependency)
是指非码列函数确定关系中的其他非码列。如本文样例数据中CampaignManangerID->CampaignManangerName显然就是一个传递函数依赖。
- 每个属性值唯一,不具有多义性 ;
- 每个非主属性必须完全依赖于整个主键,而非主键的一部分 ;
- 每个非主属性不能依赖于其他关系中的属性,因为这样的话,这种属性应该归到其他关系中去。
四、BI
所谓的BI科学的理解是一套完整的解决方案,其最终目的是提供快速准确的报表作为依据,从而帮助企业做出明智的业务决策。
而这套方案里可以有数据仓库也可以不用数据仓库。 数据仓库区别与数据库的主要特征就是数据仓库的设计主要面向主题而数据库主要面向事务,
也就是一个是OLAP一个是OLTP。在构建BI方案的时候并不一定需要数据仓库,在数据库的基础上搭建也行。
相比数据仓库,bi中还包含了主数据,数据挖掘,数据可视化,多维分析,标签分类等方面