数据仓库和数据挖掘的OLAP技术数据仓库-数据挖掘的有效平台数据仓库中的数据清理和数据集成,是数据挖掘的重要数据预处理步骤数据仓库提供OLAP工具,可用于不同粒度的数据分析很多数据挖掘功能都可以和OLAP操作集成,以提供不同概念层上的知识发现分类预测关联聚集什么是数据仓库?数据仓库的定义很多,但却很难有一种严格的定义它是一个提供决策支持功能的数据库,它与公司的操作数据库分开维护。为统一的历史数据分析提供坚实的平台,对信息处理提供支持数据仓库区别于其他数据存储系统“数据仓库是一个面向主题的、集成的、随时间而变化的、不容易丢失的数据集合,支持管理部门的决策过程.”—W.H.Inmon数据仓库关键特征一——面向主题面向主题,是数据仓库显著区别于关系数据库系统的一个特征围绕一些主题,如顾客、供应商、产品等关注决策者的数据建模与分析,而不是集中于组织机构的日常操作和事务处理。排除对于决策无用的数据,提供特定主题的简明视图。数据仓库关键特征二——数据集成一个数据仓库是通过集成多个异种数据源来构造的。关系数据库,一般文件,联机事务处理记录使用数据清理和数据集成技术。确保命名约定、编码结构、属性度量等的一致性。当数据被移到数据仓库时,它们要经过转化。数据仓库关键特征三——随时间而变化数据仓库是从历史的角度提供信息数据仓库的时间范围比操作数据库系统要长的多。操作数据库系统:主要保存当前数据。数据仓库:从历史的角度提供信息(比如过去5-10年)数据仓库中的每一个关键结构都隐式或显式地包含时间元素,而操作数据库中的关键结构可能就不包括时间元素。数据仓库关键特征四——数据不易丢失尽管数据仓库中的数据来自于操作数据库,但他们却是在物理上分离保存的。操作数据库的更新操作不会出现在数据仓库环境下。不需要事务处理,恢复,和并发控制等机制只需要两种数据访问:数据的初始转载和数据访问(读操作)数据仓库的构建与使用数据仓库的构建包括一系列的数据预处理过程数据清理数据集成数据变换数据仓库的使用热点是商业决策行为,例如:增加客户聚焦产品重定位寻找获利点客户关系管理数据仓库与异种数据库集成异种数据库的集成方法传统的异种数据库集成:(查询驱动)在多个异种数据库上建立包装程序(wrappers)和中介程序(mediators)查询驱动方法——当从客户端传过来一个查询时,首先使用元数据字典将查询转换成相应异种数据库上的查询;然后,将这些查询映射和发送到局部查询处理器数据仓库:(更新驱动)将来自多个异种源的信息预先集成,并存储在数据仓库中,供直接查询和分析查询驱动方法和更新驱动方法的比较查询驱动的方法需要复杂的信息过滤和集成处理与局部数据源上的处理竞争资源对于频繁的查询,尤其是涉及聚集(汇总)操作的查询,开销很大(决策支持中常见的查询形式)更新驱动的方法(带来高性能)数据经预处理后单独存储,对聚集操作提供良好支持不影响局部数据源上的处理集成历史信息,支持复杂的多维查询数据仓库与操作数据库系统操作数据库系统的主要任务是联机事务处理OLTP日常操作:购买,库存,银行,制造,工资,注册,记帐等数据仓库的主要任务是联机分析处理OLAP数据分析和决策支持,支持以不同的形式显示数据以满足不同的用户需要OLAPVS.OLTP(1)用户和系统的面向性面向顾客(事务)VS.面向市场(分析)数据内容当前的、详细的数据VS.历史的、汇总的数据数据库设计实体-联系模型(ER)和面向应用的数据库设计VS.星型/雪花模型和面向主题的数据库设计OLAPVS.OLTP(2)数据视图当前的、企业内部的数据VS.经过演化的、集成的数据访问模式事务操作VS.只读查询(但很多是复杂的查询)任务单位简短的事务VS.复杂的查询访问数据量数十个VS.数百万个OLAPVS.OLTP(3)用户数数千个VS.数百个数据库规模100M-数GBVS.100GB-数TB设计优先性高性能、高可用性VS.高灵活性、端点用户自治度量事务吞吐量VS.查询吞吐量、响应时间为什么需要一个分离的数据仓库?提高两个系统的性能DBMS是为OLTP而设计的:存储方式,索引,并发控制,恢复数据仓库是为OLAP而设计:复杂的OLAP查询,多维视图,汇总不同的功能和不同的数据:历史数据:决策支持需要历史数据,而这些数据在操作数据库中一般不会去维护数据汇总:决策支持需要将来自异种源的数据统一(如聚集和汇总)数据质量:不同的源使用不一致的数据表示、编码和格式,对这些数据进行有效的分析需要将他们转化后进行集成多维数据模型(1)数据仓库和OLAP工具基于多维数据模型在多维数据模型中,数据以数据立方体(datacube)的形式存在数据立方体允许以多维数据建模和观察。它由维和事实定义维是关于一个组织想要记录的视角或观点。每个维都有一个表与之相关联,称为维表。多维数据模型围绕中心主题组织,该主题用事实表表示事实表包括事实的名称或度量以及每个相关维表的关键字事实指的是一些数字度量多维数据模型(2)——示例time_keydayday_of_the_weekmonthquarteryeartime维表location_keystreetcitystate_or_provincecountrylocation事实表Sales事实表time_keyitem_keybranch_keylocation_keyunits_solddollars_soldavg_sales度量item_keyitem_namebrandtypesupplier_typeitem维表branch_keybranch_namebranch_typebranch维表多维数据模型(3)在数据仓库中,数据立方体是n-D的(n维)(关系表和电子表格是几维的?)示例AllElectronics的销售数据按维time,item的2-D视图(P30,表2-2)AllElectronics的销售数据按维time,item和location的3-D视图(P30,表2-3)AllElectronics的销售数据按维time,item和location的3-D视图的3-D数据立方体表示(P31,图2-1)销售数据的4-D立方体表示(P31,图2-2)多维数据模型为不同角度上的数据建模和观察提供了一个良好的基础多维数据模型(4)在数据仓库的研究文献中,一个n维的数据的立方体叫做基本方体。给定一个维的集合,我们可以构造一个方体的格,每个都在不同的汇总级或不同的数据子集显示数据,方体的格称为数据立方体。0维方体存放最高层的汇总,称作顶点方体;而存放最底层汇总的方体则称为基本方体。数据立方体——一个方体的格alltimeitemlocationsuppliertime,itemtime,locationtime,supplieritem,locationitem,supplierlocation,suppliertime,item,locationtime,item,suppliertime,location,supplieritem,location,suppliertime,item,location,supplier0-D(顶点)方体1-D方体2-D方体3-D方体4-D(基本)方体数据仓库的概念模型最流行的数据仓库概念模型是多维数据模型。这种模型可以以星型模式、雪花模式、或事实星座模式的形式存在。星型模式(Starschema):事实表在中心,周围围绕地连接着维表(每维一个),事实表含有大量数据,没有冗余。雪花模式(Snowflakeschema):是星型模式的变种,其中某些维表是规范化的,因而把数据进一步分解到附加表中。结果,模式图形成类似于雪花的形状。事实星座(Factconstellations):多个事实表共享维表,这种模式可以看作星型模式集,因此称为星系模式(galaxyschema),或者事实星座(factconstellation)星型模式实例time_keydayday_of_the_weekmonthquarteryeartimelocation_keystreetcitystate_or_provincecountrylocationSalesFactTabletime_keyitem_keybranch_keylocation_keyunits_solddollars_soldavg_salesMeasuresitem_keyitem_namebrandtypesupplier_typeitembranch_keybranch_namebranch_typebranch雪花模式实例time_keydayday_of_the_weekmonthquarteryeartimelocation_keystreetcity_keylocationSalesFactTabletime_keyitem_keybranch_keylocation_keyunits_solddollars_soldavg_salesMeasuresitem_keyitem_namebrandtypesupplier_keyitembranch_keybranch_namebranch_typebranchsupplier_keysupplier_typesuppliercity_keycitystate_or_provincecountrycity事实星座模式实例time_keydayday_of_the_weekmonthquarteryeartimelocation_keystreetcityprovince_or_statecountrylocationSalesFactTabletime_keyitem_keybranch_keylocation_keyunits_solddollars_soldavg_salesMeasuresitem_keyitem_namebrandtypesupplier_typeitembranch_keybranch_namebranch_typebranchShippingFactTabletime_keyitem_keyshipper_keyfrom_locationto_locationdollars_costunits_shippedshipper_keyshipper_namelocation_keyshipper_typeshipper一种数据挖掘查询语言:DMQLDMQL首先包括定义数据仓库和数据集市的语言原语,这包括两种原语定义:一种是立方体定义,一种是维定义立方体定义(事实表)definecubecube_name[dimension_list]:measure_list维定义(维表)definedimensiondimension_nameas(attribute_or_subdimension_list)特殊案例(共享维表的定义)第一次作为维表定义“cubedefinition”然后:definedimensiondimension_nameasdimension_name_first_timeincubecube_name_first_time实例:使用DMQL定义星型模式definecubesales_star[time,item,branch,location]:dollars_sold=sum(sales_in_dollars),avg_sales=avg(sales_in_dollars),units_sold=count(*)definedimensiontimeas(time_key,day,day_of_week,month,quarter,year)definedimensionitemas(