1、2022-8-17第3章数据仓库设计与开发1第第3章数据仓库设计与开章数据仓库设计与开发发1第3章数据仓库设计与开发1教学目标 掌握数据仓库的设计和开发方法,包括数据模型的设计、粒度、维度设计以及数据仓库的开发步骤。第3章数据仓库设计与开发1教学要求知识要点能力要求相关知识点数据仓库的开发过程与方法(1)掌握数据仓库的开发过程(2)掌握数据仓库设计的内容与步骤(1)数据仓库开发的3个阶段(2)数据驱动的设计(3)数据模型设计的重点数据模型设计(1)掌握概念模型的设计(2)掌握逻辑模型的设计(3)掌握物理模型的设计(4)掌握粒度的设计原则(1)面向主题的E-R模型(2)星型模型和雪花模型(3)事
2、实表与维表(4)粒度数据仓库的构建掌握数据仓库构建的步骤(1)运行环境(2)实现技术(3)ETL(4)数据仓库的维护第3章数据仓库设计与开发1 引例:沃尔玛的数据仓库 沃尔玛利用NCR的Teradata可对7.5TB的数据进行存储,这些数据主要包括各个商店前端设备(POS、扫描仪)采集来的原始销售数据和各个商店的库存数。Teradata数据库里存有196亿条记录,每天要处理并更新2亿条记录,要对来自6000多个用户的4.8万条查询语句进行处理。销售数据、库存数据每天夜间从3000多个商店自动采集过来,并通过卫星线路传到总部的数据仓库里。沃尔玛数据仓库里最大的一张表格(Table)容量已超过30
3、0GB、存有50亿条记录,可容纳65个星期3000多个商店的销售数据,而每个商店有5万到8万个商品品种。利用数据仓库技术,沃尔玛对商品进行市场类组分析,即分析哪些商品顾客最有希望一起购买。第3章数据仓库设计与开发1思考:请你估计一下沃尔玛的数据仓库中一年的数据量有多大?沃尔玛的数据仓库是怎样建成的?第3章数据仓库设计与开发1本章内容 数据仓库的开发过程及特点 数据模型设计 数据仓库的粒度设计 创建数据仓库的基本步骤 第3章数据仓库设计与开发1数据仓库的开发过程及特点 按照生命周期发法可将数据仓库开发的全部过程分成三个阶段。(1)数据仓库规划分析阶段。(2)数据仓库设计实施阶段。(3)数据仓库的
4、使用维护阶段。这三个阶段不是简单的循环往复,而是不断完善提高的过程。一般情况下,数据仓库系统都不可能在一个循环过程中完成,而是经过多次循环开发,每次循环都会给系统增加新的功能,这种循环的工作永远不会终结,数据仓库也就一直处于一个不断完善、不断提高的循环过程中。第3章数据仓库设计与开发1数据仓库开发的生命周期 第3章数据仓库设计与开发1数据仓库开发的生命周期 1DW规划分析阶段 调查、分析DW环境,完成DW的开发规划,却定DW开发需求。建立包括实体图、星型模型、雪花模型、元数据模型及数据源分析的主题域数据模型,并且根据主题域数据模型开发DW逻辑模型。第3章数据仓库设计与开发1数据仓库开发的生命周
5、期2DW设计实施阶段 根据DW的逻辑模型设计DW体系结构;设计DW与物理数据库,用物理数据库元数据装载面向最终用户的元数据库;为DW中每个目标字段确定他在业务系统或外部数据源中的数据来源;开发或购买用于抽取、清洗、转换和聚合数据等中间件程序;将数据从数据源加载到DW,并且进行测试。第3章数据仓库设计与开发1数据仓库开发的生命周期3DW使用维护阶段 DW投入使用,且在使用中改进、维护DW;对DW进行评价,为下一个循环开发提供依据。第3章数据仓库设计与开发1DW开发的特点1数据仓库的开发是从数据出发的创建DW是在原有的数据库系统中的数据基础上进行的,我们称之为“数据驱动”。数据驱动设计方法的中心是
6、利用数据模型有效的识别原有的数据库中的数据和DW中主题的数据“共同性”。2DW使用的需求不能在开发初期完全明确在数据仓库环境中,并不存在固定的且较确切的物流、数据流、和信息流,数据分析处理的需求更加灵活,更没有固定的模式,甚至用户自己也对所要进行的分析处理不能事先全部确定3数据仓库的开发是一个不断循环的过程,是启发式的开发DW的开发是一个动态反馈和循环的过程,一方面DW的数据内容、结构、力度、分割以及其他物理设计应该根据用户所返回的信息不断的调整和完善,以提高系统的效率和性能;另一方面,通过不断理解用户的分析需求,不断的调整和完善,以求向用户提供更准确、更有效的决策信息。第3章数据仓库设计与开
7、发1思考 数据仓库的开发过程与数据库的开发过程有什么不同?为什么?第3章数据仓库设计与开发1数据仓库设计的主要内容 第3章数据仓库设计与开发1数据模型设计 DW数据模型具有如下特点。(1)去掉纯操作性数据。(2)给键码增加时间因素。(3)合适之处增加导出数据。(4)把OLTP系统中数据关系变为人工关系。DW数据模型源于OLTP系统数据模型以及企业数据模型 第3章数据仓库设计与开发1概念模型设计 1.设计方法在建模之前定义数据模型的边界,然后建立企业内不同群体的实体-联系模型,最后进行集成企业的总体概念模型。第3章数据仓库设计与开发1概念模型设计2.注意事项(1)在DW的数据模型中不包含操作性数
8、据,只包含用户感兴趣的分析数据、描述数据和细节数据。例:在商品销售分析DW模型中,商品的销售数量、金额、企业利润等是分析数据;销售的时间、地点等使用户感兴趣的描述数据;销售产品的详细情况、购买商品的客户详细情况等是细节数据。(2)数据的历史变迁性。DW的数据模型增加时间属性作为码的一部分(3)数据的概括性。DW的数据模型中增加了一些衍生数据,专门用于分析的DW系统需要一些概括性的数据,这些数据在业务处理系统的数据模型中是不需要的。例如,在销售管理的业务系统中的数据模型中,通常只需要记录当前细数据,而在数据仓库的数据模型中,需要保存一些统计、累加而来的综合数据。第3章数据仓库设计与开发1概念模型
9、设计3E-R图的描述方法(1)矩形。矩形表示实体,在数据仓库中表示主题,在矩形框内写上主题名。(2)椭圆形。椭圆形表示主题的属性,并用无向边把主题与其属性连接起来。(3)菱形。菱形表示主题之间的联系,菱形框内写上联系的名字。用无向边把菱形分别与有关的主题连接,在无向边旁标上联系的类型。若主题之间的联系也具有属性,则把属性和菱形也用无向边连接上。第3章数据仓库设计与开发1概念模型设计 某商场的商品、顾客和供应商之间的概念模型的E-R图 第3章数据仓库设计与开发1 逻辑模型设计 关系数据库一般采用二维数据表的形式来表示数据,一个维是行,另一个维是列,行和列的交叉处就是数据元素。关系数据的基础是关系
10、数据库模型,通过标准的SQL语言来加以实现。数据仓库是多维数据库,它扩展了关系数据库模型,以星形架构为主要结构方式的,并在它的基础上,扩展出理论雪花形架构和数据星座等方式,但不管是哪一种架构,维度表、事实表和事实表中的量度都是必不可少的组成要素。第3章数据仓库设计与开发1逻辑模型设计星形模型 星形模型是最常用的数据仓库设计结构的实现模式,它使数据仓库形成了一个集成系统,为最终用户提供报表服务,为用户提供分析服务对象。星形模式通过使用一个包含主题的事实表和多个包含事实的非正规化描述的维度表来支持各种决策查询。星形模型可以采用关系型数据库结构,模型的核心是事实表,围绕事实表的是维度表。通过事实表将
11、各种不同的维度表连接起来,各个维度表都连接到中央事实表。维度表中的对象通过事实表与另一维度表中的对象相关联,这样就能建立各个维度表对象之间的联系。每一个维度表通过一个主键与事实表进行连接。第3章数据仓库设计与开发1逻辑模型设计星形模型第3章数据仓库设计与开发1逻辑模型设计星形模型 事实表主要包含了描述特定商业事件的数据,即某些特定商业事件的度量值。一般情况下,事实表中的数据不允许修改,新的数据只是简单地添加进事实表中,维度表主要包含了存储在事实表中数据的特征数据。每一个维度表利用维度关键字通过事实表中的外键约束于事实表中的某一行,实现与事实表的关联,这就要求事实表中的外键不能为空,这与一般数据
12、库中外键允许为空是不同的。这种结构使用户能够很容易地从维度表中的数据分析开始,获得维度关键字,以便连接到中心的事实表,进行查询。第3章数据仓库设计与开发1逻辑模型设计星形模型 星形模型虽然是一个关系模型,但是它不是一个规范化的模型。在星形模式中,维度表被故意地非规范化了,这是星形模式与OLTP系统中关系模式的基本区别。使用星形模式主要有两方面的原因:一是可以提高查询的效率。采用星形模式设计的数据仓库的优点是由于数据的组织已经过预处理,主要数据都在庞大的事实表中,所以只要扫描事实表就可以进行查询,而不必把多个庞大的表联接起来,查询访问效率较高,同时由于维表一般都很小,甚至可以放在高速缓存中,与事
13、实表进行连接时其速度较快,便于用户理解;二是对于非计算机专业的用户而言,星形模式比较直观,通过分析星形模式,很容易组合出各种查询。第3章数据仓库设计与开发1逻辑模型设计星形模型 逻辑模型与实体-关系建模之间的关系 实体-联系图是代表企业中每一个可能的业务过程,一个实体-联系图可以拆分成多个维表、事实表构成的逻辑模型。将E-R图转换成维度建模时的步骤是:(1)将E-R图分成独立的业务处理,然后对每个业务处理单独建模。(2)在E-R图中,对包含数字型事实和可加性非码事实的实体,选择其中的多对多关系,并且将他们设计成各个事实表。(3)将剩下的实体进行非规范化处理,设计成为表。第3章数据仓库设计与开发
14、1星形模型基本设计技术(1)正确区分事实、属性和维度。维度模型需要对事实和属性进行区分,业务层的很多事实都是数值型的,特别是该数值是浮点数时,他很可能是一个事实,而不是属性。例如“标准价格”,好像是产品维度的一个属性,似乎是事先一致的常量,但每年对标准价格进行一、两次调整,因此应该设计成事实。属性通常指文本字段,例如产品描述。维度是类似于文本形式的属性组合,固定的数值型属性应放在维表中。例如,零售数据仓库中,至少应有一个产品维度,一个商店维度,一个客户维,一个时间维,一个促销维。第3章数据仓库设计与开发1星形模型基本设计技术(2)事实表的设计方法。事实表是数据仓库中最大的表,在设计时,一定注意
15、使事实表尽可能的小,因为过大的事实表在表的处理、备份和恢复、用户查询等方面要用较长的时间。具体方法主要有:减少列的数量;降低每列的大小;把历史数据存档;对行进行分割。例如,零售营销事实表设计如下:第3章数据仓库设计与开发1星形模型基本设计技术(3)维表的设计。维表的属性必须具有以下特征:可用文字描述;离散值;有规定的约束;在分析时可提供行标题。时间维在数据仓库中占有特定位置,建议使用时间维度。图3.6是零售业营销分析的星型模型图。第3章数据仓库设计与开发1星形模型基本设计技术 零售业营销分析的星型模型图第3章数据仓库设计与开发1逻辑模型设计雪花模型 雪花模型是对星形模型的扩展,每一个维度都可以
16、向外连接多个详细类别表。在这种模式中,维度表除了具有星形模型中维度表的功能外,还连接对事实表进行详细描述的详细类别表,详细类别表通过对事实表在有关维上的详细描述达到了缩小事实表和提高查询效率的目的。第3章数据仓库设计与开发1逻辑模型设计雪花模型 雪花模型架构示意图 第3章数据仓库设计与开发1逻辑模型设计雪花模型 雪花模型对星形模型的维度表进一步标准化,对星形模型中的维度表进行了规范化处理。雪花模型的维度表中存储了正规化的数据,这种结构通过把多个较小的标准化表(而不是星形模型中的大的非标准化表)联合在一起来改善查询性能。由于采取了标准化及维的低粒度,雪花模型提高了数据仓库应用的灵活性。第3章数据
17、仓库设计与开发1逻辑模型设计雪花模型 在该模型中,将地理层次国家、区域和分区域嵌入到销售员维度,这样,公司的管理者想按照国家、区域、分区域和分区域内的销售员的层次关系来查看公司的销售情况。第3章数据仓库设计与开发1销售数据仓库逻辑模型(雪花型)第3章数据仓库设计与开发1逻辑模型设计星座模型 一个复杂的商业智能应用往往会在数据仓库中存放多个事实表,这时就会出现多个事实表共享某一个或多个维表的情况,这就是事实星座,也称为星系模型(galaxy schema)。数据仓库由于是企业范围的,能对多个相关的主题建模,所以在设计其数据构成时一般采用星系模式。而数据集市是部门级的,具有选定的主题,可以采用星形
18、或雪花模型。第3章数据仓库设计与开发1逻辑模型设计维度的设计 维是人们观察客观世界的角度,是一种高层次的类型划分。如:对客户、产品、服务、提供商、地点、渠道和事件发生的时间 维表是由维主键和维属性组成的 一般情况下,在每次抽样时,如果数值数据字段的度量都改变,那么它就是事实,如果它是某种东西的离散值描述,并几乎保持为常数,那么它就是维属性。例如,商品的价格是为表的属性,销售量是事实。第3章数据仓库设计与开发1维表举例图3.10 时间维度及其层次关系 图3.11 财务时间维度第3章数据仓库设计与开发1维表举例图3.12 地理维度层次图3.13 机构维度层次第3章数据仓库设计与开发1维表举例客户维
19、度分类 第3章数据仓库设计与开发1物理模型设计 数据仓库的物理数据模型就是逻辑数据模型在数据仓库中的实现,如:物理存取方式数据存储结构数据存放位置以及存储分配等 物理数据模型设计实现时,所考虑的主要因素有:IO存取时间空间利用率和维护代价 在进行数据仓库的物理数据模型设计时,考虑到数据仓库的数据量大但是操作单一的特点,可采取其他的一些提高数据仓库性能的技术,如:合并表、建立数据序列、引入冗余、进一步细分数据、生成导出数据、建立广义索引等。第3章数据仓库设计与开发1物理模型设计设计存储结构 在物理设计时,常常要按数据的重要性、使用频率及对反应时间的要求进行分类,并将不同类型的数据分别存储在不同的
20、存储设备中。重要性高、经常存取并对反应时间要求高的数据存放在高速存储设备上;存取频率低或对存取响应时间要求低的数据则可以存放在低速存储设备上。在设计时还要考虑数据在特定存储介质上的布局。第3章数据仓库设计与开发1物理模型设计设计存储结构 设计数据的布局时要注意遵循以下原则。(1)不要把经常需要连接的几张表放在同一存储设备上,这样可以利用存储设备的并行操作功能加快数据查询的速度。(2)如果几台服务器之间的连接会造成严重的网络业务量的问题,则要考虑服务器复制表格,因为不同服务器之间的数据连接会给网络带来沉重的数据传输负担。(3)考虑把整个企业共享的细节数据放在主机或其他集中式服务器上,提高这些共享
21、数据的使用速度。(4)不要把表格和它们的索引放在同一设备上。一般可以将索引存放在高速存储设备上,而表格则存放在一般存储设备上,以加快数据的查询速度。第3章数据仓库设计与开发1物理模型设计设计索引策略 数据仓库的数据量很大,因而需要对数据的存取路径进行仔细地设计和选择。由于数据仓库的数据一般很少更新,所以可以设计索引结构来提高数据存取效率。数据仓库中的表通常要比联机事务处理系统(OLTP)中的表建立更多的索引,表中应用的最大索引数应与表格的规模成正比。数据仓库是个只读的环境,建立索引可以取得灵活性,对性能极为有利。但是,表若有很多索引,那么数据加载时间就会延长,因此索引的建立需要进行综合的考虑。
22、一般都是按主关键字和大多数外部关键字建立索引,通常不要添加很多的其他索引。第3章数据仓库设计与开发1物理模型设计设计存储策略 确定数据的存储位置和存储策略,以提高系统的I/O效率。几种常见的存储优化方法。表的归并引入冗余 其他方法 第3章数据仓库设计与开发1数据仓库的粒度设计 数据仓库的性能和存储空间是一对矛盾。如果粒度设计得很小,则事实表将不得不记录所有的细节,储存数据所需要的空间将会急剧的膨胀;若设计的粒度很大,虽然由于事实表体积大而带来的诸多问题能够得到一定程度的缓解,但决策者不能观察细节数据。第3章数据仓库设计与开发1粒度设计的三个步骤 粗略估计 确定双重还是单一粒度 确定粒度的级别
23、第3章数据仓库设计与开发1粒度设计第一步粗略估算(1)确定数据仓库中将要创建的所有表,然后估计每张表中行的大小(2)估计一年内表中的最少行数和最多行数。估计完一年内数据仓库中数据单位的数量(用上下限推测的方法)用同样的方法对5年内的数据进行估计。计算一下索引数据所占的空间。对每张表(对表中的每个键码)确定键码的长度和原始表中每条数据是否存在键码。(3)将各表中行数可能的最大值和最小值分别乘以数据的最大长度和最小长度。另外,还要将索引项的数目与键码的长度的乘积累加到总的数据量中去。第3章数据仓库设计与开发1粒度设计第二步确定双重或单一的粒度 将数据仓库环境中总的行数和下表中所示的表格进行比较,确
24、定双重或单一的粒度。1年数据5年数据数据量(行数)粒度划分策略数据量(行数)粒度划分策略10 000 000双重粒度并仔细设计20 000 000双重粒度并仔细设计1 000 000双重粒度10 000 000双重粒度100 000仔细设计1 000 000仔细设计10 000不考虑100 000不考虑第3章数据仓库设计与开发1粒度设计第三步确定粒度的级别 例如,对于银行环境由于其信息量较大,设计成双重粒度级。在DW中,轻度综合级存十年的每月汇总的账户信息,当前细节级数据存30天。在这个级别并不是把OLTP系统中所有的字段都送到DW中,只有对分析有价值的信息字段才被存储。30天之后,把这部分细
25、节数据送到磁带上,腾出的空间存放下一个30天的当前细节级数据。第3章数据仓库设计与开发1粒度设计原则 对于业务量大,分析要求比较高的情况下,最佳解决办法则是采用多重粒度的形式。而针对具体的某个事实的粒度而言,应当采用“最小粒度原则”,即将量度的粒度设置到最小。第3章数据仓库设计与开发1创建数据仓库的基本步骤(1)收集运营环境文档。(2)选择数据仓库的实现技术。(3)设计数据仓库模型。(4)创建数据准备区。(5)创建数据仓库数据库。(6)从操作型系统中抽取数据。(7)清理和转换数据。(8)将数据载入数据仓库数据库。(9)准备显示数据。(10)将数据分发到数据集市。第3章数据仓库设计与开发1建立运
26、营环境文档 建立运营环境的第一步是识别所有业务系统 确定每个系统中存储什么样的数据 第3章数据仓库设计与开发1 选择数据仓库的实现技术(1)数据仓库的操作系统。(2)数据仓库的数据库。(3)数据仓库模型工具。(4)数据仓库开发工具。(5)数据仓库监视工具。(6)提取和清除工具。(7)报告工具。(8)OLAP服务器。(8)数据挖掘工具 第3章数据仓库设计与开发1选择数据仓库的实现技术 下面是选择供应商需要注意的问题。(1)选择“最好的”产品并不总是正确的解决方案。(2)选择与行业标准相近的产品。花费时间来评估几个供应商的不同软件包是一件非常迫切需要的工作。第3章数据仓库设计与开发1设计数据仓库模
27、型 关系模型是当前最流行数据模型 最流行的数据仓库模型是星型模型。第3章数据仓库设计与开发1创建数据准备区 为支持数据抽取、清理和转换操作以便准备数据装入数据仓库,需要创建表和其他数据库对象。可以为数据准备区创建单独的数据库,或者可以在数据仓库数据库中创建这些项目。数据准备区应包括包含传入数据的表、帮助实现代理键的表以及容纳转换数据的表。数据准备区的特定设计取决于数据源的多样性、组织数据,以使在装入数据仓库时所需的转换程度以及传入数据的一致性。第3章数据仓库设计与开发1创建数据仓库数据库 创建事实数据表和维度表,并在所有表中的主要字段上建立索引。星型架构由单个事实数据表和一些维度表组成。雪花型
28、架构增加了次要维度表。例如,数据仓库可能包含销售信息和库存信息。由于销售数据和库存数据在本质上不同,它们应存储在不同的事实数据表中。有些维度表(如产品维度表)可能由销售和库存表共享,而有些维度表(如销售队伍或仓库位置)则可能专用于个别的事实数据表。第3章数据仓库设计与开发1从操作型系统中抽取数据 抽取数据简单抽取复杂抽取 识别数据中的错误和不一致问题。第3章数据仓库设计与开发1清理和转换数据 从源系统抽取后,数据应驻留在数据准备区,在这里可以在数据装入数据仓库前完成清理和转换。可以执行一些过程来验证数据的一致性,将数据转换成常用格式以及合并代理键。可能需要执行手工操作协调数据的不一致或解决二义
29、性文本字段输入项 第3章数据仓库设计与开发1将数据装入数据仓库数据库 在数据被清洗、转换之后,就可将数据加载到合适的数据仓库事实表中。在数据加载后,还要更新元数据仓库中的元数据,以反映刚完成的数据加载活动,并且对受影响的概括数据重新概括处理。数据的加载话动应该使用标准方法和通用工具,例如,在关系DBMS中可以使用SQL,或专门用于管理数据仓库的DBMS加载工具。第3章数据仓库设计与开发1准备显示信息 因为通常通过客户端应用程序提供对数据仓库数据的访问,所以必须在数据仓库中完成某些任务以便为最终用户准备显示信息。数据仓库设计的一部分是识别这些应用程序所需的任何特殊数据配置要求,并通常是按照应用程
30、序文档中的描述配置应用程序本身。第3章数据仓库设计与开发1将数据分发到数据集市 复制所有适用的共享维度表和适合于数据集市的事实数据表。如果将某个数据集市特有的特殊维度表只用于该数据集市所服务的部门或组,则可以在本地创建这些维度表。用于创建报表从而与来自其他数据集市的报表进行比较的维度应是共享维度,共享维度在数据仓库中集中进行管理并从数据仓库表中装载。第3章数据仓库设计与开发1总结 数据仓库的设计始于数据模型。在概念模型设计中,E-R模型中的实体用主题取代;逻辑模型设计中,依然使用关系模型,但数据以星型结构或雪花结构按主题组织。由于数据仓库的需求是不可预先知道的,因此,数据仓库以反复开发的方式建立。数据仓库开发者面临的基本问题是管理大量数据。为此,数据的粒度和分割是数据仓库设计的两个重要问题。然而,也存在许多其他物理设计的问题,其中,大多数都与数据访问的效率有关。2022-8-17第3章数据仓库设计与开发1