第4章数据仓库设计与开发引例:沃尔玛的数据仓库沃尔玛利用NCR的Teradata可对7.5TB的数据进行存储,这些数据主要包括各个商店前端设备(POS、扫描仪)采集来的原始销售数据和各个商店的库存数。Teradata数据库里存有196亿条记录,每天要处理并更新2亿条记录,要对来自6000多个用户的4.8万条查询语句进行处理。销售数据、库存数据每天夜间从3000多个商店自动采集过来,并通过卫星线路传到总部的数据仓库里。沃尔玛数据仓库里最大的一张表格(Table)容量已超过300GB、存有50亿条记录,可容纳65个星期3000多个商店的销售数据,而每个商店有5万到8万个商品品种。利用数据仓库技术,沃尔玛对商品进行市场类组分析,即分析哪些商品顾客最有希望一起购买。思考:沃尔玛的数据仓库是怎样建成的?教学目标掌握数据仓库的设计和开发方法数据模型的设计维度设计粒度设计数据仓库的开发步骤本章内容4.1数据仓库的开发过程及特点1.数据仓库的开发过程2.数据仓库的开发特点4.2数据模型设计1.概念模型2.逻辑模型3.物理模型4.维度的设计4.3数据仓库的粒度设计4.4创建数据仓库的基本步骤1.数据仓库的开发过程按照生命周期发法可将数据仓库开发的全部过程分成三个阶段。(1)数据仓库规划分析阶段。(2)数据仓库设计实施阶段。(3)数据仓库的使用维护阶段。这三个阶段不是简单的循环往复,而是不断完善提高的过程。一般情况下,数据仓库系统都不可能在一个循环过程中完成,而是经过多次循环开发,每次循环都会给系统增加新的功能,这种循环的工作永远不会终结,数据仓库也就一直处于一个不断完善、不断提高的循环过程中。数据仓库开发的生命周期规划分析阶段规划与确定需求开发概念模型数据仓库评价数据仓库维护数据仓库应用数据装载预测试开发中间件确定数据抽取源数据库元数据设计设计体系结构开发逻辑模型数据仓库开发过程使用维护阶段设计实施阶段数据仓库开发的生命周期1)DW规划分析阶段调查、分析DW环境;完成DW的开发规划;确定DW开发需求。建立包括实体图、星型模型、雪花模型、元数据模型及数据源分析的主题域数据模型,并且根据主题域数据模型开发DW逻辑模型。数据仓库开发的生命周期2)DW设计实施阶段根据DW的逻辑模型设计DW体系结构;为DW中每个目标字段确定其在业务系统或外部数据源中的数据来源;开发或购买用于抽取、清洗、转换和聚合数据等中间件程序;将数据从数据源加载到DW,并且进行测试。数据仓库开发的生命周期3)DW使用维护阶段投入使用,且在使用中改进、维护DW;对DW进行评价,为下一个循环开发提供依据。2.数据仓库开发的特点1)数据仓库的开发是从数据出发的创建DW是在原有的数据库系统中的数据基础上进行的,我们称之为“数据驱动”。数据驱动设计方法的中心是利用数据模型有效的识别原有的数据库中的数据和DW中主题的数据。2)DW使用的需求不能在开发初期完全明确在数据仓库环境中,并不存在固定的且较确切的物流、数据流、和信息流,数据分析处理的需求更加灵活,更没有固定的模式,甚至用户自己也对所要进行的分析处理不能事先全部确定3)数据仓库的开发是一个不断循环的过程,是启发式的开发一方面DW的数据内容、结构、力度、分割以及其他物理设计应该根据用户所返回的信息不断的调整和完善,以提高系统的效率和性能;另一方面,通过不断理解用户的分析需求,不断的调整和完善,以求向用户提供更准确、更有效的决策信息。思考数据仓库的开发过程与数据库的开发过程有什么不同?为什么?4.2数据模型的设计现实世界数据仓库概念模型物理模型逻辑模型元数据模型数据粒度模型4.2数据模型的设计1.概念模型1)设计方法2)注意事项3)E-R图2.逻辑模型1)星形模型2)雪花模型3)星座模型4)维表的设计3.物理模型4.维度的设计1.概念模型设计1)设计方法在建模之前定义数据模型的边界,然后建立企业内不同群体的实体-联系模型,最后进行集成企业的总体概念模型。1.概念模型设计2)注意事项(1)在DW的数据模型中不包含操作性数据,只包含用户感兴趣的分析数据、描述数据和细节数据。例:在商品销售分析DW模型中,商品的销售数量、金额、企业利润等是分析数据;销售的时间、地点等使用户感兴趣的描述数据;销售产品的详细情况、购买商品的客户详细情况等是细节数据。(2)数据的历史变迁性。DW的数据模型增加时间属性作为码的一部分(3)数据的概括性。DW的数据模型中增加了一些衍生数据,专门用于分析的DW系统需要一些概括性的数据,这些数据在业务处理系统的数据模型中是不需要的。例:在销售管理的业务系统中的数据模型中,通常只需要记录当前细数据,而在数据仓库的数据模型中,需要保存一些统计、累加而来的综合数据。1.概念模型设计3)E-R图的描述方法(1)矩形。矩形表示实体,在数据仓库中表示主题,在矩形框内写上主题名。(2)椭圆形。椭圆形表示主题的属性,并用无向边把主题与其属性连接起来。(3)菱形。菱形表示主题之间的联系,菱形框内写上联系的名字。用无向边把菱形分别与有关的主题连接,在无向边旁标上联系的类型。若主题之间的联系也具有属性,则把属性和菱形也用无向边连接上。概念模型设计某商场的商品、顾客和供应商之间的概念模型的E-R图供应商商品顾客供应购买日期供应商编号供应商固有信息供应商品信息商品固有信息商品库存信息商品销售信息商品采购信息商品号日期日期顾客号顾客购物信息顾客固有信息2.逻辑模型设计关系数据库一般采用二维数据表的形式来表示数据,一个维是行,另一个维是列,行和列的交叉处就是数据元素。关系数据的基础是关系数据库模型,通过标准的SQL语言来加以实现。数据仓库是多维数据库,它扩展了关系数据库模型,以星形架构为主要结构方式的,并在它的基础上,扩展出理论雪花形架构和数据星座等方式,但不管是哪一种架构,维度表、事实表和事实表中的量度都是必不可少的组成要素。1)星形模型星形模型是最常用的数据仓库设计结构的实现模式。星形模式通过使用一个包含主题的事实表和多个维度表来支持各种决策查询。星形模型可以采用关系型数据库结构,模型的核心是事实表,围绕事实表的是维度表。通过事实表将各种不同的维度表连接起来,各个维度表都连接到中央事实表。每一个维度表通过一个主键与事实表进行连接。逻辑模型设计——星形模型逻辑模型设计——星形模型事实表主要包含了描述特定商业事件的数据,即某些特定商业事件的度量值。一般情况下,事实表中的数据不允许修改,新的数据只是简单地添加进事实表中,维度表主要包含了存储在事实表中数据的特征数据。每一个维度表利用维度关键字通过事实表中的外键约束于事实表中的某一行要求事实表中的外键不能为空,这与一般数据库中外键允许为空是不同的。逻辑模型设计——星形模型逻辑模型与实体-关系建模之间的关系实体-联系图是代表企业中每一个可能的业务过程,一个实体-联系图可以拆分成多个维表、事实表构成的逻辑模型。将E-R图转换成维度建模时的步骤是:(1)将E-R图分成独立的业务处理,然后对每个业务处理单独建模。(2)在E-R图中,对包含数字型事实,将他们设计成各个事实表。(3)将剩下的实体进行非规范化处理,设计成维表。星形模型基本设计技术(1)正确区分事实、属性和维度。维度模型需要对事实和属性进行区分,业务层的很多事实都是数值型的,特别是该数值是浮点数时,他很可能是一个事实,而不是属性。例如“标准价格”,好像是产品维度的一个属性,似乎是事先一致的常量,但每年对标准价格进行一、两次调整,因此应该设计成事实。属性通常指文本字段,例如产品描述。维度是类似于文本形式的属性组合,固定的数值型属性应放在维表中。例如,零售数据仓库中,至少应有一个产品维度,一个商店维度,一个客户维,一个时间维,一个促销维。星形模型基本设计技术(2)事实表的设计方法。事实表是数据仓库中最大的表,在设计时,一定注意使事实表尽可能的小,因为过大的事实表在表的处理、备份和恢复、用户查询等方面要用较长的时间。具体方法主要有:减少列的数量;降低每列的大小;把历史数据存档;例如,零售营销事实表设计如下:日期关键字产品关键字商场关键字促销关键字POS事务编号销售量销售额成本金额毛利润金额星形模型基本设计技术(3)维表的设计。维表的属性必须具有以下特征:可用文字描述;离散值;有规定的约束;在分析时可提供行标题。时间维在数据仓库中占有特定位置,建议使用时间维度。例:零售业营销分析的星型模型图。星形模型基本设计技术零售业营销分析的星型模型图产品维客户维促销维零售营销时间维商品维时间键产品键商店键客户键促销键销售额成本金额产品键描述品牌类别包装类型尺寸客户键客户姓名购买介绍信用概况统计类型地址日期星期几星期数月份商店键商店标识号商店名称地址地区楼层类型促销键待定促销属性2)雪花模型雪花模型是对星形模型的扩展,每一个维度都可以向外连接多个详细类别表。在这种模式中,维度表除了具有星形模型中维度表的功能外,还连接对事实表进行详细描述的详细类别表,详细类别表通过对事实表在有关维上的详细描述达到了缩小事实表和提高查询效率的目的。逻辑模型设计——雪花模型雪花模型架构示意图逻辑模型设计——雪花模型在该模型中,将地理层次国家、区域和分区域嵌入到销售员维度,这样,公司的管理者想按照国家、区域、分区域和分区域内的销售员的层次关系来查看公司的销售情况。销售数据仓库逻辑模型(雪花型)时间维表交易日期日周月季年顾客维表顾客编号顾客名称顾客备注门店维表门店编号地区编号门店名称地区维表地区编号地区名称地区备注商品维表商品编号细分编号商品名称颜色销售事实表交易日期商品编号客户编号门店编号地区编号销售数量销售金额累计数量累计金额其他事实数据商品细分表细分编号小分类编号细分名称商品小分类表小分类编号中分类编号小分类名称商品中分类表中分类编号大分类编号中分类名称商品小分类表大分类编号大分类名称大分类备注3)星座模型一个复杂的商业智能应用往往会在数据仓库中存放多个事实表,这时就会出现多个事实表共享某一个或多个维表的情况,这就是事实星座,也称为星系模型(galaxyschema)。数据仓库由于是企业范围的,能对多个相关的主题建模,所以在设计其数据构成时一般采用星系模式。而数据集市是部门级的,具有选定的主题,可以采用星形或雪花模型。4)维度的设计维是人们观察客观世界的角度,是一种高层次的类型划分。如:对客户、产品、服务、提供商、地点、渠道和事件发生的时间维表是由维主键和维属性组成的一般情况下,在每次抽样时,如果数值数据字段的度量都改变,那么它就是事实,如果它是某种东西的离散值描述,并几乎保持为常数,那么它就是维属性。例如,商品的价格是维表的属性,销售量是事实。维表举例YearIDQtrIDMonthIDWeekIDDayID时间维Year表YearIDQtr表QtrIDMonth表MonthIDWeek表WeekIDDay表DayIDTimeIDFiscalYearIDFiscalQtrIDFiscalMonthIDFiscalWeekIDFiscalDayIDSeasonIDWeekendFlagHolidayFlag财务时间维时间维度及其层次关系财务时间维度维表举例GeoIDCountryIDRegionIDSubRegionID地理维国家表CountryID区域表RegionID分区域表SubRegionIDOrgIDParent_CompIDProv_BureauIDCity_BureauIDServ_BureauID机构维总公司表Parent_CompID省公司表Prov_BureauID城市分公司表City_BureauID业务部门表Serv_BureauID地理维度层次机构维度层次维表举例客户维度分类CustomerIDSexIDEduIDAgeIDMarriageID客户维客户性别维表SexID客户教育程度维表EduID客户年龄层次维表C