12基于元数据的数据仓库性能优化系统.docx

上传人:b****5 文档编号:30037123 上传时间:2023-08-04 格式:DOCX 页数:28 大小:311.89KB
下载 相关 举报
12基于元数据的数据仓库性能优化系统.docx_第1页
第1页 / 共28页
12基于元数据的数据仓库性能优化系统.docx_第2页
第2页 / 共28页
12基于元数据的数据仓库性能优化系统.docx_第3页
第3页 / 共28页
12基于元数据的数据仓库性能优化系统.docx_第4页
第4页 / 共28页
12基于元数据的数据仓库性能优化系统.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

12基于元数据的数据仓库性能优化系统.docx

《12基于元数据的数据仓库性能优化系统.docx》由会员分享,可在线阅读,更多相关《12基于元数据的数据仓库性能优化系统.docx(28页珍藏版)》请在冰豆网上搜索。

12基于元数据的数据仓库性能优化系统.docx

12基于元数据的数据仓库性能优化系统

2004届毕业生

毕业论文

 

题目:

基于元数据的数据仓库性能优化

院系:

__数学与计算机学院_____

专业:

__计算机科学与技术

年级:

_____2000

(2)____________

学号:

______1000228_____________

姓名:

______陈磊________________

指导教师:

__________________________

 

2004年6月10日

摘要

随着数据仓库规模的扩大,数据仓库的性能问题就显得越来越突出,如何提高数据仓库的性能,除了在设计阶段对其逻辑结构和物理结构进行优化设计外;还可以在数据仓库运行阶段,采取一些优化措施来使系统性能最佳。

本系统主要功能是利用oracle9i所提供的技术:

分区、实体化视图和查询重写来实现数据仓库的性能优化:

用户自己建表、视图并进行查询比较;比较是否采用优化技术和直接查询的时间,体现优化程度。

关键词:

数据仓库、分区、实体化视图、查询重写

Abstract

Withtheenlargementofthescaleofdatawarehouse,theperformancequestionofthedatawarehouseseemsmoreandmoreoutstanding,howtoimproveperformanceofwarehouse,exceptthatcarryonoptimizationdesigntoitslogicstructureandphysicsstructureduringthecourseofdesigning;Canalsotakesomeoptimizationmeasurestomakesystematicfunctionbestatthewarehouseoperationstageofthedata.

Mainfunctionofthissystemistoexploittechnologyofferedbyoracle9iinstitute:

partition,materializedviewandqueryrewritetorealizeoptimizationofdatawarehouse:

Usersbuildtables,viewsandcomparetherequestresults;Comparethetimeofadoptingthetechnologyofoptimizingandthetimeofinquiringdirectly,reflectthedegreeofoptimizing.

Keyword:

Datawarehouse,partition,materializedview,queryrewrite

目录

第一章引言4

§1.1课题背景4

§1.2研究课题的任务、目的、意义4

1.2.1课题的任务4

1.2.2课题的目的5

1.2.3课题的意义5

§1.3系统的主要功能与特色5

1.3.1系统的主要功能大概如下5

1.3.2系统的特色5

第二章系统的需求分析6

§2.1本课题研究现状分析6

2.1.1数据仓库性能优化的发展现状6

2.1.2数据仓库性能优化关键技术6

§2.2要解决的技术难点9

§2.3本系统设计的主要内容、目标9

§2.4系统开发的环境和工具10

第三章系统的详细设计10

§3.1系统的体系结构和功能设计10

3.1.1系统的体系结构10

3.1.2系统所有的模块功能设计模块图11

§3.2系统各个模块的设计思路12

3.2.1连接数据库并列表模块12

3.2.2用户建分区表模块13

3.2.3用户建实体化视图模块15

第四章系统实现和测试19

§4.1系统主界面19

§4.2用户登录数据库的界面20

§4.3建分区21

§4.4建实体化视图22

§4.5查询后得到的结果集24

§4.6比较时间的柱状图25

第五章结束语26

致谢26

参考文献26

第一章引言

§1.1课题背景

随着计算机技术的飞速发展和企业界不断提出新的需要,数据仓库技术应运而生。

当前的数据处理可以大致地划分为两大类:

操作型处理和分析型处理。

操作型处理也叫事务处理,是指对数据库联机地日常操作,人们关心地是响应时间、数据的安全性和完整性。

分析型处理又叫信息型处理,用于管理人员的决策分析。

两者之间的巨大差异使得操作型处理和分析型处理的分离成为必然。

