第2章数据仓库开发模型在创建数据仓库之时,需要使用各种数据模型对数据仓库进行描述。数据仓库的开发人员依据这些数据模型,才能开发出一个满足用户需求的数据仓库。使开发人员能够将注意力集中在数据仓库开发的主要部分。模型有更好的适应性,更易于修改。当用户的需求改变时,仅对模型做出相应的变化就能反映这个改变。数据仓库开发模型2.1数据仓库开发模型2.2数据仓库概念模型2.3数据仓库逻辑模型2.4数据仓库的物理模型2.5数据仓库的元数据模型2.6数据仓库的粒度和聚集模型练习2.1数据仓库开发模型模型是对现实世界进行抽象的工具。在信息管理中需要将现实世界的事物及其有关特征转换为信息世界的数据才能对信息进行处理与管理,这就需要依靠数据模型作为这种转换的桥梁。这种转换一般需要经历从现实到概念模型,从概念模型到逻辑模型,从逻辑模型到物理模型的转换过程。现实世界概念世界逻辑世界计算机世界信用特性属性列(字段、数据项)张三个体实体记录客户整体同质总体表文件客户与产品整体间联系异质总体数据库数据仓库的设计就是在概念模型、逻辑模型和物理模型的依次转换过程中实现的。作为数据仓库的灵魂——元数据模型则自始至终伴随着数据仓库的开发、实施与使用。数据粒度和聚集模型也在数据仓库的创建中发挥着指导的作用,指导着数据仓库的具体实现。现实世界概念模型逻辑模型物理模型数据仓库元数据模型数据粒度和聚集模型2.2数据仓库概念模型2.2.1概念数据模型财务部门销售收入账应收账应付账成本账销售部门销售计划销售合同销售统计人事部门员工业绩记录员工技能情况员工薪酬表企业数据模型销售部门人事部门财务部门……………图2.3企业数据模型数据仓库的数据模型中不包含操作型的数据,数据仓库的数据模型只包含用户所感兴趣的分析数据、描述数据和细节数据。数据仓库的数据模型扩充了关键字结构,增加了时间属性作为关键字的一部分数据仓库的数据模型中还增加了一些由基本数据所导出的衍生数据,这些导出的衍生数据主要用于对企业的管理决策进行分析指标实体(事实实体)指标实体名维度实体名详细类别实体名维度实体详细类别实体(引用实体)2.2.2规范的数据模型第一范式、第二范式、第三范式数据仓库的反规范化处理数据仓库的数据普通数据库系统的数据长期的框架静态数据通常是汇总的特殊查询访问定期更新数据驱动短期的框架快速变化记录级的访问标准查询访问实时更新事件驱动2.2.3星型模型星型模型是最常用的数据仓库设计结构的实现模式。使数据仓库形成了一个集成系统,为用户提供分析服务对象。事实表维度表维度表维度表维度表维度表核心是事实表,围绕事实表的是维度表。通过事实表将各种不同的维度表连接起来,各个维度表都连接到中央事实表。2.2.4雪花模型雪花模型是对星型模型的扩展,每一个维度都可以向外连接到多个详细类别表。雪花模型对星型模型的维度表进一步标准化,对星型模型中的维度表进行了规范化处理。事实表维度表维度表维度表维度表维度表详细类别表详细类别表2.3数据仓库逻辑模型信息反馈贵宾卡账号姓名客户类型初次交易时间账号省市县街道邮政编码账号现金交易额信用交易额账号商品编号时间交易量账号最大信用额最近信用发生时间账号记录人反馈类型反馈时间账号服务种类时间服务费用颜色信用交易客户编号交易记录信用状况商品交易服务交易签字现金交易账号交易额信用额信用时间2.3.1事实表模型设计1.事实表(1)客户事实表客户基本情况表(账号Integer9,姓名Character12,出生地Character20,初次交易时间Date,……)。2.事实表中的事实特性事实表中一般包含两部分,一是由主键和外键所组成的键部分,另一是用户希望在数据仓库中所了解的数值指标。派生事实主要有两种,一是可以用同一事实表中其他事实计算得到,还有一类派生事实是非加法性事实。2.3.2维模型设计客户主题维度表模型时间维度表(年Date,月Date,日Date)。地点维度表(省Character20,市Character20,县Character20,街道Character20)。2.4数据仓库的物理模型2.4.1数据仓库物理模型的存储结构确定数据的存储结构并行存储结构——RAID(RedundantArrayofInexpensiveDisk,廉价冗余磁盘阵列)。·RAID·RAID1级。·RAID2级。·RAID3级。·RAID4级。·RAID5级。2.4.2数据仓库物理模型的索引构建位图索引女性索引客户性别客户所在地上海市索引北京市索引0男北京市011女江苏省001女北京市010男山东省001女北京市010男上海市100男江苏省001女上海市101女北京市010男浙江省001女广东省002.4.2数据仓库物理模型的索引构建上海市索引OR北京市索引=地区索引AND女性索引=最后索引01100000100111100000011111010000000101110111100000000102.4.2数据仓库物理模型的索引构建2.广义索引的构建3.连接索引连接索引Aagelevel_idtime_idyear_idmonth_idgeo_idprov_idcity_idcounty_idprodu_idagelevel_idtime_idgeo_idprodu_idamou_moneagelevel_idtime_idyear_idmonth_idgeo_idprov_idcity_idcounty_idprodu_idamou_moneagelevel_idtime_idgeo_idprodu_id全连接结果time_idgeo_id连接索引B2.4.3数据仓库物理模型的优化问题1.合并表:几个表的记录分散存放在几个物理块中时,多个表的存取和连接操作的代价会很大。2.建立数据序列:按照某一固定的顺序访问并处理一组数据记录。将数据按照处理顺序存放到连续的物理块中,形成数据序列。3.引入冗余:一些表的某些属性可能在许多地方都要用到,将这些属性复制到多个主题中,可以减少处理时存取表的个数。4.表的物理分割:每个主题中的各个属性存取频率是不同的。将一张表按各属性被存取的频率分成两个或多个表,将具有相似访问频率的数据组织在一起。5.生成派出数据:在原始数据的基础上进行总结或计算,生成派出数据,可以在应用中直接使用这些派出数据,减少I/O次数,免去计算或汇总步骤,在更高级别上建立了公用数据源,避免了不同用户重复计算可能产生的偏差。2.5数据仓库的元数据模型元数据静态元数据名称描述格式数据类型关系生成时间来源索引类别域业务规则2.5.1元数据的类型与组成元数据动态元数据入库时间更新周期数据质量统计信息状态处理存储位置存储大小引用处2.5.2元数据在数据仓库中的作用元数据描述了数据的结构、内容、键、索引等项内容。在数据仓库中,元数据定义了数据仓库中的许多对象——表、列、查询、商业规则或是数据仓库内部的数据转移。元数据是数据仓库的重要构件,是数据仓库的指示图(roadmap)。1.数据仓库的元数据重要性为数据仓库服务与DSS分析员及高层决策人员服务提供便利解决操作型环境和数据仓库的复杂关系数据仓库中数据的管理2.元数据在数据仓库开发期间的使用确认数据质量、同步化和刷新、映射3.元数据在数据源抽取中的作用资源领域的确定、跟踪历史数据结构变化的过程、属性到属性的映射、属性转换4.元数据在数据求精与重构工程上的作用数据的分割、概括与聚集、预算与推导、转换与再映像2.5.3元数据的收集1.数据源的元数据2.数据模型的元数据3.数据源与数据仓库映射的元数据4.数据仓库应用的元数据2.6数据仓库的粒度和聚集模型粒度可定义成数据仓库中数据细节的最低层次,如事务层次。这种数据层次是高度细节化的,这样就能使用户按所需的任何层次进行汇总。根据粒度的划分标准可以将数据划分为:详细数据、轻度总结、高度总结三级或更多级粒度。粒度的具体划分将直接影响到数据仓库中的数据量以及查询质量。粒度级别综合性数据细节低(如事务)高(如汇总)低高非常高中等到低2.6.1数据粒度的划分第一步,是估算数据仓库中将来要使用的数据行数和所需的直接存取存储设备数。每一个表的存储空间,应该是每一个表的数据存储空间和索引存储空间之和。一年数据五年数据数据量(行数)粒度划分策略数据量(行数)粒度划分策略10,000,0001,000,000100,00010,000双重粒度并仔细设计双重粒度仔细设计不考虑20,000,00010,000,0001,000,000100,000双重粒度并仔细设计双重粒度仔细设计不考虑2.6.2确定粒度的级别考虑因素:要接受的分析类型、可接受的数据最低粒度和能存储的数据量。粒度的层次定义越高,就越不能在该仓库中进行更细致的分析。在同一模式中使用多重粒度。如果存储资源有一定的限制,就只能采用较高粒度的数据粒度划分策略。粒度的确定实质上是业务决策分析、硬件、软件和数据仓库使用方法的一个折衷。数据粒度划分策略一定要保证数据的粒度确实能够满足用户的决策分析需要,这是数据粒度划分策略中最重要的一个准则。2.6.3数据仓库的聚集模型确定聚集数据主要是为了使用户获得更好的查询性能聚集模型设计时应该注意将聚集数据存储在其事实表中,并与其底层数据相区别。设计聚集模型时,首先需要考虑用户的使用要求。其次要考虑数据仓库的粒度模型和数据的统计分布情况。数据仓库的聚集模型的设计与数据仓库的粒度模型紧密相关建立聚集模型时还需要考虑作为聚集属性的数量因素2.6.4聚集模型的处理聚集事实表已经独立存在并且可以与基本事实表一同保存通过将当前加载数据添加到系统中的累积“桶”中将数据的聚集与数据仓库的加载过程组合为同一处理过程在将数据仓库数据加载以后,再进行聚集处理每次在加载数据仓库数据时,都需要对各种聚集进行计算和增加,及时保持聚集与基本数据的同步性2.6.5聚集模型的管理要根据使用情况删除不经常使用的聚集需要减少层次过于接近的聚集生成注意将聚集独立存储在自己的事实表中