已阅读5页,还剩47页未读, 继续免费阅读
(计算机应用技术专业论文)基于j2ee框架的数据库性能优化的研究与设计.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要捅矍j 2 e e 是建立在j a v a 平台上的企业级应用的解决方案,它极大的简化了企业级解决方案的开发、部署和管理等复杂的问题。同时,它也为企业级应用提供事务、安全性、命名、持久性和资源管理等服务,这些服务使得j 2 e e 应用开发人员能够专注于开发商业逻辑而不必考虑底层的细节,为企业级应用程序的快速开发提供良好的机制。但是j 2 e e 多层应用框架在提高软件重用性、可伸缩性、灵活性的同时,也使得代码庞大,层与层之间的控制关系复杂,系统性能问题变得日益突出。数据库作为应用系统的核心层,它的性能好坏对于整个系统是极其重要的。性能、负载、效率与组件的可扩充性总是存在一定的矛盾,这些矛盾容易导致开发人员陷入严重的性能陷阱,开发出来的产品不能满足业务的要求。本文主要内容就是阐述如何基于j 2 e e 框架进行数据库性能优化,包括如何正确的设计j 2 e e 优化解决方案、如何设计合理高效的数据库结构、如何编写高效的s q l 脚本,如何进行数据库访问组件的优化、数据库事务的优化以及基于数据交换的混合编程优化脑手。本文结合实际项目的开发需求,在数据库设计、数据库端编程、混合编程,数据库访问组件,分布式事务等多个方面分析产生性能瓶颈的因素,以解决这些性能问题为目标,从系统的数据库结构设计、多语言信息传递、组件接口优化、数据库事务调优等角度提出了j 2 e e 框架性能优化的解决方案。本文所提出的j 2 e e 框架性能优化的解决方案,己在国防科工委“船舶技术性能数据库 项目的开发中得到应用。通过项目的实际应用,证实了本文所提出的解决方案是合理可行的。关键词:j 2 e e ;数据库;组件;性能优化;混合编程。a b s t r a c ta b s t r a c tj 2 e ei sag o o ds o l u t i o no fe n t e r p r i s ea p p l i c a t i o n ,w h i c hi sb a s e do nj a v ap l a t f o r m ,i tc a nb eu s e dt os i m p l i f yc o m p l i c a t e dp r o b l e m si ne n t e r p r i s ei n f o r m a t i o nd e v l e p m e n t ,d e p l o y m e n t ,m a n a g e m e n ta n ds oo ng r e a t l y i ta l s oo f f e r st r a n s a c t i o n ,s e c u r i t y , n a m i n g ,p e r s i s t e n c ea n dr e s o u r c em a n a g e m e n ts e r v i c ef o re n t e r p r i s ea p p l i c a t i o n a 1 lt h e s es e r v i c ec a ne n a b l e dd e v e l o p e r sf o c u so nd e v e l o p i n gb u s i n e s sl o g i cw h i l ei g n o r i n gt h eb o r o md e t a i l ,a n dp r o v i d ew e l lm e c h a n i s mf o rd e s i g n i n ga n dd e v e l o p i n ge n t e r p r i s ei n f o r m a t i o np r o g r a m b u tw h e n j 2 e ea p p l i c a t i o nf r a m e w o r ki m p r o v et h er e u s eo ft h es o f t w a r ea n dd e c o m p o s ec o m p l e x i t yo fp r o b l e m s ,i ta l s ob r o u g h ts o m eq u e s t i o n ss u c ha sr e d u n d a n tc o d e s ,c o m p l i c a t i e dr e l a t i o n sa m o n gd i f f e r e n tt i e r s ,p r o b l e mo fs y s t e mp e r f o r m a n c eb e c o m e sm o r ee x t r u d i n g a st h ec o r eo fa p p l i c a t i o ns y s t e m ,d a t a b a s e sp e r f o r m a n c ei sv e r yi m p o r t a n tt ow h o l es y s t e m c o n f i c t sb e t w e e ne x p a n s i b i l i t yo fm o d u l e sa n dt h ep e r f o r m a n c e ,t h el o a d ,t h ee f f i c i e n c ya n dc o n s i s t e n c yo fd a t aw h i c hm a k ep r o g r a m m e r st og e ti n t os e r i o u sp e r f o r m a n c et r a p s ,t h ep r o d u c t sd e v e l o p e db yt h e mc a nn o ts a t i s f yt h er e q u i r e m e n to fw o r k i nt h ep a p e r , o u rw o r km a i n l yf o c u s e so ne x p o u n d i n gh o wt oi m p r o v ed a t a b a s ep e r f o r m a n c eo fs y s t e mw h i c hi sb a s eo nj 2 e e ,w h i c hi n c l u d e sh o wt od e s i g nt h es o l u t i o no fs y s t e mp e r f o r m a n c eo p t i m i z a t i o n ,h o wt od e s i g nt h er e a s o n a b l ea n de f f e c t i v ed a t a b a s es t r u c t u r e ,h o wt ow r i t ee f f e c t i v es q l ,h o wt oi m p r o v et h ed a t a b a s ea c c e s s i n gc o m p o n e n t ,h o wt oo p t i m i z et h ed a t a b a s et r a n s a c t i o na n dm i x e dp r o g r a mb a s e do nd a t ae x c h a n g i n g c o m b i n gw i t ht h ed e v e l o p m e n to fj 2 e es y s t e m ,w ea n a l y z et h ef a c t o r so fp e r f o r m a n c eb o t t l e - n e c k ,s u c ha sd a t a b a s ed e s i g n ,d a t a b a s ep r o g r a m ,m i x e dp r o g r a m ,p r o g r a ms t r u c t u r e ,c o d ee f f i c i e n c y , c o n s e q u e n t l y , a st h ea i mt os o l v i n gt h ep r o b l e m ,w ep r e s e n tt h es o l u t i o nf o rs y s t e mp e r f o r m a n c eo p t i m i z a t i o ni na s p e c t so fd e s i g no fd a t a b a s es t r u c t u r e ,d e s i g no ft e c h n o l o g yf r a m e w o r k ,m u l t i l a n g u a g em e s s a g et r a n s f e r , h i b e m a t ei m p r o v i n ga n dt r a n s a c t i o no p t i m i z a i t i o n t h ep e r f o r m a n c eo p t i m i z a t i o ns c h e m ah a sb e e na p p l i e di ns h i p d b ,w h i c hi sa p p r o v e df e a s i b l eb yt e s t i n ga n da n a l y z i n go fs y s t e mp e r f o r m a n c e k e yw o r d s :j 2 e e ;d a t a b a s e ;c o m p o n e n t ;p e r f o r m a n c eo p t i m i z a t i o n ;m i x e dp r o g r a m 独创性声明本人声明所呈交的学位论文是芬人在导师指导下进行的研究工作及取得的研究成果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含本人为获得江南大学或其它教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示谢意。签名:牲日期:壁塑亚窆关于论文使用授权的说明本学位论文作者完全了解江南大学有关保留、使用学位论文的规定:江南大学有权保留并向国家有关部门或机构送交论文的复印件和磁盘,允许论文被查阅和借阅,可以将学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存、汇编学位论文,并且本人电子文档的内容和纸质论文的内容相一致。保密的学位论文在解密后也遵守此规定。签名:导师签名:日第一章绪论第一章绪论1 1 研究背景随着信息技术的目益发展,各种应用软件系统渗透到企业网常运作的各个环节中,e r p ,o a 。c r m 一个企业能否成功的实施软件应用在很大程度上反映这个企业的自身实力和发展潜力。鑫前企业级的疲用平台主要有两种:j 2 e e ,d o t n e t 。j 2 e e 标准的制定者是j c p ,j c p由s u n ,i b m ,o r a c l e ,s a p ,b e a , s y b a s e 等几乎除了m i c r o s o f t 以外所有软件、电信、安防、保险、金融业巨头参与的标准管理委员。d o t n e t 主要是由m i c r o s o f t 一家设计和开发。j 2 e e 由于具有跨平台、高伸缩性、易扩展性的特点,基本上已经称为世界上大型企业级应用和关键任务应用的首选体系结构。j 2 e e 平台是j a v a 的企业开发平台它提供了一个基于组件的方法,设计、开发、装配及部署企业应用程序。使得开发企业应用程序的成本降低,并加快企业应用程序的设计和开发。j 2 e e 平台支持简化的、基于组件开发模型,囱于j 2 e e 基于j a v a 编程语言和j 2 s e 平台,它提供了编写一次,随处运行的可移植性,遵循j 2 e e 标准的所有服务器都支持该模型1 6 1 。随着这些技术的不断成熟,j 2 e e已经成为构建企业应用的最佳选择之一。与此同时,随着系统需求越来越高,用户的要求逐渐增多,很多系统在性能方面己经不能满足用户,用户也不愿意把时间浪费在每次等待系统漫长处理过程中,性能问题开始引起人们的关注。很多系统在开发的过程中,更注重系统的功能的实现而没有更多考虑性能相关的问题这样,淌系统投入使用了一段时间后,由性能引出的问题开始暴露,更严重的是,一些系统由于这样的闯题丽崩溃。据g a r t n e 统计,从一个性能问题发现到完全解决,平均需要时间是3 0 个小时【3 3 1 。所以,在商业化日趋严重的今天,性能闷题的解决显得尤为紧迫。系统性能阅题最主要的因素包括设计和开发过程中的失误。包括:系统架构的不合理,滥用很多不适用的设计模式,在开发过程中不注重代码的质量,数据库在设计上没有优化等。此外,网络,数据库,应用服务器等方面的部署也会影响系统的性能。系统的测试也是造成闯题的原因,因为很多测试不能及时找出问题以及对问题进行定位。这些都会对系统的性能产生影响。针对以上这种情况,本文通过分析各方面的问题艨提出一个较好的解决方案,并结合系统的应用,使开发人员能够更好的认识这些问题。1 2 研究现状如今,网络己融入人们的生活,各种w e b 应用系统也应运而生,然而随着用户需求的不断变化和市场竞争的日益激烈,这些w e b 应用系统必须不断地改进其内容和形式,丽解决该问题的关键是选择正确的软件系统体系结构。w e b 应用系统多采用基于b s 的三层或多层框架结构,就w e b 应用系统整体而言,大多采用表示层、业务层、数据层三层或多层体系结构。m v c ( m o d e l v i e w c o n t r o l l e r ) 模式正是将系统划分为模型层、视图层、控制层,因此,m v c 模式适应了日益复杂的w e b 应用系统的设计需求。采用m v c 模式构建w e b 应用系统的体系结构,麓够有效地解决在w e b 用系统开发过程孛由江南大学硕士学位论文于系统结构的复杂程度较高而带来的诸多关键性问题,如代码之间的耦合问题,代码的易维护性闻题,组件的露重用性问题,不同技能酶开发人员如何分工的问题等等。随着应用系统的多层化以及组件化,影响系统性能的因素越来越多,范围也越来越广。因此针对具体的系统制定适当的优化策略以及确定一个优化衡量标准都是每一个开发人员迫切希望解决的阔题。至。3 研究内容本文是以船舶技术性能数据库系统为研究背景。该系统引用了j 2 e e 主流架构,采用x m l 技术、构件技术、混合编程技术以及把关系数据瘴转化为对象类型技术。该系统实现了把二维性能曲线和三维船型通过浏览器实时推送到客户端、跨数据源的批量数据的插入、跨语言的数据交互与共享。充分体现当前主流构件技术和配置技术,实现业务功能的剪裁、配置和重构。董。4 文章组织结构1 、第二章详细介绍了数据库的整体结构与层次,并提出了系统优化的整体方案。2 、第三章详细介绍了数据库的结构设计基本思路,存在问题,以及优化策略;圊时也具体介绍了s q l 语言的发展历史,深入到数据库内部研究了s q l 语言的执行过程,为s q l 的优化奠定了基础,以数据库端的s q l 程序为例,介绍了常见的几种s q l 编程优化方案,并对不同的方案所带来的性能上的差异进行了分析。3 、第四章介绍了轻量级的数据库访问组件h i b e r n a t e 产生背景:接着我们介绍了h i b e r n a t e 的内在运行机铡,以图形方式描述了运行的结构。该组件是一个开源的框架,在研究其源代码的基础上,对其进行分步骤优化,列出了h i b e r n a t e 通常需要优化的几个部分,对其优化策略进行了详细的介绍,最终也通过实例介绍了优化的基本方法,对优化之后运行的效果也进行了比较。4 、第五章介绍了横跨多个数据源的分布式事务的实现与优化,首先解释了数据库事务管理的基本机制,其次分析了h i b e r n a t e 事务管理酌基本类型,并通过例子分析了h i b e r n a t e 事务管理实现方法。最后详细介绍了项目中分布式事务实现的初步策略,并对该解决方案存在的杰在性能问题做了进一步性能瓶颈定位,最终提出了一种新的分布式事务实现思想,解决系统中的性能问题。5 、第六章介绍了混合编程的项目背景,分析了j n i 在项目中的实现过程,解释了j a v a 、v c + + 、m a t l a b 这三种工具之闻的通信方式,对其存在的系统内存空间泄漏隐患也做了分析,最终通过j a v a 与v c + 十之间共享内存的方式解决了内存空间不足的问题,提高了系统的稳定性;并在此基磊窭上弓| 出了j a v a 程序翻框架结构的性麓闻题,通过分析j a v a代码的运行机制,提出若干条基本优化策略,以此来提高系统的整体性能。2第一章绪论1 5 项目支持从2 0 0 7 年1 月开始,作者参与了船舶技术性能数据库的项目开发,对船舶技术性能数据库的性能优化解决方案进行了一定的研究。本文就是在这样一种背景下完成的。船舶技术性能数据库研究开发是国防科工委下达的高技术船舶专项。该项目的总体技术方案是:本着突出重点、分步实施,解决能覆盖同类实船工程( 主要是占世界商船队前三位的油船、散货船及集装箱船) 共性技术的指导思想,通过攻关研究,建立一个船舶信息规模较大、可用性强、开放式的船舶技术性能数据库,以网络为基础,开发船舶技术性能数据库的共享技术和信息传输技术,使建成的数据库成为服务于全国船舶行业的技术咨询基础平台。3江南大学硕士学位论文第二章基于j 2 e e 的系统优化解决方案2 1 基于j 2 e e 的项目背景船舶技术性能数据痒利用s t r u t s ,h i b e r n a t e ,s p r i n g 这三个中闻件搭建了一个m v c模式的开发框架。在s t r u t s 中,a c t i o n s e r v l e t 承担着c o n t r o l l e r 功能。它是一个通用的控制组件。这个控制组件提供了处理所有发送到s t r u t s 的h t t p 请求的入潮点。它截取和分发这些请求到相应的动作类( 这些动作类都是a c t i o n 类的子类) 。另外控制组件也负责用相应的请求参数填充a c t i o nf o r m ( 通常称之为f o r m b e a n ) ,并传给动作类( 遗常称之为a c t i o n b e a n ) 。动作类实现核心商业逻辑,它可以访问j a v a b e a n 或调用e j b 。最后动作类把控制权传给后续的j s p 文件,后者生成视图1 3 。所有这些控制逻辑利用s t r u t s 。c o n f i g x m l 文件来配置。h i b e r n a t e 是一个对象关系映射框架,它对j d b c 进行了非常轻量级的对象封装,使得j a v a 程序员可以自由的使用对象编程思维来操纵数据库畦】。h i b e r n a t e 在j 2 e e 架构中出色的完成了数据持久化的重任。对于h i b e r n a t e 的使用主要是两个配置文件。一个是h i b e r n a t e c f g x m l 的配置文件和躲映射的配置文件。h i b e r n a t e c f g x m l 的配置文件是对数据库连接和h i b e m a t e 运行的主要属性进行描述和配鼍,o r 映射的配置文件是表达出持久类与数据库表的映射关系。这样对数据瘴的操作就可以转化为对持久化类的操作。其中持久化类和数据库表之间的转化由h i b e m a t e 来完成。s p r i n g 框架的基本功能的实现是由核心容器承担的。核心容器的主要组件是b e a n f a c t o r y ,它是工厂模式的实现。b e a n f a c t o r y 使用控制反转( i o c ) 模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。s p r i n g 上下文是一个配置文件,向s 两n g 框架提供上下文信息。s p r i n g 上下文包括企业服务,铡如j n d i 、e j b 、电子邮件、国际化、校验和调度功能。通过配置管理特性,s p r i n ga o p 模块直接将面向方面的编程功熊集成到了s p r i n g 框架中1 2 引。通过使用s p r i n ga o p 将声明性事务管理集成到应用程序中。j d b cd a o 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写酶异常代码数量( 例如打开和关闭连接) 。s p r i n gd a o 的面向j d b c 的异常遵从通用的d a o 异常层次结构。在m v c 设计模式中,s t r u t s 架构实现了对逻辑层,显示层和控制层酶分离。s t r u t s架构具有以下特点:首先可以多个视图能共享一个模型,其次模型是子包含的,与控制器和视图保持相对独立,可以很方便的改变应用程序的数据层和业务规则。最后控制器提高了应用程序的灵活性和可配覆性。但是它也有一定的不足之处,它没有对复杂的持久层的支持,也就是说当数据要存入数据库时s t r u t s 没有专门的处理。还是和传统的开发一样要直接通过j d b c ,s q l 与数据库交互。h i b e m a t e 在数据库操作方面弥补了s t r u t s框架的不足。对数据库的访问进行了封装。这样我们在程序里几乎看不见s q l 语句,从丽使程窿的可维护性和移植性有了很大麓提耐9 】。s p r i n g 提供了管理、业务对象的一致4第二章基于j 2 e e 的系统优化解决方案方法并且鼓励了注入对接1 5 1 编程而不是对类编程的良好习惯。s p r i n g 的架构基础是基于使用j a v a b e a n 属性的i n v e r s i o no fc o n t r o l 容器。s n g 在使用i o c 容器在所有架构层的完整解决方案方面是独一无二的,s p r i n g 还提供了唯一的数据访问抽象,包括简单和有效率的j d b c 框架,极大的提高了效率并且减少了可能的错误。将这三个框架结合起来使用,系统开发效率更高,开发的系统层次更加清晰,模块之间的耦合性变小,从而系统的灵活性、安全性、可移植性和维护性大大的增强协同工作图如图l :图l :协同工作图f i g l :c o o p e r a t i n gp i c t u r e2 2 整体优化的解决方案船舶技术性能数据库的层次结构如图2 ,这种多层结构在层与层之间相互独立,任何一层的改变不会影响其他层的功能江南大学硕士学使论文图2 :系统层次图f 1 9 2 :s y s t e mh i b e r a r c h yp i c t u r e上面的层次划分,基本上可以把系统分为三个层次:l 、数据访问层:实现对数据的访问功能。2 、业务逻辑层:实现业务的具体逻辑功能。3 、页面显示层:将业务功能在浏览器上显示出来。这三个层次的基础怒数据库,我翻的数据库系统选用的是o r a c l e ,由于系统的数据是来自不同的实验室,因此后台的数据源是多数据源的。在业务逻辑层,我们借助与v c + + ,m a t l a b 之间的混合编程实现了数据与图片的转换并实时推送到客户端。该系统的数据是来囱各个试验室试验所采集的数据。某一条船在各个试验室的试验数据最终要整理成一个e x c e l 文档,然后利用该系统镌批量装载接黼把数据装载入库,这个装载过程具有以下要求:l 、数据量大。2 、涉及多个数据源。3 、一旦其中一个数据源发生异常,之前的所有操作要会回滚。4 、准确定位e x c e l 中的错误位置显示给客户端。5 、整个装载时间不能操过3 0 s由于以上特点,我稍弓| 入了分布式事务管理来控制整个装载流程。下面的章节我们将围绕上面的层次结构逐步对整个系统进行优化,可以分为以下几个部分:6第二章基于j 2 e e 的系统优纯辩决方案数据库的设计优化与数据库端的业务程序优化。数据库的设计优化主要分为逻辑结构优位和物理结构优化,逻辑结构优化主要是通过代数式的方式优化的。物理结构优化是预先根据系统的业务特点确定一个合理的存储解决方案。数据库漆的业务优化把一些复杂的业务逻辑直接写在服务器端供程序调用以及转换一下数据库的业务的实现思路缩短执行时间,主要目的是减少网络的i o 和磁盘的读写。数据库访问组建的优化。项目中采用了h i b e r n a t e 作为数据的访问组建。h i b e r n a t e 提供了丰富的操作接口和灵活配置功能,而且提供源代码,可以在此基础上进行二次开发来满足颈嚣性畿需要。分布式事务优化。主要是针对系统设计的要求,如何缩短事务的处理时间。基于数据交换的混合编稷。讲解数据库中数据与图形之间的转换以及不同语言之间的内存控制。框架模型优化与程序优化。分析模型结构的特点与优势。另一方面分析程序结构并优化。优化的最终目的是提高系统的响应速度,并发量以及稳定性。2 3 本章小结本章首先在整体上对系统进行了层次划分,然后针对每个层次的业务特点提出了优化目标。这样的层次划分在体现整个系统的功能结构同时,也反映了系统的数据流动方向,优化备个层次也就为了实现加快数据流动的速度。因此这样的层次划分是科学的。7,l2345江南大学硕士学位论文第三章数据库设计优化与s o l 优化3 。l 数据库结构设计优化3 1 1 数据库结构设计的基本流程数据库设计( d a t a b a s ed e s i g n ) 是将业务对象转换为表和视图等数据库对象的过程。也是数据库应耀系统歼发过程中首要的和基本的内容。数据痒是信息系统的核心和基础。它把信息系统中的大量数据按照一定的模型组织起来,提供存储、维护、检索数据的功能,使信息系统可以方便、及时、准确从数据库中获取所需的信剧3 6 1 。一个信息系统的各个部分能否紧密的结合在一起以及如何结合,关键在数据库。因此必须对数据库进行合理设计。按照规范设计的方法,考虑数据库及其应焉系统开发全过程,将数据库结构设计分为以下四个阶段:( 1 ) 需求分析( 2 ) 概念结构设计( 3 ) 逻辑结构设计( 4 ) 物理结构设计2 数据库需求分析进行整个数据库设计必须准确了解与分析焉户需求( 包括数据和处理) 。需求分析是整个设计过程的基础,是最困难、最耗费时间的一步。作为地基的需求分析是否做得充分与准确,决定了在其上构建数据库大厦的速度和质量。需求分析的任务是通过详细调查现实世界要处理的对象( 组织、部门、企业等) ,充分了解原系统( 手工系统或计算机系统) 工作概况,明确用户的各种需求,然后在此基础上确定薪系统的功能。需求分析调查的重点是“数据”和“处理”,通过调查、收集和分析,获得用户对数据库的如下需求:( 1 ) 信息需求。指用户需要从数据库中获得信息的内容与性质。由信息要求可以导出数据要求,即在数据库中需要存储哪些数据。( 2 ) 处理要求。指用户需要完成什么处理功能。明确用户对数据有什么样的处理要求,从而确定数据之间的相互关系。( 3 ) 安全性与完整性要求。3 数据库概念结构设计概念结构设计是将分橇得到酶焉户需求抽象为概念模型的过程。邸在需求分柝的基础上,设计出能够满足用户需求的各种实体以及它们之间的相互关系概念结构设计模型。这样才能更好地、更准确地用某一d b m s 实现这些需求。它是整个数据瘴设计的关键。概念结构的主要特点是能真实、充分地反映现实世界;易于理解;易于更改;易于8第三章数据库设计优化与s q l 优位向关系、网状、层次等各种数据模型转换。描述概念模型的有力工具是e r 模型。设计概念结构通常有霾类方法:( 1 ) 自顶向下。即首先定义全局概念结构的框架,然后逐步细化;( 2 ) 自底向上。即首先定义各局部应用的概念结构,然后将它们集成起来,德到全局概念结构;( 3 ) 逐步扩张。首先定义最重要的核心概念结构,然后向外扩充,以滚雪球的方式逐步生成其他概念结构,直至总体概念结构;( 4 ) 混合策略。即将自顶向下和自底向上相结合,用自顶向下策略设计一个全局概念结构的框架,以它为骨架集成由自底向上策略中设计的各局部概念结构。其中最经常采用的策略是自底向上方法。即自顶向下进行需求分析,然后再囱底向上设计概念结构。4 数据库逻辑结构设诗概念结构是独立于任何一种数据模型的信息结构。逻辑结构设计的任务就是把概念结构设计阶段设计好的基本e r 图转换为与选用d b m s 产品所支持的数据模型相符合的逻辑结构。设计逻辑结构时一般要分三步进行:( 1 ) 将概念结构转换为一般的关系、潮状、层次模型;( 2 ) 将转换来的关系、网状、层次模型向特定d b m s 支持下的数据模型转换;( 3 ) 对数据模型进行优化。数据库的概念结构设计和逻辑结构设计是数据库设计过程中最重要两个环节。5 数据库物理结构设计数据库在物理设备上的存储结构与存储方法称为数据库的物理结构,它依赖于给定的计算机系统。为个给定的逻辑数据模型选取一个最适合应用要求的物理结果的过程,就是数据库的物理设计。数据库的物理结构设计通常分为两步:( 1 ) 确定数据库的物理结构,在关系数据库中主要指存取方法和存储结构;( 2 ) 对物理结构进行评价,评价的重点是时间和空间效率。3 。i 2 设计瓶颈在数据库的设计过程中往往存在以下一些问题:l 、数据库的信息扩展牲不强2 、存在冗余的数据和冗余的联系,冗余数据和冗余联系可以由其他数据和联系推导出来,增加了数据库维护难度,应给予消除。3 、规范化的设计不合乎需要4 、缺少对数据库进行时闻效率、空间效率、维护代价和各种用户需求进行权衡。9江南大学硕士学位论文3 1 3 优化策略充分考虑系统的可扩展性,使系统设计易于更改和扩充。设计人员和用户要取得共同语言,使用户充分参加到需求分析中来。合并e r 图,克服属性冲突,命名冲突和结构冲突。消除不必要的冗余,设计基本e r 图,主要可以采取以下方法:以数据字典和数据流图为依据,根据数据字典中的数据项之间的逻辑关系来消除冗余;也可以依据规范化理论来消除冗余,函数依赖的概念是消除冗余的形式化工具,确定e r 图实体之间的依赖关系,求f l 的最小覆盖集d = f 1 g l ,逐一考察d 中的函数依赖关系,确定是否是冗余的联系,若是,就把它去掉,由于规范化理论受到泛关系的限制,应该注意两点:冗余的联系一定在d 中,但是d中的联系不一定冗余;当实体之间存在多种联系时应该将实体之间的联系在形式上加以区分瞄】。为关系模式选择确当的存取方法。存取方法是快速存储数据的技术,要能在空间和时间效率上达到很好的结合。常用的存敬方法有三种:b + 树索弓l ,聚族方法,h a s h 方法。如果一个( 或一组) 属性经常在查询条件、连接条件或者聚集函数中出现,考虑在这个( 或这组) 属性上建立索引。索引并不是越多越好,因为数据库系统维护索引要付出代价;聚族方法首先要确定有多少关系,关系中的连接属性是哪些,把关系中的连接属性聚集存放,减少磁盘的i o 。经常建立连接的关系可建立聚族,每个关系的属性不麓太少,太少了聚族效果不明显。确定数据的存放位置,数据分为易变部分和稳定部分、常存取部分和存取频率较低的部分。这些应该存放不同地方,如常存取的稳定的部分应该存在内存中。l 、优化数据模型以提高性能同时检索的对象可以一并储存以提高性能。在关系数据模型中,初始映射一般会产生一个简单的类到表的映射。如梁需要同时检索不同类的对象,r d b m s 使用一个称为表联结的操作来检索与所关心对象有关的行。对于需要经常存取的数据,联结操作的运算将会非常昂贵。为消除联结操作的开销,可以采用一个标准的关系技术帮反规范化。反规范化是将两个或更多不同表的列合并到同一个表中,这对于将信息进行预连接非常有效。反规范化反映较昂贵的更新操作和较低廉的检索操作之间的折衷,但偏向于后者。由于每次查询都要检索所有的属性,因此如果查询仅仅针对在反规范化表中有效连接的对象的某一个属性,则反规范化将降低系统查询的性能。但在应用程序通常需要所有属性的情况下,反规范纯能够显著地提高性能。对两个以上的表进行反规范化的情况非常罕见,因为这样做不仅会增;d 1 1 1 1 :关联关系查询的开销,还会增加插入和更新的开销。如果没有强有力的令人信服的证据来证骥对两个表进行反规范化的好处,则限制这种反规范化方法无疑是一个好措施。如果类是嵌套的,则反规范化能够从设计类中推断出来。嵌套类始终要映射到反规范化的表中。1 0第三章数据库设计傀 艺与s q l 优纯某些对象数据库允许使用类似反规范化的概念,数据库中的相关对象一起聚簇在磁盘上并通过单独豁操作进行检索。使用原理也很相似:通过减少系统从数据库中检索相关对象必须执行的工作来减少对象检索时间。2 、优化数摅存取一旦设计好表的结构,就要确定针对数据执行的查询类型。数据库通过编制索引来提高访闻速度。应考虑以下的索引编制策略:表的主键列始终要编入索引。主键列经常用作搜索键,以及用于联结操作。如果表少于1 0 0 行并且列也很少,则编制索引收益甚微。小型表般很容易储存在数据库高速缓存中。由于小于1 0 0 行的表往往储存在数据库高速缓存中,因此对这类表采用索引编制方法几乎没有什么收益( 行的确切数嚣与有多少行储存在数据存储块中有关,块的大小通常介于5 1 2 字节到2 0 4 8 字节之间。从物理的角度来看,数据库执行的i 0 单位不是一行,而是一个数据存储块) 1 1 5 1 。还需为经常执行的查询或必须快速检索数据的查询( 即一般情况下您还在等候时,搜索就已经完成) 定义索引。必须为每一个属性集定义一个索引,这些属性集般都一起用作搜索标准。例如,如采系统需要能够找到订购某一特定产品的所有订单,则有必要在明细分类项目表中的产品号码列上建立索引。索引一般应只在用 乍标识符的列上进行定义,两不在数字值( 例如帐户余额) 或文本信息( 例如订单注释) 上进行定义。标识符列的值往往在创建对象时就已经指定,并在对象整个生命期内保持不变。索引应建立在简单数( 整数和序歹l j 数类型) 而不是浮点数上,也几乎很少建立在字符串上。数字之间的比较操作比字符串之间的比较操作要更加简单快速,如果查询或大型连接处理的数据量很大,尽管每次操作节约的开销都较小,但汇集起来的节约数量将迅速增加。基于数字列的索引占用的空间往往也较小。但另一方面,使用索引并不是随意的;一个表中的索引越多,插入和更薪处理的时间也越长。下列预防措施有利于调节索引使用:不要仪为了提高一个不常执行的查询的速度而编制索引,除非该查询在某个关键点发生并且必须达到最大执行速度。在某些系统中,更新和插入的性能要比查询的性能更加重要。比如在该系统的实时数据采集应用程序中,偶尔才会有联机查询,大多数数据都是闵期性进行分析,分析通过批量报告应用程序对数据进行统计分析完成。对于数据采集系统,删除所有的索引以实现最大的吞吐量。如果需要索引,可以在批量报告分析应用程序开始运行以酶对它们进行重建,并在报告分析完成后将它们删除。请记住索引有一个隐藏的开销:索引需要花费时间柬更新( 每一次插入、愿新或删除的开销) 并占用磁盘空间。确信您从它们的使用中获得收益。许多数据库提供多种索引类型供选择。最常见的包括:江南大学硕士学位论文b 十树索引。最常使用的索引类型,它们基于平衡的b 十树索引数据结构。当索引主键值随机分布并且通常具有较大的可变性时,这种索引性能很好。但当被索弓| 的数据已经排列有序时,该索引性能就很差。散列索引。不常使用,索引键值是散列的。当索引键值的范围已知、相对保持不变且唯一时,散列法就能够提供较好的性能。散歹法依赖于利用键值来计算重要的数据的地址。由于对可预见性的需要,散列索引往往只适合很少变化的中型查询表使用。索弓| 编制策略酶选择对性能有很大的影响,正如龟l 建索弓| 的时间选择也链影响性能一样。大量的数据负载应以无索引的方式执行( 这可通过删除索引、装载数据然后重新创建索引来实现) 。这样傲的原因是因为每添加一行时,索雩l 结构都要进行重新平德调整。由于后续行将改变最佳索引结构,这样每插入一行时完成的重新平衡索引的工作就极大地浪费了。以无索引方式装载数据,然后在数据装载完毕后再重建索引,这样速度会更快效率会更高。一些数据库提供大块数据的加载程序来自动完成数据装载工作。3 、定义存储特性数据库不是基予行或记录甚至整个表来执行v o ,蔼是基于磁盘存储块来执行的。这样做的原因很简单:储存块的v o 操作通常在系统的软件和硬件上进行优化。结果,数据库的表和索引的物理组织对于系统的性能有很显著的影响。物理组织主要有以下几个方面:磁盘页面上的信息密度单个磁盘上和跨越多个磁盘驱动器的磁盘页面的位置分配给表的磁盘空间量4 、磁盘页面密度磁盘页面的密度取决于数据随时间变化的预期变化程度。简言之,较低密度的页面更能接受随时闻变化的值变化或数据累加,丽一个较高密度的数据页面可以提供较好的读操作性能,因为每个储存块读取能够检索到更多的数据。为了简化磁盘管理,按照表可能变化的程度对表进行分组。一开始时最好将表分成三组;高度动态、略微动态和基本静态。高动态表应该映射捌有大量空余空阙( 可能3 0) 的磁盘页面上,而略微动态的表需要的空余空间则要少一些( 可能1 5 ) ,至于基本静态的表则需要很少的空余空润( 可能5 ) 1 5 】。表的索弓| 应做类似的映射。5 、磁盘页面位置接下来,确定放置磁盘页面的位置。目的是设法平衡不同驱动器和磁头上的工作量以减少或消除瓶颈。考虑应用以下指南:千万不要将数据和操作系统、临时文件或交换设备都放在同一个磁盘上。因为即便不向驱动器增加额外的工作量,它们实际上也已经非常繁忙丽无法承担更多的工作。设法将同时存取的数据放在不同的驱动器上,设法平衡它们间的工作量。有些系统支持并行f o 通道,所以如果可熊的话应将数据放在不同的通道上。设法将索引放在与它对其编制索引的数据不同的驱动器上,目的同样是为了分散工作量。1 2第三章数据库设计优化与s q l 优化如果可能,设法使用原始i o 。原始i o 绕过由操作系统形成的普通文件缓冲。因为由d b m s 对它自己的缓冲进行维护,所以就没有必要让o s 也来管理缓冲。管理原始i o 多少有些复杂,所以使用它时必须要仔细考虑。对于复杂查询,请考虑将数据进行分条处理。分条包括将网一个表( 或对象集) 的数据页面放在不同的驱动器上以减少磁盘磁头寻址时间,并潜在地利用支持并行i o的智能控制器。首要原贝f j 是采用驱动器绝对无法分配i o 。夥o 平衡是一个需要反复的试验性过程。在精化阶段建立数据存取性能的原型并安装监视物理和逻辑i o 的合适的装置,这就畿够及早地发现闻题,而且还有时闻来调整数据库设计。6 、磁盘空间分配利用永久性设计枧制的特征,估计需要储存的对象数量。虽然储存对象所需的磁盘空间量随着d b m s 的不同而不同,但大小估计值一般是以下公式的一个函数:空间大小= ( 表的固定开销) + ( 行数( 每行的平均大小平均数据密度) )其中,平均数据密度代表页面密度百分比。此外,确保将索引的大小也计算在内。产品的数据库管理员( d b a ) 手册将提供一个精确的空间大小估计公式。计算磁盘空间时,确保将由数据增加带来的空间增长计算在内。请将磁盘空间分配的计算结果与存放数据的页面位置结合使用。有些数据库允许表跨越多个物理驱动器,两有些则不能。如果您的数据库不允许跨越驱动器,您最好对数据布局进行局部最优化以容纳大量数据。另外一个方法就是利用r a i d ( 即代表“独立磁盘冗余阵列”) 驱动器,它允许将多个独立的磁盘驱动器当作一个单独的很容易扩展的大容量磁盘。r a i d 驱动器可以有效地对数据进行自动分条,但是对数据物理布局的控制较差,因此精细优化的难度就更大。7 、定义参照表在整个项目中经常要用到的表包括标准的查询表、确认表或参照表。由于这些表中的数据经常被读取假很少改变,因此值德作特殊考虑。在设计模型中,这些表包括诸如标准产品代码、州或省的代码、邮政编码、税务表、地区代码确认表或者其他经常访问的信息等。在金融系统中可能就是保单号、保单费率厘定类别或换算率列表。在设计模型中查找首先被读取的类,为大量客户提供确认信息。结合前面的步骤,数据应以相对压缩的数据页面形式存储在快速驱动器上。如果数据很少,不要费神为之编铡索弓| ,因为为小型表编制索孳| 实际上将会增加更多的系统开销。一个小型但是经常被存取的表往往会驻留在内存中,因为最近较少使用( l r u ) 高速缓存算法往往会将这些表保留在数据缓存中。确保数据库的高速缓存足够大以便将所有的参照袭保存在内存中,如果可能,还包括奄询和事务的常规“工作集空问”。通常,提高数据库性能的秘密就在于减少i o 。相对丽言,内存是很廉价的,因此您需要更多的内存就尽管多多赡买。参照表的结构确定后,接下来就要确定填充该参照表的策略。由予需要在项目早期访阀这些参照表,嚣丽确定参照值并装入参照表也经常需要在项鹭相对早的时候进行。江南大学硕士学位论文尽管数据设计员不负责获取数据,但必须负责确定刷新参照表的时间和刷新方法。8 、确定数据和参照完整性实施规则数据完整性规则,也称作数据完整性约束,能够确保将数值限制在规定的范围内。在能够确定范围的地方,数据库就能够实施这些规则。( 这并不是说应用程序中不应该进行数据有效性检验,丽只是说在应用程序无法正常工作的情况下,数据库可以作为“最终检验者”) 。在存在数据确认规则的地方,定义数据库约束来实施规则。另外,参照完整性规则还可通过数据库实施。这样可以确保对每一外键值,在弓| 用表中都有一个主键值。凌询优化程序也经常通过定义外键约束来提高查询性能。基于设计模型中的关联关系,在数据模型中的关联关系表上创建外键关系约束。在许多情况下,外键实施规则将使用到上一步骤中讨论的参照表。9 、向数据库分配类行为大多数数据库支持存储过程功能。存储过程是运行予数据库管理系统的进程空间内的可执行代码,它具有无需通过网络传输数据即可在服务器上执行数据库相关操作的能力。灵活地使耀它们能够提高系统的性能。存储过程通常有两种形式:实际过程与触发器。过程由应用程序显式执行,它一般都有参数,而且能够提供一个明确的返回值。触发器则在某些数据库事件( 插入一行、更新一行、删除一行等) 发生时被隐式地调用,它没有参数( 因为
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年福建省药师考试药学综合知识专项训练题库及答案
- 部编版高中历史一轮复习古代史冲刺试卷及答案
- 2026年电子商务师职业资格考试电子商务跨境电商网络安全与数据安全专项训练习题集及答案
- 公共卫生执业医师考试公共卫生服务与健康管理模拟试卷及答案
- 健身教练证运动训练课程设计模拟试题及答案
- 公共卫生执业医师考试卫生事业管理学模拟试卷及答案
- 山东省医师资格考试急诊医学科目专项训练题库及答案
- 心理治疗师资格证考试心理危机干预技能备考习题集及答案
- 2026年特种设备作业人员证高处安装维护安全知识与技能测试卷及答案
- 北师大版数学 2.2.2 平方根(4题型+针对训练) 同步练习 含答案
- 2025全国高校辅导员素质能力大赛考试测试题(含答案)
- 2026年建筑安全员C证考试真题及答案
- 2026年纪检监察案件查办政策考试题及答案
- 2026年度“十八项医疗核心制度”培训考试真题解析含答案
- 2026年江苏省粮食集团有限责任公司人员招聘笔试备考题库及详细答案解析
- 中国多发性骨髓瘤诊治指南(2026年修订)
- 《物流场所消防安全管理》XFT 3026-2026
- 律师事务所内部培训制度
- 2026年事业单位招聘公文处理与档案管理试题冲刺卷
- 工程未来探索-解读前沿技术与发展趋势
- 品检员工作基本知识培训课件
评论
0/150
提交评论