数据库系统作为数据管理手段,主要用于事务处理。

而数据仓库有助于把数据转变成信息,为用户提供决策支持。

但是必须注意的是:

即使可以建立一个数据仓库来帮助制定决策,仍然有可能在具有完美数据的情况下作出坏的决策。

随着数据仓库规模的扩大,数据仓库的性能问题就显得越来越突出,如何提高数据仓库的性能进行优化,除了在设计阶段对其逻辑结构和物理结构进行优化设计,使之在满足需求条件的情况下,系统性能达到最佳,系统开销达到最小外;还可以在数据仓库运行阶段,采取一些优化措施来使系统性能最佳。

在Oracle9i中,使用关系数据库存储数据仓库中的数据,数据仓库中包含大量的数据,对数据的提取和更新操作需要花费大量的时间和资源,为了能够管理好这些大表,同时提高访问大表的查询速度和执行效率,就需要用到并行处理和分区。

在数据仓库中,为了提高性能,使用的一项技术是创建汇总,汇总使特定类型的聚集视图,通过在执行和存储数据到表以前,预先计算大的连接和聚集,提高查询性能的视图。

在数据仓库中,可以使用实体化视图预先计算聚集数据,并把计算结果存储起来,实体化视图通常是通过查询重写机制进行访问的。

查询重写用于基于成本的优化。

§1.2研究课题的任务、目的、意义

1.2.1课题的任务

(1)研究提高数据仓库性能的机制;

(2)实现分区处理;

(3)实现实体化视图,查询重写;

(4)将步骤2和步骤3中未分区、未采用实体化视图、未查询重写进行比较给出实验数据结果。

1.2.2课题的目的

通过完成本课题,熟悉Oracle数据仓库的应用和开发,学会如何用Oracle

所提供的工具和技术对数据仓库进行优化处理。

1.2.3课题的意义

随着企业规模的扩大,企业的数据仓库的数据量往往非常大,包含了大量的历史数据。

要在大量的数据中查询,进行决策分析,数据仓库的性能问题就显得越来越突出,也是用户最能感受的。

Oralce实现了优化查询的机制,使得我们对数据仓库的大型查询能够得到快速响应。

§1.3系统的主要功能与特色

1.3.1系统的主要功能大概如下

◆用户与oracle数据库的接口,系统验证用户信息,若用户输入的用户名和密码等信息无误,则提示连接数据库成功,否则,捕捉异常,提示失败原因。

◆提供用户建分区表或实体化视图功能:

用户提供分区表或实体化视图的相关信息,系统检测信息是否合法,如果合法,则提示创建成功,并将信息存入到oracle数据库中,否则,捕捉异常,提示失败原因。

◆提供用户对oracle数据库中的表进行查询的功能:

用户选择表,并输入查询条件,系统验证此sql语句是否合法,若合法,则执行查询,并将结果显示出来给用户,否则,捕捉异常,提示失败原因。

◆对同一个用户查询,对于是否有分区,是否有实体化视图,是否查询重写进行比较,对用户查询的时间显示出来并保存,在把所得到的时间在图上直观的显示出来。

1.3.2系统的特色

本系统是利用oracle所提供的技术来实现对oracle数据库的查询优化,提供用户自己建分区表和实体化视图,并对它们和原有的表进行查询,比较是否有分区,是否有实体化视图,是否查询重写查询所花的时间,并让时间在图上直观的显示出来,让用户能够更好的了解优化查询的机制。

第二章系统的需求分析

§2.1本课题研究现状分析

2.1.1数据仓库性能优化的发展现状

当前,数据仓库的规模越来越大,一个企业的数据量都是几十G甚至几百G,而且数据还是动态增加的,因此对一个在静态数据库下设计的再完美的系统,也不得不考虑其性能问题了。

对一个这么大而且数据又动态增加的数据库进行查询等操作,响应时间也就很长,如何把这时间控制在用户可以接受的范围内就显的很重要了。

对数据仓库的性能进行优化,除了在设计阶段对其逻辑结构和物理结构进行优化设计外;还可以在数据仓库运行阶段,采取一些优化措施来使系统性能最佳。

2.1.2数据仓库性能优化关键技术

由于数据仓库的三个性能参数是:

吞吐量、负荷量和响应时间:

其中响应时间对最终用户来说是最能感受到的一项性能指标。

越低越好。

在任何一个系统中,吞吐量和响应时间作为调整目标通常是相互对立的。

