CSDN:
https://blog.csdn.net/qq_34635236?spm=1001.2101.3001.5343 毛凯民
什么叫数据仓库?
数据仓库是一个面向主题的(Subject Oriented)、集成的(Integrate)、相对稳定的(Non-Volatile)、反映历史变化(Time Variant)的数据集合,它用于支持企业或组织的决策分析处理。
数据仓库是为了便于多维分析和多角度展现而将数据按特定的模式进行存储所建立起来的关系型数据库,它的数据基于 OLTP 源系统。
首先,用于支持决策,面向分析型数据处理,它不同于企业现有的操作型数据库;
其次,对多个异构的数据源有效集成,集成后按照主题进行了重组,并包含历史数据,而且存放在数据仓库中的数据一般不再修改
数据仓库系统体系结构
数据源-> ETL -> 数据仓库存储与管理-> OLAP -> BI 工具
- 数据源:是数据仓库系统的数据源泉,通常包括企业各类信息,包括存放于 RDBMS 中的各种业务处理数据和各类文档数据;各类法律法规、市场信息和竞争对手的信息等等;
- 数据的存储与管理:数据的存储和管理是整个数据仓库的核心,是关键。数据仓库的组织管理方式决定了它有别于传统数据库,同时也决定了其对外部数据的表现形式。从数据仓库的技术特点着手分析,来决定采用什么产品和技术来建立数据仓库,然后针对现有各业务系统的数据,进行抽取、清理,并有效集成,按照主题进行组织。数据仓库按照数据的覆盖范围可以分为企业级数据仓库和部门级数据仓库(通常称为数据集市)。
- OLAP:对需要的数据进行有效集成,按多维模型予以组织,以便进行多角度、多层次的分析,并发现趋势。其具体实现可以分为:ROLAP(关系型在线分析处理)、MOLAP(多维在线分析处理)和 HOLAP(混合型线上分析处理)。ROLAP 基本数据和聚合数据均存放在 RDBMS 之中;MOLAP 基本数据和聚合数据均存放于多维数据库中;HOLAP 基本数据存放于 RDBMS 之中,聚合数据存放于多维数据库中。
- 前端工具:主要包括各查询工具、数据分析工具、数据挖掘工具、种报表工具以及各种基于数据仓库或数据集市的应用开发工具。
- 数据分析工具主要针对 OLAP 服务器。报表工具、数据挖掘工具主要针对数据仓库。
数据库和数据仓库有什么区别?
1.数据是面向事务处的,数据是由日常的业务产生的,常更新;数据仓库是面向主题的,数据来源于数据库或文件,经过一定的规则转换得到,用来分析的。
2.数据库一般是用来存储当前交易数据,数据仓库存储一般存储的是历史数据。
3.数据库的设计一般是符合三范式的,有最大的精确度和最小的冗余度,有利于数据的插入; 数据仓库的设计一般是星型的,有利于查询。
构建企业级数据仓库五步法?
一、 确定主题
即确定数据分析或前端展现的主题。主题要体现出某一方面的各分析角度(维度)和统计数值型数据(量度)之间的关系,确定主题时要综合考虑.
二、 确定量度
确定主题后,需要考虑分析的技术指标。它们一般为数据值型数据,其中有些度量值不可以汇总;些可以汇总起来,以便为分析者提供有用的信息。量度是要统计的指标,必须事先选择恰当,基于不同的量度可以进行复杂关键性指标(KPI)的设计和计算。
三、 确定事实数据粒度
确定量度之后,需要考虑该量度的汇总情况和不同维度下量度的聚合情况.例如在业务系统中数据最小记录到秒,而在将来分析需求中,时间只要精确到天就可以了,在 ETL 处理过程中,按天来汇总数据,些时数据仓库中量度的粒度就是”天”。如果不能确认将来的分析需求中是否要精确的秒,那么,我们要遵循”最小粒度原则”,在数据仓库中的事实表中保留每一秒的数据,从而在后续建立多维分析模型(CUBE)的时候,会对数据提前进行汇总,保障产生分析结果的效率。
四、 确定维度
维度是分析的各个角度.例:我们希望按照时间,或者按照地区,或者按照产品进行分析。那么这里的时间,地区,产品就是相应的维度。基于不同的维度,可以看到各个量度汇总的情况,也可以基于所有的维度进行交叉分析。
维度的层次(Hierarchy)和级别(Level)。例:在时间维度上,按照”度-季度-月”形成了一个层次,其中”年” ,”季度” ,”月”成为了这个层次的 3 个级别。我们可以将“产品大类-产品子类-产品”划为一个层次,其中包含“产品大类”、“产品子类”、“产品”三个级别。
我们可以将 3 个级别设置成一张数据表中的 3 个字段,比如时间维度;我们也可以使用三张表,分别保存产品大类,产品子类,产品三部分数据,比如产品维度。
建立维度表时要充分使用代理键.代理键是数据值型的 ID 号码(每张表的第一个字段),它唯一标识了第一维度成员。在聚合时,数值型字段的匹配和比较,join 效率高。同时代理键在缓慢变化维中,起到了对新数据与历史数据的标识作用。
五、 创建事实表
在确定好事实数据和维度后,将考虑加载事实表。业务系统的一笔生产,交易记录就是将要建立的事实表的原始数据.
我们的做法是将原始表与维度表进行关联,生成事实表。关联时有为空的数据时(数据源脏),需要使用外连接,连接后将各维度的代理键取出放于事实表中,事实表除了各维度代理键外,还有各度量数据,不应该存在描述性信息。
事实表中的记录条数据都比较多,要为其设置复合主键各蛇引,以实现数据的完整性和基于数据仓库的查询性能优化。
元数据:
描述数据及其环境的数据。两方面用途:
首先,元数据能提供基于用户的信息,如记录数据项的业务描述信息的元数据能帮助用户使用数据。
其次,元数据能支持系统对数据的管理和维护,如关于数据项存储方法的元数据能支持系统以最有效的方式访问数据。
元数据机制主要支持以下五类系统管理功能:
(1)描述哪些数据在数据仓库中;
(2)定义要进入数据仓库中的数据和从数据仓库中产生的数据;
(3)记录根据业务事件发生而随之进行的数据抽取工作时间安排;
(4)记录并检测系统数据一致性的要求和执行情况;
(5)衡量数据质量。
ODS: Operational Data Store
ODS 为企业提供即时的,操作型的,集成的数据集合,具有面向主题性,集成性,动态性,即时性,明细性等特点
ODS 作为数据库到数据仓库的一种过渡形式,与数据仓库在物理结构上不同,能提供高性能的响应时间,ODS 设计采用混合设计方式。
ODS 中的数据是”实时值”,而数据仓库的数据却是”历史值”,一般 ODS 中储存的数据不超过一个月,而数据仓库为 10 年或更多.
Data Mart
为了特定的应用目的或应用范围,而从数据仓库中独立出来的一部分数据,也可称为部门数据或主题数据(subjectarea)。在数据仓库的实施过程中往往可以从一个部门的数据集市着手,以后再用几个数据集市组成一个完整的数据仓库。需要注意的就是在实施不同的数据集市时,同一含义的字段定义一定要相容,这样再以后实施数据仓库时才不会造成大麻烦。
DDS(decision-support system)决策支持系统:
用于支持管理决策的系统。通常,DSS 包括以启发的方式对大量的数据单元进行的分析,通常不涉及数据更新。
什么叫 OLAP?
联机分析处理,On-Line Analysis Processing 即从数据仓库中抽取详细数据的一个子集并经过必要的聚集,存储到 OLAP 存储器中供前端分析工具读取。
OLAP 系统按照数据存储格式可以分为关系 OLAP(RelationalOLAP,简称 ROLAP)、多维 OLAP(MultidimensionalOLAP,简称 MOLAP)和混合型 OLAP(HybridOLAP,简称 HOLAP)三种类型。
ROLAP 将分析要用的多维数据存储在关系数据库中,并根据应用的需要有选择的定义一批实视图也存储在关系数据库中
MOLAP 将 OLAP 分析所要用到的多维数据物理上存储为多维数组的形式,形成“立方体”的结构。
HOLAP 能把 MOLAP 和 ROLAP 两种结构的优点有机的结合起来,能满足用户各种复杂的分析请求。
OLTP 与 OLAP 的区别
有哪几种模型设计方法?特点分别是什么?
范式建模法(Third Normal Form,3NF)
范式建模法其实是我们在构建数据模型常用的一个方法,该方法的主要由 Inmon 所提倡,主要解决关系型数据库得数据存储,利用的一种技术层面上的方法。目前,我们在关系型数据库中的建模方法,大部分采用的是三范式建模法。范式是数据库逻辑模型设计的基本理论,一个关系模型可以从第一范式到第五范式进行无损分解,这个过程也可称为规范化。在数据仓库的模型设计中目前一般采用第三范式,它有着严格的数学定义。从其表达的含义来看,一个符合第三范式的关系必须具有以下三个条件 : 每个属性值唯一,不具有多义性 ; 每个非主属性必须完全依赖于整个主键,而非主键的一部分 ; 每个非主属性不能依赖于其他关系中的属性,因为这样的话,这种属性应该归到其他关系中去。由于范式是基于整个关系型数据库的理论基础之上发展而来的,因此,本人在这里不多做介绍,有兴趣的读者可以通过阅读相应的材料来获得这方面的知识。
根据 Inmon 的观点,数据仓库模型得建设方法和业务系统的企业数据模型类似。在业务系统中,企业数据模型决定了数据的来源,而企业数据模型也分为两个层次,即主题域模型和逻辑模型。同样,主题域模型可以看成是业务模型的概念模型,而逻辑模型则是域模型在关系型数据库上的实例。
从业务数据模型转向数据仓库模型时,同样也需要有数据仓库的域模型,即概念模型,同时也存在域模型的逻辑模型。这里,业务模型中的数据模型和数据仓库的模型稍微有一些不同。主要区别在于:数据仓库的域模型应该包含企业数据模型的域模型之间的关系,以及各主题域定义。数据仓库的域模型的概念应该比业务系统的主题域模型范围更加广。在数据仓库的逻辑模型需要从业务系统的数据模型中的逻辑模型中抽象实体,实体的属性,实体的子类,以及实体的关系等。以笔者的观点来看,Inmon 的范式建模法的最大优点就是从关系型数据库的角度出发,结合了业务系统的数据模型,能够比较方便的实现数据仓库的建模。但其缺点也是明显的,由于建模方法限定在关系型数据库之上,在某些时候反而限制了整个数据仓库模型的灵活性,性能等,特别是考虑到数据仓库的底层数据向数据集市的数据进行汇总时,需要进行一定的变通才能满足相应的需求。因此,笔者建议读者们在实际的使用中,参考使用这一建模方式。
维度建模(dimensional modeling):
维度建模法,Kimball 最先提出这一概念。其最简单的描述就是,按照事实表,维表来构建数据仓库,数据集市。这种方法的最被人广泛知晓的名字就是星型模式(Star-schema)。
上图的这个架构中是典型的星型架构。星型模式之所以广泛被使用,在于针对各个维作了大量的预处理,如按照维进行预先的统计、分类、排序等。通过这些预处理,能够极大的提升数据仓库的处理能力。特别是针对 3NF 的建模方法,星型模式在性能上占据明显的优势。
雪花模型也是维度建模中的一种选择。雪花模型的维度表可以拥有其他维度表的,虽然这种模型相比星型模型更规范一些,但是由于这种模型不太容易理解,维护成本比较高,而且性能方面需要关联多层维表,性能也比星型模型要低。所以一般不是很常用。雪花模型如下图
同时,维度建模法的另外一个优点是,维度建模非常直观,紧紧围绕着业务模型,可以直观的反映出业务模型中的业务问题。不需要经过特别的抽象处理,即可以完成维度建模。这一点也是维度建模的优势。
但是,维度建模法的缺点也是非常明显的,由于在构建星型模式之前需要进行大量的数据预处理,因此会导致大量的数据处理工作。而且,当业务发生变化,需要重新进行维度的定义时,往往需要重新进行维度数据的预处理。而在这些与处理过程中,往往会导致大量的数据冗余。
另外一个维度建模法的缺点就是,如果只是依靠单纯的维度建模,不能保证数据来源的一致性和准确性,而且在数据仓库的底层,不是特别适用于维度建模的方法。
因此以笔者的观点看,维度建模的领域主要适用与数据集市层,它的最大的作用其实是为了解决数据仓库建模中的性能问题。维度建模很难能够提供一个完整地描述真实业务实体之间的复杂关系的抽象方法。
实体建模法
实体建模法并不是数据仓库建模中常见的一个方法,它来源于哲学的一个流派。从哲学的意义上说,客观世界应该是可以细分的,客观世界应该可以分成由一个个实体,以及实体与实体之间的关系组成。那么我们在数据仓库的建模过程中完全可以引入这个抽象的方法,将整个业务也可以划分成一个个的实体,而每个实体之间的关系,以及针对这些关系的说明就是我们数据建模需要做的工作。我们使用的抽象归纳方法其实很简单,任何业务可以看成 3 个部分:
- 实体,主要指领域模型中特定的概念主体,指发生业务关系的对象。
- 事件,主要指概念主体之间完成一次业务流程的过程,特指特定的业务过程。
- 说明,主要是针对实体和事件的特殊说明。由于实体建模法,能够很轻松的实现业务模型的划分,因此,在业务建模阶段和领域概念建模阶段,实体建模法有着广泛的应用。从笔者的经验来看,再没有现成的行业模型的情况下,我们可以采用实体建模的方法,和客户一起理清整个业务的模型,进行领域概念模型的划分,抽象出具体的业务概念,结合客户的使用特点,完全可以创建出一个符合自己需要的数据仓库模型来。
但是,实体建模法也有着自己先天的缺陷,由于实体说明法只是一种抽象客观世界的方法,因此,注定了该建模方法只能局限在业务建模和领域概念建模阶段。因此,到了逻辑建模阶段和物理建模阶段,则是范式建模和维度建模发挥长处的阶段。