1、第2章 数据仓库和数据挖掘的OLAP技术,数据仓库数据挖掘的有效平台,数据仓库中的数据清理和数据集成,是数据挖掘的重要数据预处理步骤。 数据仓库提供OLAP工具,可用于不同粒度的数据分析。 很多数据挖掘功能都可以和OLAP操作集成,以提供不同概念层上的知识发现。 分类 预测 关联 聚集,2.1 什么是数据仓库,20世纪80年代中期,“数据仓库”这个名词首次出现在号称“数据仓库之父”W.H.Inmon的Building Data Warehouse一书中。在该书中,W.H.Inmon把数据仓库定义为“一个面向主题的、集成的、稳定的、随时间变化的数据的集合,以用于支持管理决策过程”。,2.1.1
2、数据仓库的定义,数据仓库还有许多不同的定义,如:“数据仓库是融合方法、技术和工具以在完整的平台上将数据提交给终端用户的一种手段”。“数据仓库是对分布在企业内部各处的业务数据的整合、加工和分析的过程”。“数据仓库是一种具有集成性、稳定性和提供决策支持的处理”。“为查询和分析(不是事务处理)而设计的关系数据库”,在众多的数据仓库定义中,公认的仍然是W.H.Inmon的定义,该定义指出了数据仓库面向主题、集成、稳定、随时间变化这4个最重要的特征。,(1)面向主题主题就是在一个较高的管理层次上对信息系统的数据按照某一具体的管理对象进行综合、归类所形成的分析对象。如顾客、供应商、产品和销售组织等。从数据
3、组织的角度看,主题是一些数据集合,这些数据集合对分析对象作了比较完整的、一致的描述,这种描述不仅涉及到数据自身,而且涉及到数据之间的关系。面向主题的数据组织方式,就是在较高层次上对分析对象的数据的一个完整、一致的描述,能完整、统一地刻画各个分析对象所涉及的企业的各项数据,以及数据之间的联系。,(2)集成数据仓库中存储的数据一般从企业原来已建立的数据库系统中提取出来,但并不是原有数据的简单拷贝,而是经过了抽取、筛选、清理、综合等工作。这是因为:1) 原有数据库系统记录的是每一项业务处理的流水帐,这些数据不适合于分析处理。在进入数据仓库之前必须经过综合、计算,同时抛弃一些分析处理不需要的数据项,必
4、要时还要增加一些可能涉及的外部数据。2) 数据仓库每一个主题所对应的源数据在源分散数据库中有许多重复或不一致之处,必须将这些数据转换成全局统一的定义,消除不一致和错误之处,以保证数据的质量;显然,对不准确,甚至不正确的数据分析得出的结果将不能用于指导企业做出科学的决策。3) 源数据加载到数据仓库后,还要根据决策分析的需要对这些数据进行概括、聚集处理。,(3)稳定性即非易失的业务系统的数据库中一般只存储短期数据,因此在数据库系统中数据是不稳定的,它记录的是系统中数据变化的瞬态。但对于决策分析而言,历史数据是相当重要的,许多分析方法必须以大量的历史数据为依托。没有大量历史数据的支持是难以进行企业的
5、决策分析的,因此数据仓库中的数据大多表示过去某一时刻的数据,主要用于查询、分析,不像业务系统中的数据库那样,要经常进行修改、添加,除非数据仓库中的数据是错误的。,(4)随时间而变化即时变的数据仓库中数据是批量载入的,是稳定的,这使得数据仓库中的数据总是拥有时间维度。从这个角度,数据仓库实际是记录了系统的各个瞬态,并通过将各个瞬态连接起来形成动画,从而在数据分析的时候再现系统运动的全过程。数据批量载入(提取)的周期实际上决定了动画间隔的时间,数据提取的周期短,则动画的速度快。,2.1.2 数据仓库与操作数据库系统的区别,操作数据库系统的主要任务是联机事务处理OLTP 日常操作: 购买,库存,银行
6、,制造,工资,注册,记帐等。 数据仓库的主要任务是联机分析处理OLAP 数据分析和决策支持,支持以不同的形式显示数据以满足不同的用户需要。,OLTP 和OLAP的比较 (1/3),用户和系统的面向性 面向顾客(事务) 面向市场(分析)。 数据内容 当前的、详细的数据 历史的、汇总的数据。 数据库设计 实体联系模型(ER)和面向应用的数据库设计 星型/雪花模型和面向主题的数据库设计。,OLTP 和OLAP的比较(2),数据视图 当前的、企业内部的数据 经过演化的、集成的数据。 访问模式 事务操作 只读查询(但很多是复杂的查询) 任务单位 简短的事务 复杂的查询。 访问数据量 数十个 数百万个。,
7、OLTP和OLAP的比较(3),用户数 数千个 数百个。 数据库规模 100M数GB 100GB数TB。 设计优先性 高性能、高可用性高灵活性、端点用户自治。 度量 事务吞吐量 查询吞吐量、响应时间。,2.1.3 为什么需要一个分离的数据仓库?,提高两个系统的性能 DBMS是为OLTP而设计的:存储方式、索引、 并发控制和 恢复。 数据仓库是为OLAP而设计:复杂的 OLAP查询、 多维视图和汇总。 不同的功能和不同的数据: 历史数据:决策支持需要历史数据,而这些数据在操作数据库中一般不会去维护。 数据汇总:决策支持需要将来自异种源的数据统一(如聚集和汇总)。 数据质量:不同的源使用不一致的数
8、据表示、编码和格式,对这些数据进行有效的分析需要将他们转化后进行集成。,2.1.4 数据仓库中的关键名词,1. ETL(Extract/Transformation/Load)数据抽取、转换、加载工具ETL工具就是进行数据的抽取、转换和加载工具。,(1)数据提取(Data Extract)从业务数据库只需提取出系统分析必需的那一部分数据。例如,某超市确定以分析客户的购买行为为主题建立数据仓库,则我们只需将与客户购买行为相关的数据提取出来,而超市服务员工的数据就没有必要放进数据仓库。现有的数据仓库产品几乎都提供各种关系型数据接口,提供提取引擎,从关系型数据中提取数据。,(2)数据转换(Data
9、Transform)由于业务系统可能使用不同的数据库厂商的产品,比如IBM DB2、Oracle、Informix、Sybase、 NCR Teradata、 SQL Server等,各种数据库产品提供的数据类型可能不同,因此需要将不同格式的数据转换成统一的数据格式。如时间格式“年/月/日”,“月/日/年”、“日-月-年”的不一致问题等。,(3)数据清洗(Data Clean)所谓“清洗”就是将错误的、不一致的数据在进入数据仓库之前予以更正或删除,以免影响决策支持系统决策的正确性。,(4) 数据加载(Data Load)数据加载部件负责将数据按照物理数据模型定义的表结构装入数据仓库,包括清空数
10、据域、填充空格、有效性检查等步骤。,2. 元数据(MetaData)“什么是元数据?”元数据是描述数据的数据。在数据仓库中,元数据是定义数据仓库对象的数据。元数据包括相应数据仓库的数据名和定义、数据提取操作时被提取数据的时间和地点以及数据清理或数据集成过程添加的字段等。它提供了有关数据的环境,用于构造、维持、管理、和使用数据仓库,在数据仓库中尤为重要。,3. 数据集市(Data Market)数据仓库中存放的是整个企业的信息,并且数据是按照不同主题来组织的。比如市场发展规律的分析主题主要由市场部门的人员使用,我们可以在逻辑上或者物理上将这部分数据分离出来,当市场部门人员需要信息时,不需要到数据
11、仓库的巨量数据中检索,而只需在相应的部门数据上进行分析,因此从效率和处理速度的角度出发,这种划分是合算的。这种面向企业中的某个部门(主题)而在逻辑上或物理上划分出来的数据仓库中的数据子集称为数据集市。换句话说,数据集市包含了用于特殊目的数据仓库的部分数据。数据仓库面向整个企业,而数据集市则是面向企业中的某个部门。典型示例是销售部门、库存和发货部门、财务部门和高级管理部门等的数据集市。数据仓库中存放了企业的整体信息,而数据集市只存放了某个主题需要的信息,其目的是减少数据处理量,使信息的利用更快捷、灵活。,4. OLAPOLAP(On-line Analytical Processing,在线分析
12、处理或联机分析处理)就是一个应用广泛的数据仓库使用技术。它可以根据分析人员的要求,迅速灵活地对大量的数据进行复杂的查询处理,并以直观的容易理解的形式将查询结果提供给各种决策人员,使他们能够迅速准确地掌握企业的运营情况,了解市场的需求。,2.2 多维数据模型,2.2.1 由表到数据立方体,数据仓库和OLAP工具基于多维数据模型。,在多维数据模型中,数据以数据立方体(data cube)的形式存在。,数据立方体允许以多维数据建模和观察。它由维和事实定义。 维是关于一个组织想要记录的视角或观点。每个维都有一个表与之相关联,称为维表。 多维数据模型围绕中心主题组织,该主题用事实表表示。 事实表包括事实
13、的名称或度量以及每个相关维表的关键字。 事实指的是一些数字度量。,示例:,OLTP系统是为了快速回答简单查询,而不是为了存储分析趋势的历史数据而创建的。一般的,OLTP提供了大量的原始数据,这些数据不易被分析。,查询某人买房记录。 查询某房的价值。 ,一个英国房屋销售系统:,2008年第三季度,整个英格兰的总收入是多少? 2007年英国每一类房产销售的总收入是多少? 2008年租借房产业务中每个城市哪个地域最受欢迎?与过去的两年相比有何不同? 每个分支机构本月的房产销售月收入是多少,并与刚过去的12个月相比较。 如果对于10万英镑以上的房产,法定价格上升3.5%而政府税收下降1.5%,对英国不
14、同区域的销售会产生什么影响?在英国主要城市中,哪种类型的房产销售价格高于平均房产销售价格?这与人口统计数据有何联系?,数据仓库需要回答更复杂的查询,而不仅仅是一些像“英国主要城市的商品平均销售价格是多少”之类的简单聚集数据查询。数据仓库需要回答的查询类型可以是简单的查询,也可以是高度复杂的,且还与终端用户使用的查询工具相关。,英国房屋销售数据仓库系统:,多维数据模型(1/3),time_key day day_of_the_week month quarter year,time 维表,location_key street city state_or_province country,loc
15、ation 维表,Sales 事实表,time_key,item_key,branch_key,location_key,units_sold,dollars_sold,item_key item_name brand type supplier_type,item 维表,branch_key branch_name branch_type,branch 维表,数据仓库:事实表维表,度量,多维数据模型(2/3),在数据仓库中,数据立方体是n-D的(n维) (关系表和电子表格是几维的?) 多维数据模型为不同角度上的数据建模和观察提供了一个良好的基础。,示例 AllElectronics的销售数据
16、按维time, item的2-D视图。,location“Vancouver“(温哥华 ),item(类型),time(季度) 家庭娱乐 计算机 电话 安全,Q1 605 825 14 400 Q2 680 952 31 512 Q3 812 1023 30 501 Q4 927 1038 38 580,AllElectronics的销售数据按维time, item和location的3-D视图。,location “Chicage” item,time 家庭娱乐 计算机 电话 安全,Q1 854 882 89 623 Q2 943 890 64 698 Q3 1032 924 59 789
17、Q4 1129 992 63 870,location “New York” item,time 家庭娱乐 计算机 电话 安全,Q1 1087 968 38 623 Q2 943 890 64 698 Q3 1032 924 59 789 Q4 1129 992 63 870,.,AllElectronics的销售数据按维time、 item和location的3-D视图的3-D数据立方体表示。,销售数据的4-D立方体表示。,4维分别是time、item、location和supplier。,多维数据模型(3/3),一个n维的数据的立方体叫做基本方体。给定一个维的集合,我们可以构造一个方体的格
18、,每个都在不同的汇总级或不同的数据子集显示数据,方体的格称为数据立方体。0维方体存放最高层的汇总,称作顶点方体;而存放最底层汇总的方体则称为基本方体。,数据立方体一个方体的格,all,time,item,location,supplier,time,item,time,location,time,supplier,item,location,item,supplier,location,supplier,time,item,location,time,item,supplier,time,location,supplier,item,location,supplier,time, item,
19、location, supplier,0维顶点方体,1维方体,2维方体,3维方体,4维基本方体,i-1维方体,i维方体,上卷,下钻,联机分析处理数据立方体代数形式化定义,数据立方体定义: 是一个6元组,cube=(Dom,D,Mdom,M,f,aggr), 其中:(1) Dom=dom1.domn,n0,称为维的域,domi(1in)都是域; (2)D=d1,.,dn,称为维标识集,di(1in)是domi(1in)的标识; (3)Mdom=mdom1.mdomm,m0,称为指标的域,mdomi(1im)都是域; (4)M=m1,.,mm,称为指标标识集,mi(1in)是mdomi(1im)
20、的标识; (5)f:DomMdom是Dom到Mdom上的部分映射,称为立方体的基(cube base); (6)aggr是Mdom上的聚集函数。,2.2.2 数据仓库的概念模型,最流行的数据仓库概念模型是多维数据模型。这种模型可以以星型模式、雪花模式、或事实星座模式的形式存在。,星型模式(Star schema): 事实表在中心,周围围绕地连接着维表(每维一个),事实表含有大量数据,没有冗余。,星型模式实例,sales事实表,time_key,item_key,branch_key,location_key,units_sold,dollars_sold,维表,度量,雪花模式(Snowflak
21、e schema): 是星型模式的变种,其中某些维表是规范化的,因而把数据进一步分解到附加表中。结果,模式图形成类似于雪花的形状。,雪花模式实例,sales事实表,time_key,item_key,branch_key,location_key,units_sold,dollars_sold,星型模式,雪花模式,维表规格化,维表,度量,事实星座(Fact constellations): 多个事实表共享维表, 这种模式可以看作星型模式集,因此称为星系模式(galaxy schema),或者事实星座(fact constellation) 。,事实星座模式实例,sales事实表,time_ke
22、y,item_key,branch_key,location_key,units_sold,dollars_sold,航运事实表,time_key,item_key,shipper_key,from_location,to_location,dollars_cost,units_shipped,星型/雪花模式,事实模式,多个事实表共享维表,维表,度量,2.2.3 一种数据挖掘查询语言: DMQL,DMQL首先包括定义数据仓库和数据集市的语言原语,这包括两种原语定义:一种是立方体定义,一种是维定义 立方体定义 (事实表) define cube : 维定义 (维表) define dimensi
23、on as (),实例:使用DMQL定义星型模式,define cube sales_star time, item, branch, location: dollars_sold = sum(sales_in_dollars), avg_sales = avg(sales_in_dollars), units_sold = count(*) define dimension time as (time_key, day, day_of_week, month, quarter, year) define dimension item as (item_key, item_name, bran
24、d, type, supplier_type) define dimension branch as (branch_key, branch_name, branch_type) define dimension location as (location_key, street, city, province_or_state, country),星型模式实例,sales事实表,time_key,item_key,branch_key,location_key,units_sold,dollars_sold,维表,度量,实例:使用DMQL定义雪花模式,define cube sales_sn
25、owflake time, item, branch, location: dollars_sold = sum(sales_in_dollars), avg_sales = avg(sales_in_dollars), units_sold = count(*) define dimension time as (time_key, day, day_of_week, month, quarter, year) define dimension item as (item_key, item_name, brand, type, supplier(supplier_key, supplier
26、_type) define dimension branch as (branch_key, branch_name, branch_type) define dimension location as (location_key, street, city(city_key, province_or_state, country),雪花模式实例,sales事实表,time_key,item_key,branch_key,location_key,units_sold,dollars_sold,星型模式,雪花模式,维表规格化,维表,度量,实例:使用DMQL定义事实星座模式,define cub
27、e sales time, item, branch, location: dollars_sold = sum(sales_in_dollars), avg_sales = avg(sales_in_dollars), units_sold = count(*) define dimension time as (time_key, day, day_of_week, month, quarter, year) define dimension item as (item_key, item_name, brand, type, supplier_type) define dimension
28、 branch as (branch_key, branch_name, branch_type) define dimension location as (location_key, street, city, province_or_state, country) define cube shipping time, item, shipper, from_location, to_location: dollar_cost = sum(cost_in_dollars), unit_shipped = count(*) define dimension time as time in c
29、ube sales define dimension item as item in cube sales define dimension shipper as (shipper_key, shipper_name, location as location in cube sales, shipper_type) define dimension from_location as location in cube sales define dimension to_location as location in cube sales,事实星座模式实例,sales事实表,time_key,i
30、tem_key,branch_key,location_key,units_sold,dollars_sold,航运事实表,time_key,item_key,shipper_key,from_location,to_location,dollars_cost,units_shipped,星型/雪花模式,事实模式,多个事实表共享维表,维表,度量,2.2.4 度量的分类,一个数据立方体的度量是一个数值函数,该函数可以对数据立方体的每一个点求值。 度量可以根据其所用的聚集函数分为三类: 分布的:将函数用于n个聚集值得到的结果和将函数用于所有数据得到的结果一样。 比如:count(),sum(),m
31、in(),max()等 代数的:函数可以由一个带M个参数的代数函数计算(M为有界整数),而每个参数值都可以由一个分布的聚集函数求得。 比如:avg(),min_N(),standard_deviation() 整体的:描述函数的子聚集所需的存储没有一个常数界。 比如:median(),mode(),rank(),2.2.5 概念分层,一个概念分层(concept hierarchy)定义一个映射序列,将低层概念映射到更一般的高层概念 例如表示location的概念:杭州浙江中国亚洲。 概念分层允许我们在各种抽象级审查和处理数据。 概念分层可以由系统用户、领域专家、知识工程师人工地提供,也可以根
32、据数据分布的统计分析自动地产生。,概念分层 : location维的一个概念分层,all,Europe,North_America,Mexico,Canada,Spain,Germany,Vancouver,M. Wind,L. Chan,.,.,.,.,.,.,all,region,office,country,Toronto,Frankfurt,city,许多概念分层的定义隐含在数据库的模式中。比如:location维的定义,officecitycountryregion;这些属性 按一个全序相关,形成一个层次结构:,year,day,quarter,month,week,维的属性也可以组
33、成一个偏序,形成一个格:,price属性上的概念分层,概念层次是一个偏序集(H,),其中,H是概念的一个有限集,是关于H的一个偏序。,年,月,季度,日,星期,概念分层 使用,概念分层为不同级别上的数据汇总提供了一个良好的基础 综合概念分层和多维数据模型的潜力,可以对数据获得更深入的洞察力 通过在多维数据模型中,在不同的维上定义概念分层,使得用户在不同的维上从不同的层次对数据进行观察成为可能。 多维数据模型(数据立方体)使得从不同的角度对数据进行观察成为可能,而概念分层则提供了从不同层次对数据进行观察的能力;结合这两者的特征,我们可以在多维数据模型上定义各种OLAP操作,为用户从不同角度不同层次
34、观察数据提供了灵活性。,2.2.6 多维数据模型上的OLAP操作,上卷(roll-up):汇总数据 通过一个维的概念分层向上攀升或者通过维归约。 当用维归约进行上卷时,一个或多个维由给定的数据立方体删除。,示例:OLAP 操作上卷,在 location上卷(由 cities 到 countries汇总),下钻(drill-down):上卷的逆操作 由不太详细的数据到更详细的数据,可以通过沿维的概念分层向下或引入新的维来实现 (为给定数据添加更多细节)。,示例: OLAP 操作下钻,在 time下钻 (由 quarters 到 months细化),切片和切块(slice and dice)切片操
35、作在给定的数据立方体的一个维上进行选择,导致一个子方切块操作通过对两个或多个维进行选择,定义子方。切块操作在给定的数据立方体的多个维上进行选择,导致一个子方切块操作通过对两个或多个维进行选择,定义子方。,示例: OLAP 操作切片,切片条件: time=“Q2”,示例: OLAP 操作 切块,切块条件: (location=“Montreal” or “Vancouver”) and (time=“Q1” or “Q2”) and (item=“home entertainment” or “computer”),转轴(pivot) 立方体的重定位,可视化,或将一个3维立方体转化为一个2维平面
36、序列。 转轴是一种可视化操作,通过转动当前数据的视图来提供一个数据的替代表示。,示例: OLAP 操作转轴,转轴,其他OLAP操作 钻过(drill_across):执行涉及多个事实表的查询。 钻透(drill_through):使用关系SQL机制,钻到数据立方体的底层,到后端关系表。 其他OLAP操作可能包括列出表中最高或最低的N项,以及计算移动平均值、增长率、利润、统计函数等等。,2.3 数据仓库的系统结构,2.3.1 数据仓库的设计步骤和结构,设计和构造数据仓库、三层数据仓库结构。,介绍中小型数据仓库的一般设计方法。,数据仓库给商业分析专家提供了什么? 通过提供相关数据与信息,获得竞争优
37、势。 通过有效地收集精确地描述组织的数据,获得生产力的提高。 通过提供不同级别(部门、市场、商业)的客户视图,协助客户关系管理。 通过追踪长期趋势、异常等,降低成本。 有效构建数据仓库的关键:理解和分析商业需求 通过提供一个商业分析框架,综合各种不同的数据使用者的视图。,1. 数据仓库设计:一个商务分析框架,数据仓库设计的四种视图 自顶向下视图 允许我们选择数据仓库所需的相关信息。 数据源视图 揭示被操作数据库系统所捕获、存储和管理的信息。 数据仓库视图 由事实表和维表所组成。 商务查询视图 从最终用户的角度透视数据仓库中的数据。,2. 数据仓库的设计过程,自顶向下法、自底向上法或者两者的混合
38、方法 自顶向下法:由总体设计和规划开始 在技术成熟、商业理解透彻的情况下使用。 自底向上法:以实验和原型开始 常用在模型和技术开发的初期,可以有效的对使用的技术和模型进行评估,降低风险。 混合方法:上述两者的结合 从软件工程的观点 瀑布式方法:在进行下一步前,每一步都进行结构化和系统的分析。 螺旋式方法:功能渐增的系统的快速产生,相继版本之间间隔很短。,典型的数据仓库设计过程 选取待建模的商务过程 找到所构建的数据仓库的主题,比如:销售、货运、订单等等。 选取商务过程的颗粒度 数据起始于多细的颗粒度,比如,记录每条详细订单,或是开始于每日的汇总数据。 选取用于每个事实表记录的维 常用的维有:时
39、间、货物、客户、供应商等。 选取将安放在事实表中的度量 常用的数字度量包括:售价、货物数量等。,2.3.2 三层数据仓库架构,数据仓库,OLAP服务器,查询报告 分析 数据挖掘,监控、 整合,元数据 存储,数据源,前端工具,输出,数据集市,数据仓库服务器,OLAP服务器,底层 中间层 前端层,底层:数据仓库的数据库服务器 关注的问题:如何从这一层提取数据来构建数据仓库(通过网关(ODBC,JDBC,OLE/DB等)来提取)。 中间层:OLAP服务器 关注的问题:OLAP服务器如何实施(关系型OLAP,多维OLAP等)。 前端客户工具层 关注的问题:查询工具、报表工具、分析工具、挖掘工具等。,从
40、体系结构的角度去看,数据仓库模型有以下三种: 企业仓库 搜集关于跨越整个组织的主题的所有信息。 数据集市 企业范围数据的一个子集,对于特定的客户是有用的。其范围限于选定的主题,比如一个商场的数据集市。 独立的数据集市 VS. 非独立的数据集市(数据来自于企业数据仓库)。 虚拟仓库 操作数据库上的一系列视图。 只有一些可能的汇总视图被物化。,数据仓库开发上的困难 自顶向下的开发方法从全系统的角度提供解决方案,使得(模块)集成的问题最小;但是该方法十分昂贵,需要对组织进行长期研究和建模分析。 自底向上方法提供了更多的开发灵活性,价格便宜;但往往会遇到集成问题(每个模块单独运行都没有问题,但是一集成
41、就出异常)。 解决方法 使用递增性、演化性的开发方法 高层数据模型企业仓库和数据集市并行开发通过分布式模型集成各数据集市多层数据仓库。,数据仓库开发一个推荐的方法,定义高层数据模型,数据集市,数据集市,分布式数据集市,多层数据仓库,企业数据仓库,模型提炼,模型提炼,2.3.3 OLAP服务器类型,逻辑上,OLAP服务器从数据仓库或数据集市中给商业用户提供多维数据 物理上,OLAP的底层数据存储实现可以有多种不同的方式 关系OLAP服务器(ROLAP) 使用关系数据库或扩展的关系数据库存放并管理数据仓库的数据,而用OLAP中间件支持其余部分。 包括每个DBMS后端优化,聚集导航逻辑的实现,附加的
42、工具和服务。 较大的可扩展性。,多维OLAP服务器(MOLAP) 基于数组的多维存储引擎(稀疏矩阵技术)。 能对预计算的汇总数据快速索引。 混合OLAP服务器(HOLAP) 结合上述两种技术,更大的使用灵活性。 特殊的SQL服务器 在星型和雪花模型上支持SQL查询。,2.4 数据仓库的实现,数据仓库中的OLAP查询是一种海量数据计算 (想象一下对过去10年各地区的软件产品销售的汇总查询) 用户却希望这个计算能在数秒钟内完成 解决方法在于给出一种有效的计算数据立方体的方法 数据立方体可以被看成是一个方体的格 最底层的方体是基本方体 最顶端的方体(顶点)只包含一个单元的值 一个n维的数据立方体,每
43、维Li层,可能产生的方体总数是多少?,2.4.1 数据立方体的有效计算,1表示原始数据即all层,事实表:,一个方体是某种汇总的结果,地区维(上卷到省市),日期维(上卷到季度),商品维(上卷到商品类别),一个方体(3维),(item),(city),(),(time),(city, item),(city, time),(item, time),(city, item, time),当Li=1时(没有概念分层),T=2n,年,月,季度,日,假设time:,4层,(item),(city),(),(日),(city, item),(city, 日),(item, 日),(city, item,
44、日),(item),(city),(),(月),(city, item),(city, 月),(item, 月),(city, item, 月),1,2,3,4,(item),(city),(),(季度),(city, item),(city,季度),(item,季度),(city, item,季度),(item),(city),(),(年),(city, item),(city, 年),(item,年),(city, item, 年),这里n=3,假设city、item均为1层 T=522=20,数据立方体的物化,数据立方体的物化可以有以下三种选择: 全物化 预先计算所有方体。对于n维数据立
45、方体,可能产生的方体总数是T=(L1+1)(L2+1)(Ln+1),Li表示维i的层次数,例如,n=10,每维10层,则方体总数约为9800000个。,日用品涉及的方体,例:求2010一季度的日用品,通常,这种选择需要海量存储空间来存放所有预计算的方体。 优点是OLAP速度快。,不物化 不预先计算任何“非基本”方体,事实表,汇总,涉及大量上卷操作(表连接) 这可能导致回答查询时,因进行昂贵的多维聚集计算,速度非常慢。,维灾难!,部分物化 有选择的计算一个所有方体的适当子集 考虑因素:(1)确定要物化的方体;(2)在查询时利用物化的方体;(3)在装载和刷新时,有效地更新物化的方体,有选择地计算整
46、个可能的方体集中一个适当的子集。部分物化是存储空间和响应时间两者之间的很好折衷。,聚集的物化聚集的有效计算是多维分析的核心。维集合的任意一个组合对应的聚集数据代表了数据立方中的一个方体,一次聚集计算处理可以是单个方体的计算,也可以是整个数据立方的计算。聚集的计算过程就是数据立方的物化过程。,补充介绍,全物化方法全物化是指对维集合的所有可能组合都进行聚集。最为简单的全物化方法是通过计算n维事实表中的元组,依次得到2n个聚集数据并存储到多维数据集中。当数据立方的维数增多,维的层次更趋复杂时,可能的聚集计算量将剧增,导致存储空间爆炸现象的发生。为降低聚集计算量,减少存储空间的使用,可以采用多种改进方
47、法,根据参与聚集计算的数据的范围分为单个方体的聚集计算和基于依赖关系的聚集计算两类。,典型的单方体聚集计算方法是基于数组方式的聚集计算方法,该方法包括四种形式:G-AggregationM-AggregationInfix-AggregationPrefix-Aggregation单个方体计算方法会进行多次重复的I/O操作,因此计算效率很低。并不是所有的聚集都需要从基础数据开始计算,利用方体之间的依赖关系从子方体汇总计算父方体可以加速聚集计算的过程。基于该思想的聚集计算方法包括基于排序(sort- based)和基于哈希(hash-based)的算法:PipeSort,PipeHash和Ove
48、rlap。这类方法先估计数据立方的各种计算方式的代价,确定其计算顺序和导出关系,其目的是使数据立方的计算开销最小。,上述聚集计算方法特别指针以ROLAP形式存储的数据立方,适合于MOLAP的经典聚集计算方法是多路数组聚集方法。它在寻找最优扫描次序时是将所有的扫描次序需要的内存数量都计算出来,然后将需要内存最少的扫描次序作为最优次序,对数据立方进行聚集计算。多路数组聚集的基本原理如下:(1)将n维数组划分成小的n维块,其中每个块作为一个独立的单元包含有联机分析处理所需要的信息;(2)对数组分块处理后的子方体进行聚集计算,通过优化计算次序,使部分聚集可以同时计算,并避免不必要的重复计算。,部分物化
49、策略尽管通过全物化可以使所有查询以最短的时间做出响应。但是,当数据量非常庞大时,全物化过程消耗的时间及其占用的空间都可能让用户无法忍受,因而不具现实性。其次,简单排列组合产生的多维数据集往往是一个庞大的稀疏矩阵,存在着大量的空聚集数据单元,造成存储空间的巨大浪费。再次,随着数据仓库的定时刷新,聚集数据的同步更新也将耗费大量的系统资源。因此,应该科学的选择物化方案和聚集策略,以平衡聚集计算和维护与OLAP响应时间之间的矛盾。部分物化是指在部分维及其相关层次上进行聚集,即从数据立方的所有方体中选择一个子集进行物化。在一般情况下,通常20%的聚集就能够满足80%的查询需要。如何确定该20%的聚集是提高聚集效率的关键。,