如果响应时间长,吞吐量或许高;如果吞吐量低,响应时间或许低。

从用户的角度看,在同等的吞吐量的情况下,用户最关心的就是参数响应时间;为了减少响应时间,就很有必要采用一定的技术对数据仓库进行优化。

(1)分区:

对于处理数据按指数级增长的数据管理方法中,数据分区是能够解决问题的方法之一。

数据仓库中的数据非常适合进行分区。

对数据进行分区主要有以下几个原因:

·分区表中的每个分区存放于自己的表空间中时,可以在逻辑上认为是一个独立的对象。

·每个分区中的行可以独立于其他分区中的内容加以更新或删除。

·分区可以被删除,而不会影响表中其他分区的数据。

·当一个分区中的所数据量太大时,可以把它再分成两个分区,而不会影响其他分区的内容。

·可以在一个表中的一个或多个分区上进行维护操作,而不会影响其他分区,这就是分区的独立性。

分区将表中的行动态的分到小一些的表中,同时Oracle创建一个连接所有分区的视图,这样一来,尽管数据在物理上被分割开,但是在逻辑上仍然以一个整体出现。

将一个大型表分成多个小一些的表,可以改进维护操作、备份、恢复、事务处理和查询的性能。

当大表被拆分到分区时,系统与Oracle9i数据库交互时聚集数据数量的减少转变成性能上的提高。

Oracle提供了四种分区方法:

范围分区,哈希分区,列表分区,混合分区。

对于每一种分区方法而言,都有其自身适合的使用环境。

实现起来也差不多。

但由于oracle9i只支持范围分区,因此在本课题中主要实现范围分区。

(2)实体化视图:

在Oracle8之前,实体化视图被成为快照,实体化视图是模式对象,可以用来汇总、预先计算、复制和分发数据。

实体化视图通常用于存储汇总和预先计算的结果,它极大地提高了数据仓库的查询速度。

图2-1简单地展示了实现实体化视图地高层结构,共有五个部分,它们分别是:

·主站点:

为实体化视图提供数据的若干个表。

·源表:

用来存放将要被写入实体化视图的数据。

·源表快照日志:

与源表相互作用的事务逻辑地存储在该表地快照日志中。

·Oracle9i工作进程查询:

把快照日志的内容传送到远程站点。

·远程站点:

对实体化视图进行更新、删除、或插入新行。

图2-1实体化视图结构

实体化视图包括:

·带有聚集的实体化视图

·只包含连接的实体化视图:

创建这种类型的实体化视图的一个好处是耗费大量资源的连接可以预先计算。

·嵌套实体化视图

如果实体化视图不是基于用户自定义预建立的表创建的,需要占用数据库中的存储空间。

创建实体化视图可以使用两种方法:

BUILDIMMEDIATE和BUILDDEFERRED。

在定义实体化视图的时候,应当定义两种类型的刷新选项:

如何刷新,执行何种类型的刷新。

当使用查询重写的时候,可以创建满足大量查询的实体化视图,提高查询性能。

(3)查询重写:

企业数据仓库的数据量非常大,包含大量的历史数据,使用联机分析工具,数据挖掘工具和其他分析工具,查询数据仓库中的数据,进行决策分析。

Oracle的查询重写机制使得对数据仓库的大型查询能够得到快速响应。

在查询重写之前,需要检查几个项目,确定是否是查询重写的替代方式。

如果查询没有进行任何检查,查询将应用于详细表而不是实体化视图,这需要花费更多的处理和响应时间。

Oracle优化器使用两种不同的方法认识何时按照一个或者多个实体化视图的方式重写查询:

第一种方法是基于将查询中的SQL文本同实体化视图定义的SQL文本匹配;如果第一种方法失败,优化器使用更通用的方法,就是比较查询和实体化视图的联合、选择、数据列、分组列和聚集函数。

影响查询重写是否使用一个或者多个实体化视图的因素包括:

·是否使能查询重写

·重写完整性层

·维和约束

查询重写用于基于成本的优化。

上图是基于成本方法的图形化描述。

当满足以下的条件,才能进行查询重写:

·对于会话必须启动查询重写功能。

·对于查询重写必须启动实体化视图。

·在重写完整性层上允许使用实体化视图。

·查询重写请求结果的所有或者部分必须能够从实体化视图中预先计算的结果中取得。

图2-2查询重写过程

§2.2要解决的技术难点

