数据仓库和数据挖掘的OLAP技术什么是数据仓库数据仓库W.HInmon的定义:数据仓库是一个面向主题的、集成的、时变的、非易失的数据集合,支持管理部门的决策过程。数据仓库关键特征面向主题subject-oriented•排除对决策无用的数据,提供特定主题的简明视图。集成的integrated•构造数据仓库是将多个异种数据源集成在一起,确保命名约定,编码结构,属性度量等一致性时变的time-variant•数据仓库是不断更新。非易失的nonvolatile•数据仓库总是物理的分离存放的数据数据仓库时一种语义上一致的数据存储。它充当决策支持数据模型的物理实现,并存放企业战屡决策所需要的信息。数据仓库也常常被看作是一种体系结构,通过将异种数据源中的数据集成在一起而构造,支持结构化和专门的查询,分析报告和决策制定。Adatawarehouseisacopyoftransactiondataspecificallystructuredforqueryingandreporting建立数据仓库Datawarehousing数据集成1。查询驱动query-driven使用包装程序和集成程序代理2。更新驱动预先集成数据清理数据统一决策支持技术OLTP和OLAP操作数据库系统的主要任务是联机事务处理OLTP数据仓库在数据分析和决策方面为用户提供服务,这种系统称为联机分析处理OLAPOLTP和OLAP的区别特性OLTPOLAP特性操作处理信息处理面向事务分析用户办事员DBA知识工人功能日常操作决策支持,DB设计E-R面向应用星型/雪花面向主题数据当前的,最新的历史的,跨时间维护汇总原始的,高度详细汇总的,统一的视图详细,一般关系汇总的,多维的特性OLTPOLAP工作单位短的,简单事务复杂查询存取读/写多数为读关注数据进入信息输出操作索引/散列大量扫描访问记录数量数十个数百万用户数数千数百DB规模100MB到GB100GB到TB优先高性能,高可靠高灵活,端点用户自治度量事务吞吐量查询吞吐量,响应时间为什么需要分离的数据仓库分离操作数据库系统和数据仓库的主要原因是提高两个系统的性能.操作数据库系统是为已知的任务和负载设计的,而数据仓库的查询通常是复杂的,涉及大量数据在汇总级的计算,在操作数据库系统上处理OLAP查询,可能会大大降低操作任务的性能.多维数据模型数据仓库和OLAP工具基于多维数据模型,该模型将数据看作数据立方体形式数据立方体允许以多维对数据建模和观察.数据立方体维——维是人们观察问题的特定角度,例如:时间维、地理维、产品维。维是一个组织要记录的透视或实体。事实:一个数值的度量数据立方体:允许以多维对数据建模和观察,它由维和事实定义。例子Sales记录商店销售,可能的维:•Time,item,branch,location.Sales销售数据仓库的事实:•Dollars_sold,units_sold维表和事实表维表:存放维详细信息的表格。人们在观察数据的某个特定角度(即某个维)还可以存在细节程度不同的多个描述方面。事实表存放了事实的名称和度量,以及相关的维表的关键字。数据立方体数据立方体可以看作(维1,维2,…维n,事实1,..事实m)N-D立方体。方体格给定一个维的集合,我们可以构造方体的格,每个在不同的汇总或groupby显示数据。方体的格称作数据立方体。基本方体•存放最低层汇总的方体顶点方体•最高层次的汇总多维数据库模式星型,雪花和事实星座模式是主要的存在形式星型模式包含一个大的包含大批数据的事实表和一系列维表.雪花模式是星型模式的变种,不同的是将某些维表规范化.事实星座模式对应多个事实表共享维表.定义模式的例子定义图2-4的星型模式:Definecubesales_star[time,item,branch,location]:dollars_sold=sum(sales_in_dollars),units_old=count(*)定义维Definedimensiontimeas(time_key,day,day_of_week,month,quarter,year)度量的分类和计算分布的:设数据被划分为n个集合,函数在每一部分上的计算得到一个聚集值.如果将函数用于n个聚集值得到的结果,与将函数用于所有数据得到的结果一样则该度量是分布的,如count(),sum()等代数的:如果一个聚集函数能够由一个具有M个参数的代数函数计算,且每个参数都可以用一个分布聚集函数求得.如avg()可以由sum()/count()计算,其中sum()和count()是分布聚集函数.整体的:如果一个聚集函数无法用具有M个参数的代数函数进行这一计算,则这个函数称是整体的,如rank()等许多度量可以用关系的聚集操作计算对应图2-4,我们也可写出SQL语句.计算dollars_sold和units_soldSelectsum(s.number_of_units_sold*s.price),Sum(s.number_of_units_sold)Fromtimet,itemi,branchb,locationl,saless,Wheres.time_key=t.time_keyands.item_key=i.item_keyands.branch_key=b.branch_keyands.loation_key=l.location_keyGroupbys.time_key,s.item_key,s.branch_key,s.location_key概念分层概念分层隐含在数据库模式中•全序•偏序•集合分组分层概念分层由系统用户专家等人工引入或者自动产生多维数据模型的OLAP操作上卷操作,通过维规约,在数据立方体上进行聚集.下钻操作,是上卷操作的逆操作,由不太详细的数据到更详细的数据.切片和切块,切片在给定的数据立方体的一个维上进行选择,切块则是在两个或两个以上的维进行选择.转轴操作,转动数据的视觉,是目视操作.查询多维数据库的星型网查询模型数据仓库的系统结构数据仓库设计自顶向下视图,使我们可以选择数据仓库所需的相关信息.数据源视图,揭示被操作数据库系统捕获存储和管理的信息.数据仓库视图,包括事实表和维表.商务查询视图,从最终用户的角度透视数据仓库中的数据数据仓库设计过程选取待建模的商务处理选取商务处理的粒度,例如单个事务,一天的快照等选取用于每个事实表记录的维.选取将安放在事实表中的度量如图2-4中的dollars_sold和units_sold三层数据仓库结构底层数据仓库服务器,使用称作网间连接程序的应用程序,由操作数据库和外部数据源提取数据.中间层是OLAP服务器,实现方法有•关系OLAP模型ROLAP,在多维数据上的操作映射为标准的关系作•多维OLAP模型MOLAP直接实现多维数据的操作顶层是客户,它包括查询和报告工具,分析工具和数据挖掘工具(例如趋势分析,预测等)数据仓库的类型企业仓库:企业仓库收集了关于主题的所有信息,跨越整个组织,它提供企业范围内的数据集成.数据集市:包含企业范围数据的一个子集,对于特定的用户是有用的,其范围限于选定的主题.虚拟仓库:是操作数据库上的视图集合.为了有效地处理查询,只有一些可能的汇总视图被物化,虚拟仓库易于建立,但需要操作数据库服务器具有剩余能力.OLAP服务器类型关系OLAP(ROLAP)模型,使用关系或扩充关系DBMS存放并管理数据仓库多维OLAP(MOLAP)服务器,这些服务器通过基于数组的多维存储,支持数组的多维视图混合OLAP(HOLAP)服务器,结合ROLAP和MOLAP技术,得宜于ROLAP的可伸缩性,和MOLAP的快速计算.数据如何实际的存放ROLAP使用关系表存放。与基本方体相关的事实表叫基本事实表•存放的数据所处的抽象级别由给定的数据立方体的模式的连接键指出。聚集数据也可能存放在事实表中,称为汇总事实表MOLAP采用数组结构存放数据数据仓库实现N维数据立方体的有效计算数据立方体的有效计算计算量:对一个n维数据立方体,第i维的层次是Li,则可能产生的立方体总数是T=(L1+1)*…*(Ln+1)如果10维每维4个层次产生的方体数是5的10次方=9800000.预先计算并物化所有可能产生的方体是不现实的,较合理的是部分物化方体的选择计算不物化:导致运行时计算昂贵的多维聚集,速度极慢.全物化:需要海量存储空间,存放所有预先计算的方体.部分物化:在存储空间和响应时间二者之间提供了很好的折衷.多路数组聚集将数组分成块,块的大小能够放入立方体计算时可用的内存.通过访问立方体单元进行聚集,使得每个单元必须重新访问的次数最小化.如图40*400*4000立方体,分成64块策略是多利用小的立方块.最佳的是AB平面40*400+AC平面的一行40*1000+BC平面的一块100*1000总计是156000.如果次序是BC,AC,AB则所需内存是400*4000+40*1000+10*100=1641000,是最佳策略的10倍以上.索引OLAP数据位图索引:与散列和树索引相比,位图索引将比较,连接和聚集都变成了位算术运算,大大减少了运行时间.连接索引:源于关系数据库的查询处理.位图连接索引:将连接索引和位图索引集成.OLAP查询的有效处理确定那些操作应当在可利用的方体上执行,这涉及将查询中的选择投影上卷下钻操作转换成对应的SQL或OLAP操作.确定相关操作应当使用哪些物化的方体,这涉及到找出可能用于查询的所有物化方体.具体步骤考察的方体必须与查询具有相同的维集合,或是它的超集.选择代价最小的方体.元数据存储元数据是定义数据仓库对象的数据.元数据的存储包括数据仓库结构的描述对元数据的操作汇总用的算法由操作环境到数据仓库的映射关于系统性能的数据商务元数据数据仓库后端工具数据提取:从多个异种的外部数据源收集数据.数据清理:检测错误,可能时修改错误.数据变换:将数据转换成数据仓库格式.装入:排序,综合,合并,计算视图,检查整体性,并建立索引和划分.刷新:传播由数据源到数据仓库的更新.进一步发展和探讨发现驱动的探查:预计算的度量指出数据异常,避免人工检查数据.扩充SQL语句的实现(多粒度上的复杂聚集).联机聚集,可以显示迄今为止所知道的,而不是等待查询完全处理完.最高N查询,只查询最高的N项,而不是整个排序的表,这导致较快的响应时间并减少资源浪费.多特征方计算复杂查询,这些查询涉及多粒度上多个依赖的聚集。简单数据立方体查询。构造数据立方体复杂查询:按{Item,region,month}的所有子集分组,对某组找出2000年最高价格,并在具有最高价格的元组中找出销售总额。Selectitem,region,month,Max(price),Sum(R.sales)FrompurchasesWhereyear=2000Cubebyitem,region,month:RSuchthatR.price=Max(Price)数据仓库的应用信息处理:支持查询和基本的统计分析,并使用表或图进行报告.分析处理:支持基本的OLAP操作,在汇总的和细节的历史数据上操作.数据挖掘:支持知识发现,包括找出隐藏的模式和关联,构造分析模型,进行分类和预测,并用可视化工具提供挖掘结果.联机分析挖掘(OLAM)将联机分析处理与数据挖掘集成,有以下几个原因:数据仓库中数据的高质量:大部分数据挖掘工具需要在集成的一致的和清理过的数据上进行,经由这些预处理而构造的数据仓库不仅用作OLAP而且也用作数据挖掘的数据源.环绕数据仓库的有价值的信息处理基础设施:谨慎的做法是尽量利用可用的基础设施,而不是一切从头做起.基于OLAP的探测式数据分析:有效的数据挖掘需要探测式数据分析.用户常常想在不同粒度上分析它们.联机分析挖掘提供在不同的数据子集和不同的抽象层上