建设数据仓库的八个步骤
1.系统分析,确定主题
操作出现的频率,即业务部门每隔多长时间做一次查询分析。
在系统中需要保存多久的数据,是一年、两年还是五年、十年。
用户查询数据的主要方式,如在时间维度上是按照自然年,还是财政年。
用户所能接受的响应时间是多长、是几秒钟,还是几小时。
由于双方在理解上的差异,确定问题和了解问题可能是一个需要多次往复的过程,信息部门的人员可能需要做一些原型演示给业务部门的人员看,以最终确定系统将要实现的功能确实是业务部门所需要的。
2.选择满足数据仓库系统要求的软件平台
厂商的背景和支持能力,能否提供全方位的技术支持和咨询服务。
数据库对大数据量(TB级)的支持能力。
数据库是否支持并行操作。
能否提供数据仓库的建模工具,是否支持对元数据的管理。
能否提供支持大数据量的数据加载、转换、传输工具(ETL)。
能否提供完整的决策支持工具集,满足数据仓库中各类用户的需要。
3.建立数据仓库的逻辑模型
(1)确定建立数据仓库逻辑模型的基本方法。
(2)基于主题视图,把主题视图中的数据定义转到逻辑数据模型中。
(3)识别主题之间的关系。
(4)分解多对多的关系。
(5)用范式理论检验逻辑数据模型。
(6)由用户审核逻辑数据模型。
4.逻辑数据模型转化为数据仓库数据模型
(1)删除非战略性数据:数据仓库模型中不需要包含逻辑数据模型中的全部数据项,某些用于操作处理的数据项要删除。
(2)增加时间主键:数据仓库中的数据一定是时间的快照,因此必须增加时间主键。
(3)增加派生数据:对于用户经常需要分析的数据,或者为了提高性能,可以增加派生数据。
(4)加入不同级别粒度的汇总数据:数据粒度代表数据细化程度,粒度越大,数据的汇总程度越高。粒度是数据仓库设计的一个重要因素,它直接影响到驻留在数据仓库中的数据量和可以执行的查询类型。显然,粒度级别越低,则支持的查询越多;反之,能支持的查询就有限。
5.数据仓库数据模型优化
·合并不同的数据表。
·通过增加汇总表避免数据的动态汇总。
·通过冗余字段减少表连接的数量,不要超过3~5个。
·用ID代码而不是描述信息作为键值。
·对数据表做分区。
6.数据清洗转换和传输
·加载方案必须能够支持访问不同的数据库和文件系统。
·数据的清洗、转换和传输必须满足时间要求,能够在规定的时间范围内完成。
·支持各种转换方法,各种转换方法可以构成一个工作流。
·支持增量加载,只把自上一次加载以来变化的数据加载到数据仓库。
7.开发数据仓库的分析应用
满足用户的全部分析功能要求。数据仓库中的用户包括了企业中各个业务部门,他们的业务不同,要求的分析功能也不同。如有的用户只是简单的分析报表,有些用户则要求做预测和趋势分析。
提供灵活的表现方式。分析的结果必须能够以直观、灵活的方式表现,支持复杂的图表。使用方式上,可以是客户机/服务器方式,也可以是浏览器方式。
事实上,没有一种工具能够满足数据仓库的全部分析功能需求,一个完整的数据仓库系统的功能可能是由多种工具来实现,因此必须考虑多个工具之间的接口和集成性问题,对于用户来说,希望看到的是一致的界面
8.数据仓库的管理
只重视数据仓库的建立,而忽视数据仓库的管理必然导致数据仓库项目的失败。数据仓库管理主要包括数据库管理和元数据管理。
·安全性管理。数据仓库中的用户只能访问到他的授权范围内的数据,数据在传输过程中的加密策略。
·数据仓库的备份和恢复。数据仓库的大小和备份的频率直接影响到备份策略。
·如何保证数据仓库系统的可用性,硬件还是软件方法。
·数据老化。设计数据仓库中数据的存放时间周期和对过期数据的老化方法,如历史数据只保存汇总数据,当年数据保存详细记录。
.然而,元数据管理贯穿于整个系统的建设过程中,元数据是描述数据的数据。在数据采集阶段,元数据主要包括下列信息:
·源数据的描述定义:类型、位置、结构。
·数据转换规则:编码规则、行业标准。
·目标数据仓库的模型描述:星型/雪花模型定义,维/事实结构定义。
·源数据到目标数据仓库的映射关系:函数/表达式定义。
·代码:生成转换程序、自动加载程序等。
在数据管理阶段,元数据主要包括下列信息:
·汇总数据的描述:汇总/聚合层次、物化视图结构定义。
·历史数据存储规则:位置、存储粒度。
·多维数据结构描述:立方体定义、维结构、度量值、钻取层次定义等。
在数据展现阶段,元数据主要包括以下信息:
·报表的描述:报表结构的定义。
·统计函数的描述:各类统计分析函数的定义。
结果输出的描述:图、表输出的定义。
元数据不但是独立存放,而且对用户是透明的,标准元数据之间可以互相转换。
数据仓库的数据建模大致分为四个阶段:
1. 业务建模,这部分建模工作,主要包含以下几个部分:
划分整个单位的业务,一般按照业务部门的划分,进行各个部分之间业务工作的界定,理清各业务部门之间的关系。
深入了解各个业务部门的内具体业务流程并将其程序化。
提出修改和改进业务部门工作流程的方法并程序化。
数据建模的范围界定,整个数据仓库项目的目标和阶段划分。
2. 领域概念建模,这部分得建模工作,主要包含以下几个部分:
抽取关键业务概念,并将之抽象化。
将业务概念分组,按照业务主线聚合类似的分组概念。
细化分组概念,理清分组概念内的业务流程并抽象化。
理清分组概念之间的关联,形成完整的领域概念模型。
3. 逻辑建模,这部分的建模工作,主要包含以下几个部分:
业务概念实体化,并考虑其具体的属性
事件实体化,并考虑其属性内容
说明实体化,并考虑其属性内容
4. 物理建模,这部分得建模工作,主要包含以下几个部分:
针对特定物理化平台,做出相应的技术调整
针对模型的性能考虑,对特定平台作出相应的调整
针对管理的需要,结合特定的平台,做出相应的调整
生成最后的执行脚本,并完善之。
数据仓库建模方法
1. 范式建模法(Third Normal Form,3NF)
一个符合第三范式的关系必须具有以下三个条件 :
每个属性值唯一,不具有多义性 ;
每个非主属性必须完全依赖于整个主键,而非主键的一部分 ;
每个非主属性不能依赖于其他关系中的属性,因为这样的话,这种属性应该归到其他关系中去。
2. 维度建模法
维度建模法,Kimball 最先提出这一概念。其最简单的描述就是,按照事实表,维表来构建数据仓库,数据集市。这种方法的最被人广泛知晓的名字就是星型模式(Star-schema)。
3. 实体建模法
虽然实体法粗看起来好像有一些抽象,其实理解起来很容易。即我们可以将任何一个业务过程划分成 3 个部分,实体,事件和说明,
实体:小明,学校 事件:上学 说明:开车去 小明开车去上学校
数仓仓库建模原则:
满足不同的用户需求
兼顾效率与数据粒度的需要
支持需求的变化
避免对业务运营系统造成影响
考虑未来的可扩展性
数据仓库中常见的模型有:范式建模,雪花模型,星型建模,事实星座模型.
星型模型是数据集市维度建模中推荐的建模方法。星型模型是以事实表为中心,所有的维度表直接连接在事实表上,像星星一样。星型模型的特点是数据组织直观,执行效率高。因为在数据集市的建设过程中,数据经过了预处理,比如按照维度进行了汇总,排序等等,数据量减少,执行的效率就比较高。
雪花模型也是维度建模中的一种选择。雪花模型的维度表可以拥有其他维度表的,虽然这种模型相比星型模型更规范一些,但是由于这种模型不太容易理解,维护成本比较高,而且性能方面需要关联多层维表,性能也比星型模型要低。所以一般不是很常用。例如地域维度表又有城市国家省份维度表。。
范式建模
第三范式建模是在数据库建模中使用的建模方法,特点是体系化,扩展性好,避免冗余,避免更新异常。所以,在数据仓库的EDW层建模中,我们也提倡使用第三范式建模。但是数据仓库的集成和反映历史变化的特征意味着数据量非常之大,表和表之间的关联效率比较低,所以有些时候完全规范的范式建模并不是最好的选择,通常我们会选择非规范化处理,增加一些冗余的字段来避免表之间关联的次数,这样会节约大量的时间。
雪花模型是介于星型模型和范式建模之间的。个人理解,范式建模和雪花模型的区别在于雪花模型在维度上也是有冗余的。例如雪花模型例图的地域维度不符合第三范式,因为地域维度中存在传递依赖,城市-省级-国家-地域
星座模型是星型模型延伸而来,星型模型是基于一张事实表的,而星座模型是基于多张事实表的,而且共享维度信息。 通过构建一致性维度,来建设星座模型,也是很好的选择。比如同一主题的细节表和汇总表共享维度,不同主题的事实表,可以通过在维度上互相补充来生成可以共享的维度