对于分区,建范围分区时要建几个分区、如何选择范围是一个关键,选择的好,则会大大提高查询效率,可如果分区太大或有的分区数据很多,有的分区没数据或数据很少,不仅提高不了查询效率,反而降低的效率,同时也浪费的很大的空间。

在连接数据库时,要列出可供用户操作的数据库中的表,如何除去系统表和视图也是一个难点。

§2.3本系统设计的主要内容、目标

1)实现分区,将大表中的行根据用户所选的属性和范围动态的分到各个分区中。

2)实现实体化视图,查询重写

3)在Oracle9i中创建实体化视图,在查询数据库的表和视图的时候,Oracle服务器中的查询重写机制将自动使用总结表重写SQL语句,这种机制减少的查询响应时间。

查询重写功能优化了输入查询,选择最低成本的查询方法。

4)定义查询条件:

为下面对查询效率的比较提供条件。

5)在程序中嵌入一个计时的时间,用来比较是否采用分区、用实体化视图和查询重写的查询效率的比较

6)作图:

将步骤5的比较直观的表示出来。

§2.4系统开发的环境和工具

这次开发这个系统所用的编程语言是:

JAVA;

开发工具是:

JBuilder9;

操作系统是:

Windows2000Server;

后台数据库是:

Oracle9i。

第三章系统的详细设计

§3.1系统的体系结构和功能设计

3.1.1系统的体系结构

图3-1整体模块图

用户登陆到oracle数据库,用户建分区表、实体化视图,用户输入查询条件后系统执行,系统得到用户的查询时间,将所得到的时间在图上直观的显示出来。

图3-2系统体系结构流程图

3.1.2系统所有的模块功能设计模块图

◆连接oracle数据库并列表的模块:

用户要提供ORACLE数据库的名称,主机名,用户名,密码,系统验证用户信息。

模块实现与目标数据库的连接,并将ORACLE数据库中的可供用户操作的表在树中列出来。

◆用户建分区表模块:

用户提供创建分区表的相关信息,系统根据用户的信息进行创建,并将信息存入到oracle数据库中,同时在显示数据库中的表的树中添加该表及相关信息。

◆用户建实体化视图模块:

用户提供创建实体化视图的相关信息,系统根据用户的信息进行创建,并将信息存入到oracle数据库中,同时在显示数据库中的表的树中添加该表及相关信息。

◆用户查询并获得表名模块:

提供用户对oracle数据库中的表进行查询的功能,用户选择表,并输入查询条件,根据用户输入的查询条件判断用户是对哪个表进行操作,得到用户操作的表的名字,在转移到相应表的按扭,在对起进行查询处理:

系统验证此sql语句是否合法,若合法,则执行查询,并将结果显示出来给用户,否则,捕捉异常,提示失败原因。

◆查询并比较结果模块:

对用户同一个查询,对于是否有分区,是否有实体化视图,是否查询重写进行比较,对用户查询的时间显示出来并保存,在把所得到的时间在图上直观的显示出来。

§3.2系统各个模块的设计思路

3.2.1连接数据库并列表模块

由于oracle数据库中的系统表很多,为防止用户对系统表的修改,所以只列出可供用户操作的表,为了把这些表和系统表区分开,我在每个可供用户操作的表名前加上字符串“MY_”;再使用DatabaseMetaData取出数据库中的表,显示的时候去掉前面的字符串,因此此操作对用户是透明的。

当用户创建分区表或实体化视图时,也是在用户输入的表名前添加字符串“MY_”,在显示数据库中表的树中只显示用户定义的表名以及此表的所有属性。

只列出oracle数据库中以字符串“MY_”开头的表语句如下:

String[]a={"TABLE"};

Stringb="MY%";

ResultSetrs2=dbmd.getTables(null,null,b,a);

getTables()方法有四个参数:

第一个:

检查有没有目录的表,null表示检索所有表。

第二个:

检查有没有模式的表,null表示检索所有表。

第三个:

这是与SQL“LIKE”使用的参数相同的表名模式。

上面的“MY_”表示检索“MY_”开头的表。

第四个:

包括的表类型数组;null返回所有类型。

上面的“TABLE”是检查数据库中的表(没有列出索引等等)。

3.2.2用户建分区表模块

本模块是实现让用户在原有表的基础上建分区并将数据倒入。

用户先点击主界面的“建分区”按扭,进入了建分区界面。

在用户输入表名后选择是对哪个表进行分区,接着就是选择分区个数和分区大小,在选择分区个数旁边,有一个“选择范围”按扭,按此按扭就可以进入选择范围界面,在这个界面中列出用户刚才所选择的表的所有属性,让用户选择是用那个属性进行范围分区,用户选定分区属性后,就可以对此属性进行范围分区,范围由用户自己定义。

用户定义完范围后按确定退出“选择范围”界面。

为了比较各种大小分区的查询效率,因此分区个数有2,3,6三种,分区大小有10M、15M、50M三种供用户选择。

用户选择完毕后按“创建表并倒入数据”按扭,若操作无误,则等一段时间,系统会提示“表创建成功”,在创建成功的同时,将创建分区表的表名、类型、源表名等信息插入到原先在数据库中建好的分区管理表中,若没创建成功,则根据捕捉到的异常输出创建错误的原因。

图3-3是其结构流程图;

图3-3结构流程图

例:

若创建10M大小3个分区,则创建分区表的SQL语句如下:

sql="CreateTablesystem."+biaoming+"(";

for(inth=0;h

sql=sql+aaaaa[3*h]+""+aaaaa[3*h+1]+"("+aaaaa[3*h+2]+"),";

}

sql=sql+"partitionbyrange("+jComboBox4.getSelectedItem().toString()+")(partition";

sql=sql+"A10M31valueslessthan("+jTextField6.getText()+")"+"tablespaceA10M31";

sql=sql+"storage(initial100knext100kminextents1maxextentsunlimitedpctincrease0),";

sql=sql+"partitionA10M32valueslessthan("+jTextField7.getText()+")"+"tablespaceA10M32";

sql=sql+"storage(initial100knext100kminextents1maxextentsunlimitedpctincrease0),";

sql=sql+"partitionA10M33valueslessthan(maxvalue)tablespaceA10M33";

sql=sql+"storage(initial100knext100kminextents1maxextentsunlimitedpctincrease0))";

其中变量biaoming是用户自己定义的分区表的名字;

数组aaaa是保存用户创建分区的源表的所有属性;

ComboBox4是用户选择的分区数;

jTextField6,jTextField7是用户选择的分区范围;

A10M31,A10M32,A10M33是事先建好的表空间;

上面分区表结构建好后就从用户选择的源表中倒入数据,SQL语句为:

Stringsql5="insertintosystem.MY_"+jTextField5.getText()+"select*fromsystem.MY_"+jComboBox3.getSelectedItem().toString();

jTextField5是用户建的分区表的表名;

jComboBox3是用户所选择的源表名;

在建好分区表并倒入数据后,就把有关的建分区表的信息保存到事先在ORACLE数据库中建好的分区管理表中,SQL语句为:

sql2="insertintosystem.fenquvalues('"+biaoming+"','分区106','"+jComboBox3.getSelectedItem().toString()+"')";

其中表fenqu是事先在数据库中建好的,它包含表名,类型和源表名;表结构如图3-4:

图3-4

3.2.3用户建实体化视图模块

本模块是实现让用户在原有表的基础上建实体化视图。

用户先点击主界面的“建视图”按扭,进入了建视图界面。

用户先输入所建的视图名,接着选择是对什么表建视图:

有两个下拉框,里面列了可供用户建视图的表,用户可以选择一个或两个表进行建视图,若要选择一个,则一个下拉框中不要选择表。

选择表后点击“进入创建区”进入视图属性等的选择界面,在这个界面中列出用户刚才所选择的表,表以树状的形式给出,表名是根节点的一个儿子,在表名节点下,该表的所有属性都添加在它的儿子节点下。

该界面下方有三个checkbox,让用户选择是创建连接视图、聚集视图还是连接聚集视图:

若用户刚开始只选一个表,则只能建聚集视图,用户选择要创建视图的属性,并选择创建的视图的聚集属性;

若用户刚开始选择两个表,则可以创建连接视图或连接聚集视图,建连接视图时用户只需选择所建视图的属性,而建连接聚集视图,则用户要选择所建视图的属性和聚集属性。

当用户选择好属性后按“确定”按扭退出该界面,接着在按“创建完成”按扭开始创建视图。

若操作无误,则等一小段时间,系统会提示“视图创建成功”,在创建成功的同时,将创建实体化视图的视图名、类型、源表名等信息插入到原先在数据库中建好的视图管理表中,若没创建成功,则根据捕捉到的异常输出创建错误的原因。

图3-5是其结构流程图;

图3-5结构流程图

例:

若创建连接聚集视图,则SQL语句如下:

Stringsql3="createmateri

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 节日庆典

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1