(计算机应用技术专业论文)数据访问中间件中池化资源和缓存的研究与应用.pdf_第1页
(计算机应用技术专业论文)数据访问中间件中池化资源和缓存的研究与应用.pdf_第2页
(计算机应用技术专业论文)数据访问中间件中池化资源和缓存的研究与应用.pdf_第3页
(计算机应用技术专业论文)数据访问中间件中池化资源和缓存的研究与应用.pdf_第4页
(计算机应用技术专业论文)数据访问中间件中池化资源和缓存的研究与应用.pdf_第5页
已阅读5页,还剩64页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

河海大学硕士论文数据访问中间件中池化资源和缓存的研究与应用 摘要 随着信息技术和i n t e r n e t 的发展,b s 三层结构得到了应用,其核心思想是 把数据访问和业务逻辑放到中间层。现有水利领域数据访问中问件基于j 2 e e 平 台设计,能够较好的解决传统c s 结构下的问题。但仍存在一些不足,在并发用 户访问方面,缺少有效的控制;在访问效率方面,缓存的命中率偏低。 本文首先分析了水利信息系统的特点和数据访问中间件存在的问题,提出了 数据访问中间件的部分改进设计方案,整体模型使用轻量级容器。由于轻量级容 器不支持e j b ,这需要自己来设计数据持久层。本文主要工作:1 设计使用多线 程和线程池技术来优化任务线程的运行,可以控制并发访问量及系统因线程反复 创建而带来的资源浪费和性能下降,适应大量的并发访问并有效控制负载。2 原来由应用服务器所维护的实体b e a n 缓存在轻量级容器中已不可使用,需要设 计适合轻量级容器的缓存系统。在中问件中增加查询语句匹配与解析层,实现动 态缓存过滤,缩小缓存范围。设计使用基于查询相关查询的缓存代替传统缓存, 对于缓存的结构、查询匹配、一致性维护策略及替换策略均作了详细设计。这在 水利领域数据访问以查询为主、数据相关度较高的应用中,数据访问效率会有较 大提升。3 在数据库连接部分,设计使用数据连接池技术,客户端使用数据源方 式访问数据库,从连接池中取用连接,访问结束后将连接返回连接池。这种方式 有效减少了数据库连接的时间,提高了访问效率。最后本文对所用技术进行了应 用方案设计和测试。通过在不同情况下的测试,实验表明:线程池较好的减少了 多客户访问时的线程开销;相关查询缓存的设计在大量相关访问时具有较高的缓 存命中率,有效减少了中问件同数据库之问的数据传输。 关键词:数据访问中间件、多线程、线程池、缓存、数据库连接池 河海大学硕士论文数据访问中间件中池化资源和缓存的研究与应用 a b s t r a c t w i t ht h ed e v e l o p m e n to fi n f o r m a t i o nt e c h n o l o g ya n di n t e r n e t b ss t r u c t u r eh a s b e e na p p l i e d t h ec o r et h i n k i n go fi ti sp u td a t aa c c e s sa n db u s i n e s sl o g i ci nt h e m i d d l el a y e r p r e s e n td a t a b a s ea c c e s sm i d d l e w a r eo fw a t e rd o m a i ni sd e s i g n e do n j 2 e ep l a t f o r m ;i tc a nr e s o l v et h ep r o b l e m so f c ss t r u c t u r e t h e r ea r es o m e p r o b l e m s t h ec o n t r o lo fu s e ra c c e s si sn o ts oe f f i c i e n t ;o nt h ea s p e c to fd a t aa c c e s se f f i c i e n c y , t h eh i t - r a t eo fc a c h ei so nt h el o ws i d e t h i sa r t i c l ef i r s t l ya n a l y s e st h ec h a r a c t e ro fw a t e ri n f o r m a t i o ns y s t e ma n dt h e p r o b l e m so fd a t aa c c e s sn f i d d l e w a r e b a s eo nt h ea n a l y s i s ,t h ea r t i c l ep u tf o r w a r d1 t l l i m p r o v e ds c h e m et ot h ed e s i g no fd a t aa c c e s sm i d d l e w a r e 1 1 1 ew h o l e m o d e lu s e st h e l i g h tc o n t a i n e r t h el i g h tc o n t a i n e rd o e s n ts u p p o r te j b s ow em u s td e s i g nt h e p e r s i s t e n tl a y e nt h em a i nw o r k so ft h i sp a p e ra r e - 1 t h et e c h n o l o g yo fm u l t i t h r e a d a n dt h r e a dp o o la r eu s e dt oo p t i m i z et h er u no f t a s kt h r e a d ,i tc a nc o n t r o lt h ec o c u r r e n t a c c e s sa n dr e d u c et h ew a s t eo fr e s o u r c ea n df a l lo fp e r f o r m a n c ed u et ot h er e p e a t c r e a t i o no ft h r e a d t h es y s t e mc a na d a p tt og r e a tc o c u r r e n ta c c e s sa n dc o n t r o lt h el o a d e f f i c i e n c y 2 t h ee n t i t yb e a nc a c h ei na p p l i c a t i o ns e r v e rc a nn o tb eu s e di nl i g h t f r a m e w o r k t h em i d d l e w a r ea d d sal a y e ro f m a t c h i n ga n dp a r s e ro f q u e r ys e n t e n c e ;i t c a ni m p l e m e n td y n a m i cf i l t r a t i o no fc a c h ea n dr e d u c et h er a n g eo fc a c h e u s i n g c o r r e l a t i v eq u e r yc a c h et or e p l a c et r a d i t i o nc a c h e ,t h ea r t i c l ed e s i g n sa n di m p l e m e n t s t h ec a c h es h a l c t u r e , q u e r ym a t c h i n g ,s t r a t e g yo fc o n s i s t e n c ya n ds t r a t e g yo f r e p l a c e m e n t t h ea p p l i c a t i o no fw a t e rd o m a i na c c e s s e sd a t a b a s em a i n l yf o rd a t a q u e r ya n dt h eq u e r i e sh a v eh i g hc o r r e l a t i o n ,s oi tm a yr a i s et h ee f f i c i e n c yo fd a t a a c c e s s 3 a tt h ep a r to f d a t a b a s ec o n n e c t i o n ,t h ea r t i c l ed e s i g n sad a t a b a s ec o n n e c t i o n p 0 0 1 t h ec l i e n tr i s e s d a t ar e s o u r c et oa c c e s sd a t a b a s e ,g e t st h ec o n n e c t i o nf r o m c o n n e c t i o np 0 0 1 w h e nt h ec l i e n tc o m p l e t e st h ea c c e s s t h ec l i e n tr e t u r n st h e c o n n e c t i o nt ot h ep 0 0 1 t h i sm e t h o dr e d u c e st h et i m eo fc o n n e c t i n gt od a t a b a s ea n d r a i s e st h ee f f i c i e n c yo fa c c e s s f i n a l l y , t h ea r t i c l ed e s i g n st h ea p p l i c a t i o np r o j e c ti n j i a n g s uw a t e rd a t a b a s es y s t e ma n dt e s t st h e s et e c h n o l o g i e s t h r o u g ht e s t i n gu n d e r d i f f e r e n tc o n d i t i o n s ,t h er e s u l ts h o wt h a tt h r e a d p o o l r e d u c et i m e s p e n d i n go f m u l t i - t h r e a d ;t h ed e s i g no f c o r r e l a t i v eq u e r yc a c h eh a v eh i 曲e rh i t r a t em a dr e d u c et h e d a t at r a n s f e r sf r o md a t a b a s et om i d d l e w a r eu n d e rt h ec o n d i t i o no fh u g ec o r r e l a t i v e a c c e s s k e y w o r d s :d a t aa c c e s sm i d d l e w a r e ,m u l t i t h r e a d ,t h r e a dp o o l ,c a c h e ,d a t a b a s e c o n n e c t i o np o e l 河海大学硕士论文数据访问中间件中池化资源和缓存的研究与应用 第一章绪论 1 1 研究背景 传统的企业应用大部分都是基于d b m s 的客户机服务器模式,即c s 结构。 在c s 结构中,所有网络节点可划分为客户机和服务器两类。c s 结构由四部分 组成,分为用户界面、表现逻辑、事务逻辑和数据访问。客户端包括用户界面和 表现逻辑,用户界而主要完成应用的前台交互及后台处理,不能直接访问数据库 中的数据,表现逻辑则向应用提供一个统一的数据库访问接口。服务器端包括事 务逻辑和数据访问,事务逻辑主要完成数据的安全性及事务的完整性等管理工 作,它可跨越多个服务器协同操作,数据访问则进行实际数据库访问操作。 随着信息技术的迅猛发展,特别是i n t e r n e t 的发展和普遍应用,c s 结构的 缺陷也逐渐暴露出来。首先,软件应用规模极大扩展,许多应用程序需要在基于 异构平台的网络环境中运行。在这种异构环境下,不但存在多种硬件系统,而且 还存在着基于这些硬件的多种软件平台。于是,便带来了异构平台、异构数据库 之间的互操作问题。其次,当c s 结构推广到企业级关键任务应用时,问题越来 越明显。如系统可扩展性差、耦合度高、可管理性差、维护代价高、安全性差、 系统通信功能弱等。 为了解决这些问题,三层结构应运而生。即在传统c s 体系结构中,加入一 个中间层,使其扩展成客户机一中间层服务器结构模式。将原来的业务逻辑从 客户端移到了中间层统一处理。客户端仅负责用户界面帕交互,不再直接访问数 据库服务器,而改为发送访问请求至中间层,由中间层负责数据库访问并进行相 应的业务逻辑处理,将结果返回给客户端。而当数据库服务器发生变化时,只需 要更新中间层的业务逻辑即可,对客户端则是透明的过程。 三层结构有效的降低了客户端与服务器端之间的耦合度,将业务逻辑集中处 理,在扩展性、安全性、易维护性方面有了极大的提高,成企业级应用系统的首 选模式。 在水利系统的信息化建设中,很多地方部门已经初步实现了水情、工情、水 质等信息的采集传输和处理,建立了相对独立的信息管理系统和数据库系统。而 这些系统大都基于传统的c s 结构,为了访问分散在各地的各个水利部门的水利 数据,需要使用三层结构和数据访问中间件技术。 水利信息系统的特点有:l 、主要的目的是数据共享,而对采集后的数据更 新极少。因而数据访问中间件的主要任务是数据查询,而数据更新相对极少。2 、 查询的数据量较大且数据访问的相关度较大,具奄极大的语义相关。如查询2 4 小时内降雨量后接着查询1 2 小时内降霭量。3 、访期量在一定时期内会很大。这 是由水幂4 行业的特点决定的,因为在某些关键时期,r 如溅期需要对水位、水量、 河海大学硕士论文数据访问中间件中池化资源和缓存的研究与应用 流速等各项数据进行多次查询也便于进行决策。 以往的研究侧重于数据访问中间件整体架构的设计、多数据源的集成等问 题,对于中间件系统性能关注较少,而在架构思想相对成熟的今天,随着数据量 与并发访问量的激增,系统处理能力和访问效率成为制约整个系统的瓶颈。其中 并发访问的管理和性能、缓存的命中率等问题更为突出。 1 2 研究现状 1 并发用户访问性能 由于传统上由客户端和数据源端处理的功能部分开始向中间件方向转移,这 使得中间件的功能越来越多,复杂性越来越大。同时,随着数据量和并发访问量 的增加,并发控制与性能已成为需要考虑的一个紧迫问题。多线程技术已成为提 高网络环境下软件性能一个关键因素。在以往的服务器端程序开发中,为了解决 在大量短小并发任务情况下系统性能问题,线程池技术已得到应用。在j 2 e e 平 台上,人们提出了一种实现中间层的新方式w 曲应用服务器。相对于传统 中间件,可以认为w e b 应用服务器是在w e b 计算环境下产生的新型中间件 【l 】。在应用服务器中,线程池技术也被广泛使用,i b mw e b s p h e r e 也使用了线程 池技术【2 ,文献 3 】在其自主研发的应用服务器s t a r c c m 中也使用了线程池技术。 线程池的研究向自适应管理方向发展,文献 2 】提出了一种基于反馈技术的自适 应管理框架。线程池的性能也是研究的重点,文献【3 】对高性能线程池模型进行 了研究。 现有的水利领域数据访问中间件缺少对并发访问时的有效访问控制及对系 统中线程运行的控制。通常情况下对超出访问量的用户访问将返回访问失败,对 大量短小任务的运行没有优化。本文采用多线程技术,并使用线程池设计来减小 线程创建和消亡的系统开销。在大量并发访问的情况下,通过阻塞队列对任务进 行排队,可以保障中间件运行正常并进行并发访问控制,避免了出现负载过大而 导致系统性能急剧下降甚至失去响应。 2 数据库连接池技术 在网络速度不断提高、网络延时减小的情况下,数据访问的效率问题已凸显 出来。数据库连接池设计是提高数据访问效率的一个有效技术,在中间件启动时 就创建一定数量的数据库连接,从而降低了每一个数据访问的数据库连接开销。 目前主流的应用服务器均使用了数据库连接池技术,数据库连接池技术的研 究侧重于连接池结构的设计与实现,其自适应管理也有所研究,文献【4 】对基于 j d b c 的数据库连接池的自适应管理策略进行了研究。 目前的数据库连接池均采用各自韵设计方案和优化设计,虽然可以较好的实 现池化连接韵思想,但并不符合标准的j d b c 规范。每种连接池的设计均有自己 的接口定义,这对使用者造成理解和使用上的不便,这些连接池的实现方法都不 河海大学硕士论文 数据访问中间件中池化资源和缓存的研究与应用 同程度地增加了与使用者之间的耦合度。 3 中间层数据缓存技术 文献 5 在综合各种缓存研究后指出,在数据缓存技术的研究领域,根据数 据缓存区的应用位置不同可以分为以下三种:客户机端数据缓存系统、集中式数 据缓存系统、分布式数据缓存系统。客户机端数据缓存建立在各个客户端的节点 当中,对接收的数据进行缓存。集中式数据缓存系统是在服务器或网关上设置一 些数据缓存区。分布式是指数据缓存区在网络中的各个节点都有,这种节点不仅 包含服务器,也包含各个客户机,这些c a c h e 相互联系,共同协作为用户提供 检索服务。 数据缓存技术的研究内容主要是如何设计一个好的缓存模型。对于某一种具 体的数据缓存技术,不仅需要考虑缓存系统的组织模式,即缓存模型,还需考虑 缓存对象的替换算法、缓存系统的预取算法、缓存区的管理机制、缓存区容量大 小和缓存一致性等有关问题。这些问题的成功解决会极大地提高缓存命中率 6 。 目前的中问件系统,如果采用集群方式,其数据缓存系统必然是分布式数据 缓存系统。如果没有采用集群方式,其数据缓存系统为集中式数据缓存系统。 现有的中间层缓存技术大致可分为以下几种: 1 表缓存 一些研究机构和商业公司如o r a c l e 公司和i b m 公司都提出了自己的中间层数 据库缓存方案。o r a c l e 9 ia p p l i c a t i o ns e r v e r 提供了表缓存类型的数据库缓存组件 7 ,用于改善w e b 环境下访i n o r a c l e 数据库应用的可伸缩性和性能。它的方法 是将频繁访问的表缓存在中问层,使得查询处理更快,减轻了后端数据库的负载。 当缓存能够满足查询时就在中间层处理,否则就将查询交给后端数据库处理:对 表的更新请求都发送给后端数据库;利用数据库的复制技术按照同步策略更新缓 存;支持同时使用多个应用服务器和缓存。但是,o r a c l e 9 i a s 的数据库缓存只 支持查询结果完全包括在缓存中的查询,而不支持对数据库的剩余查询。i b m 的 d b c a c h e 也是一个表缓存的实现 8 ,其目标是通过将查询处理任务分布到中间 层的缓存和后端数据库执行。d b c a c h e 跟o r a c l e 9 i a s 数据库缓存的主要区别 是:d b c a c h e 利用d b 2 的邦联特征将用户查询分解为本地查询和数据库服务器 查询。 2 对象缓存 水利领域数据访问中间数据缓存技术采用了对象缓存的设计 9 ,通过将对 象映射到关系数据库的方式进行存储与查询。通常一个缓存对象就对应关系数据 库表中的一行元维,对象的属性对应于元组的属性。对蒙缓存是数据一个局部复 制,通过标识或主键的查询能得到很高的性能提升。 3 结果集缓存 河海大学硕士论文数据访问中间件中池化资源和缓存的研究与应用 结果集缓存基于标准s q l 查询语句,将查询语句与查询结果同时缓存。当下 一次查询时,首先进行查询语句的匹配,如果待查询语句与缓存中的查询语句精 确匹配,则由缓存给出查询结果,同时进行缓存的相关维护操作,如增加引用计 数。如果没有可以精确匹配的缓存项,则提交数据库进行操作,返回的查询结果 依据一定的替换策略如u 沁等进行缓存替换。这种结果集缓存在数据量较小的情 况下可阻很好的执行。 4 内存数据库 内存数据库技术是在内存中设计小型内存数据库管理系统以提高访问效率, 可以较好的减少同后台数据库的数据传输量。但是这种使用内存数据库的方式有 一些应用限制。它主要适用于实时性要求非常高的领域,而且需要较大的内存容 量以满足数据库管理系统的需要。 缓存技术是数据访问中间件中普遍采用的技术,用于提高系统性能和访问效 率。现有的问题是传统缓存技术缺乏再查询处理能力,其缓存内容不可共享。这 使得缓存的命中率维持在一个较低的水平。这在查询数据量较小、数据库同中间 件数据传输时间开销也较小的情况下,问题表现的不甚明显。当查询数据量较大, 数据库同中间件数据传输时间开销较大时,问题就会比较严重。如在水利领域, 数据查询量很大,中间件同数据库进行数据传输就会占用较多的时问开销。 现有中间件如o r a c l e g i a s 的主要特点是缓存整个表 7 ,而不是表的子集。 缓存只支持查询结果完全包括在缓存中的查询,而不支持对数据库的剩余查询。 由于表缓存采用数据库管理系统实现,实现简单。但是,完整的数据库管理系统 限制了表缓存的性能。此外,表缓存预先指定缓存表的方法也决定了它不能动态 适应用户查询的变化,缺乏灵活性。缓存指定表的方法导致缓存的利用率较低, 特别是当表的数据量很大时往往会出现空间的浪费,对海量数据查询性能的提高 较为有限 1 0 。 现有的水利领域数据访问中问件中使用了对象缓存。由于对象是同关系表中 元组相对应的,因而本质上是一种元组缓存。只能对包含主键的查询有较好的性 能提升,而对不包含主键查询条件的非主键查询而帮助不大 9 。 基于查询语句精确匹配的结果集缓存缺少再查询处理能力。只适应于查询语 句变化较少相对固定的情况。这时由于查询语句相对单一,缓存才会有比较高的 命中率,从而减少数据传输。如果查询语句具有较多的变化,则缓存的命中率将 会极其低下。 内存数据库技术主要适用于实时性要求非常高的领域,而且需要较大的内存 容量以满足数据库管理系统的需要。内存数据库本质上是将后台数据库系统的主 拷贝或工作版本常驻内存,因此会造成很大的空间浪费。内存数据库更新缺乏智 能化,数据查询命中率不高。 河海大学硕士论文 数据访问中间件中池化资源和缓存的研究与应用 本文通过在中间件中增加s q l 匹配解析层并设计了一个基于相关查询的缓 存系统来改善缓存性能,这针对大量相关访问的效率具有明显提升。 1 3 本文工作 本文主要研究了数据访问中间件的相关技术。在研究了目前数据库中间件系 统的特点和问题后,提出了一个基于性能优化技术的数据访问中间件模型,系统 运行在轻量级j 2 e e 容器中。主要技术包括: 1 使用多线程及优化的线程池技术。设计并实现线程池管理模块,使用阻 塞队列进行客户端访问任务的排队,有效控制了并发访问量与系统负载。 2 使用数据库池连接技术。设计了符合j d b c 3 0 规范的数据库连接池方案, 有效减少了因连接和释放数据库连接而引起的重复开销。 3 在中间件中设计s q l 匹配与解析层,可以有选择的对查询结果进行缓存。 对缓存模块进行改进,设计了一种基于相关查询的缓存系统。设计并实现了基于 j a v a 环境的数据缓存对象的结构,对数据缓存的查询导出,缓存一致性维护策略, 缓存更新策略等具体技术进行了研究并设计出使用方案。可以较好的将已有的查 询缓存用于下次查询,提高了缓存命中率。 1 4 本文结构 第一章为绪论。主要介绍论文的研究背景、研究现状、现有j 2 e e 平台上中 间件的关注问题,本文所做的主要工作。 第二章对j 2 e e 数据访问中问件的相关概念及技术进行了介绍。首先介绍了 中间件技术的发展和j 2 e e 环境下数据访问的类型,接着介绍了缓存技术。 第三章对采用池化设计和语义缓存的数据访问中间件进行了整体设计。 第四章对采用的具体技术进行了详细研究,设计了线程池、数据连接池,设 计了缓存的对象的结构,缓存一致性维护策略,缓存更新策略,对查询匹配作了 详细的算法设计。 第五章将系统模型方案应用于水利数据服务系统,并研究了其详细实现过 程,对比分析了与传统数据访问中间件模型的改进之j l - , 最后进行了实验,通过 性能对比分析,对优化方案作出评估。 河海大学硕士论文数据访问中间件中池化资源和缓存的研究与应用 第二章j 2 e e 环境下数据访问中间件技术 2 1 中间件技术及其发展 中间件正处于发展过程中,一般来说,中间件是在计算机硬件和操作系统之 上,支持应用软件开发和运行的系统软件,能满足大量应用需要,运行于多种硬 件和操作平台之上,支持分布式计算,提供跨网络、硬件和操作系统平台的透明 性的应用和服务。中间件具有标准的程序接口和协议,可以实现不同硬件和操作 系统平台上的数据共享和应用互操作。它能够使应用软件相对独立于计算机硬件 和操作系统平台,为当今的大型分布式应用搭起一个标准的平台,把大型企业分 散的系统技术组合在一起,从而实现大型企业应用软件系统的集成。在具体实现 上,中间件是一个用a p i 定义的分布式软件管理框架,具有强大的通信能力和 良好的可扩展性。 中间件应具有如下功能:1 、全面支持各种事务,能够协调多个资源管理器 进行事务处理并通过两段提交协议来保证事务的完整性;2 、对多种数据库管理 系统的支持,使数据访问过程简单;3 、对多种应用程序的支持;4 、对大量并发 用户的支持,通过对系统资源的有效控制来支持更多的用户访问;5 、系统性能 优化,中间件能为应用部件设置不同的参数选项,使管理员能够在系统性能和效 率之间进行一定范围的调整,以便进行实际运行中的系统优化。 中间件可分为以下几类【1 l 】:1 、远程过程调用中间件r p c m ( r e m o t e p r o c e d u r ec a l lm i d d l e w a r e ) ,使客户端应用可以调用位于远端平台的进程或服务; 2 、消息中间件m o m ( m e s s a g eo r i e n t e dm i d d l e w a r e ) ,利用高效可靠的消息传递 机制实现异构平台之间的通信;3 、数据库访问中间件d a m ( d a t a b a s ea c c e s s m i d d l e w a r e ) ,实现对不同厂商数据库的访问,提供一系列应用程序接口,可以 通过中间件而不用考虑操作系统及网络来访问数据库;4 、对象中间件o r b ( o b j e c tr e q u e s tb r o k e r s ) ,o r b 提供一种通信机制,透明地在异构的通信环境 中传递对象请求,这些对象可以位于本地或远程;5 、交易中间件d t p m ( d i s t r i b u t e d t r a n s a c t i o n p r o c e s s i n g m i d d l e w a r e ) ,交易中间件也称为分布式事务 处理中间件,提供了分布式应用服务。 中间件的发展趋势是向i n t e r n e t 的延伸。由于大型企业纷纷构建自己的 i n t e m e t 应用,以银行、铁路系统为代表的交易型业务仍然很多,而可靠的消息 传递也是每一个企业级应用不可缺少的需要,这就要求中间件能够向集成和综合 方向发展,将各种不同用途的中问件集成在一起,给企业提供一个完整的解决方 案。随着w e b 技术的飞速发展,相对统一的浏览器界面和传输协议使得异构系 统的节点不再面临以往中间件所解决的那么多难题。中间件技术和w e b 技术是 紧密结合的,更多的工作则转向数据库服务和w e b 服务之间的连接之上。w e b 河海大学硕士论文 数据访问中间件中池化资源和缓存的研究与应用 环境下的中间件如下图所示。 图2 1w e b 环境f 的中间件 当前普遍使用3 层软件体系结构来进行数据库访问。数据库中间件专门负责 和完成对数据库访问操作的优化、用户连接管理、保证访问的安全性和可靠性, 以及实现对不同厂商的数据库的访问。与一般中间件一样,面向数据库的中间件 允许通过单一的、定义良好的a p i 访问另一台计算机上的数据库资源。数据访 问中间件的主要功能包括: 可以同时接受大量客户的连接请求 可以接收不同协议客户端的连接请求 降低客户端与数据库系统的耦合度,使数据库系统可以调整而不必重建业 务规则 但这种3 层结构存在几个方面的问题: l 、资源没有充分利用。线程和数据库连接都是一种资源,对这些资源没有 充分利用。反复的创建、使用和销毁对象,加重了系统的负担。对于j a v a 应用 程序来讲,这些对象是由j a v a 虚拟机j v m ( j a v av i r t u a lm a c h i n e ) 中的g c ( g a r b a g e c o l l e c t i o n ) 进行回收的,而g c 并不是实时回收已经不用的对象,存 在一个扫描周期,这会造成系统内存的浪费也会给j v m 带来更多的负担。 2 、对语义相等或相关数据库查询操作没有进行优化,使用传统缓存技术完 全无视查询谓词的语义相关性,即使一条相同语义的查询语句,只是查询投影属 性的顺序不同,也将无法进行缓存查询匹配而重新提交数据库执行。从而缓存的 命中率维持在一个比较低的水平。 2 2 j 2 e e 数据访问技术 2 2 1 使用j d b c 访问数据库 j a v a 中最常用的数据访问方式是j d b c 。j d b c 是一个规范,由s u n 公司 提供的,用来执行s q l ( s t r u c t u r e dq u e r yl a n g u a g e ) 语句的j a v a 应用程序接1 3 。 j d b c 被设计成与平台无关,程序设计人员无需顾虑所使用的是何种数据库 j d b c 定义了j a v a 与数据库之间的接口类库( j a v as q l 包) ,它是j a v a 语言中执 行s q l 语句的a p i ,它由一系列类和接口所组成,这些类和接口均是由j a v a 河海大学硕士论文数据访问中间件中池化资源和缓存的研究与应用 语言写成的,一个程序开发者可以通过它在j a v a 语言中建立与数据库的链接, 执行s q l 语句和处理s q l 语句返回的结果。它易于向任何关系数据库发送 s q l 语句,支持对多种数据库的访问。运用j d b ca p i ,只需写出单独一个程序 就能够发送j d b ca p i 给相应的数据库,如s y b a s e ,o r a c l e 或i n f o n n i x 等。 j a v a 语言的中性结构和j d b c 的开放性使得程序员只需写一次程序就能让它到 处运行。j d b c 只是一个规范,而j d b c 的数据库驱动程序j d b cd r i v e r 由各厂 商自己实现,j d b cd r i v e r 是应用程序访问数据库的桥梁。 采用基于s q l 的j d b c a p i 访问关系数据库被许多j a v a 应用程序广泛使 用。在执行基于数据集操作时,因为s q l 语言的强大,j d b c 访问丌销很小。 但是,j d b c 是一个低层次的a p i ,使用起来很不方便,s q l 代码和j a v a 代码 还有数据库的s c h e m a 紧紧绑定在一起,使得应用程序的质量和复用性都受到影 响。它应该被更高层次a p i 代替。在中间件的开发中,应该在j d b c 的基础上, 设计出用户更容易理解、便于使用的更高层次的接口和工具。 2 2 2 通过e j b 访问数据库 e j b 是在原有的j a v ab e a n 基础上发展起来的,后者是一个本地式组件,而e j b 是一个“企业”级的分布式组件,专门为完成企业级计算任务而设计。e j b ; i j 用 r m i fr e m o t em e t h o di n v o k e ) 获得其分布特性,新的e j b 规范中规定采用 r m i - i i o p 协议作为其互操作协议。 e j b 必须在容器中运行。容器是现代组件模型的一个显著特点,组件总是在 容器中运行,容器是组件的一个执行环境。容器承担了组件的大部分非功能性需 求( 如并发、事务、安全、持久性等公共服务) ,而组件只需集中完成功能性任务 即可,这给组件的开发和部署带来了极大的便利。应用服务器最主要的一个特性 是对e j b 的支持,作为e j b 的容器。 大部分使用应用服务器构建的j 2 e e 应用都采用通过e j b 访问数据库。在 分布式的j 2 e e 应用程序中,这种方式具有一定的优势,w e b 容器中所涉及的 代码都是依赖于架构底层( r e m o t e e j b s ) ,并没有直接和数据源通讯。 实体b e a n s 是j 2 e e 组件中访问数据库的标准组件。持久层设计的目的是 为了降低业务逻辑和持久层逻辑之间的耦合关系。理论上实体b e a n s 是与数据 源独立的,无论使用什么类型的数据源,都由实体b e a n s 提供抽象。这种模式 中,实体b e a n s 提供本地接口,由实现业务逻辑的s e s s i o nb e a n s 直接访问。 但是,实体b e a n s 也有自身的缺陷: 1 实体b e a n s 只提供了初级的o rm a p p i n g 解决方案。由于实体b e a n s 生 命周期的限制,实现粗粒度的实体b e a n s 是很困难的。 2 实体b e a n s 中的b m p 存在严重的无法克服的性能问题,最典型的n + l 查询问题。 河海大学硕上论文数据访问中问件中池化资源和缓存的研究与应用 3 实体b e a n s 自身的问题,如性能问题,可移植性的问题,以及部署、测 试的代价问题等。 由于b m p 需要手工实现数据访问代码,相对与j d b c 方式并未有太多优 势。一般e j b 中的数据访问主要还是采用c m p 的方式。但是c m p 采用e j b q l 作为其查询语言,这种查询语言相对于s q l 功能弱了很多。如e j b q l 不 支持子查询,不支持动态查询,无法用于批量u p d a t e 操作,难以测试等。b m p 虽然有更大的灵活性,但却失去了c m t 的支持。采用c m p b m p 混合的方法, 可以获得更大的灵活性,但是又可能失去e j b 容器对实体b e a n s 的缓存,对于 实体b e a n s 的性能会有很大的影响。 2 2 3 使用o rm a p p i n g 框架访问数据库 o rm a p p i n g 是将j a v a 对象的状态映射到数据库上,以便提供透明的持久化 操作。o rm a p p i n g 的目标就是简便的持久化业务模型中的实体对象,使开发人 员得以避免编写数据访问的代码。根据抽象对象与关系数据库的特性, o r m a p p i n g 在以下几个方面实现。 从类属性到数据表列的映射:在实现时类属性和表列可以不一一对应。一个 类属性可对应0 或多个实体表的字段。 从类到数据表的映射:不同层次的父类和子类映射到数据表时,应该根据实 际的系统设计结果,从以下几点权衡采用怎样的映射策略:实现难易度、数据访 问难易度、对象与数据库耦合度、数据访问速度、数据库字段冗余度以及多态性 支持程度。 类间关系映射为键值,这是映射的关键,主要是体现类关系中的关联和聚合, 在业务逻辑中以编码的方式实现其他的关系。一对一、一对多的关联是通过在关 联的某一方引用对方的i d ,并视关系的紧密程度为外键的字段加上非空以及唯 一性的约束。在生成相关联的类实例时,可根据外键自动获取另一方的实例。多 对多的关联需要创建关联表,或划分成一对多和多对一。聚合关系中的子类对应 的数据表中含有指明父类的i d 的域。特别是强制型聚合( 组合) ,子类必须与父 类同时存在、同时消亡。数据库键值本身只是这一关系的体现。 o rm a p p i n g 的缺点是自己使用o rm a p p i n g 技术实现框架的难度较大, 如采用现有的o rm a p p i n g 框架,则整个系统的数据访问效率将受其影响,并月 需要学习使用全新的对象查询语言。 2 3 池化资源技术 在大型软件设计中,存在着一些宝贵的资源,如内存、线程、数据库连接、 网络连接等,而这些资源的使用在时间或空间上极大地影响着软件的使用效率, 使得资源的可用性与客户端应用程序的性能和用户的满意程度直接相关。因此资 源管理是开发b s 三层结构的应用程序时需要考虑的一个重要问题。 河海大学硕士论文 数据访问中间件中池化资源和缓存的研究与应用 为了将这些宝贵资源充分利用,在构造为多并发用户提供服务的服务端应用 程序时,资源管理的指导原则是:尽可能推迟资源的分配,并尽可能早地解除资 源分配。因此软件设计人员采用了共享的方式,将这些资源在时间或空间上尽量 复用。如在数据库应用中,数据库连接是一个费时的工作,而一个简单的数据库 查询应用也可能需要多次数据库操作才能完成,也就需要多次数据库连接,于是 频繁的建立与关闭连接,极大地减低了系统的性能,成了系统性能的瓶颈;如果 使用c o n n e c t i o np o o l ( 连接池) ,使得多次操作共用一个连接,减少数据库连接 时间,从而提供系统的效率。 池化资源技术的基本思路是:事先建立一定数量的对象并保存在内存中,当 调用者申请对象时从池中取出一个空闲对象,使用后立即归还,供其他调用者重 复使用,这样可以减少频繁创建、销毁对象所造成的开销。 因为客户端应用程序不需要重复地建立和销毁对象,使用池化资源技术会显 著提高连接性能。特别是对于占用资源比较严重的对象如数据库连接或网络连 接,池化资源机制可以有效减少建立对象所需的时间。除了可以提高连接性能以 外,使用池化资源技术还可以更有效地管理资源,池管理器可以根据需要动态调 整池中的对象数量,使系统资源得到充分利用。通过对有限资源进行进一步的控 制和管理,对象池可以使系统更容易扩展,当用户数量增加时只需要简单地增加 池中的可用对象数量。对象池的这些优势对基于w e b 的应用程序来说尤其重要。 本文针对两类资源进行了池化设计:线程和数据库连接。 线程是系统调度的最基本单位,一个进程中可以有多个线程。多线程设计的 目的是为了充分利用系统的运算能力,减少进程的等待时间。但是如果对线程不 加控制,那么很多线程的不断创建和销毁也会占据大量的系统性能开销。线程池 可以较好的解决这个问题。线程池中的线程在线程池初始化时被创建,然后被置 于阻塞状态,这时不消耗c p u 时间但占用一定的内存空间。当有任务到达需要运 行时,则给任务分配一个空闲线程,将任务传入线程中运行。运行结束后,线程 返回线程池中,重新成为空闲线程,并进入阻塞状态。这种方式在大量用户访问 时,可以较好的节省线程创建和销毁的时间开销。 数据库连接是一个比较耗时的操作,如果中间件需要多次查询数据库,每次 数据库访问都需要进行一次数据库连接操作,那消耗在数据库连接的时间将是不 可忽略的影响系统性能的重要因素。数据库连接池技术是在中间件启动时创建一 定数量的数据库连接,放在数据库连接池中。当有数据库访问操作时,从连接池 中取用连接。这时用户所持有的连接是一个逻辑连接,而池中的连接是真正的连 接到数据库的物理连接。当用户释放连接时,只是对逻辑连接进行了关闭,而同 逻辑连接相对应的物理连接则返回到连接池中,成为可用连接,继续为下一个用 户服务。 河海大学硕士论文数据访问中间件中池化资源和缓存的研究与应用 2 4 数据缓存技术 缓存技术是一种传统的计算机技术,在各种各样的系统中都不同程度使用到 缓存。操作系统和数据库管理系统都有自己的缓存。在传统分布式系统中,缓存 是提高性能的关键技术。在以往的研究中,人们提出多种缓存组织及其相关策略, 并且在多个实际系统中得到应用。在数据存储共享系统中,为了提高系统性能也 使用缓存技术。尽管缓存用于这两方面的最终目标相同,但在设计和实现上存在 很大的差别。共享存储系统的缓存设计侧重于充分利用有限的固定大小的缓存空 间,尽量提高缓存的命中率;而分布式系统巾,缓存设计侧重于缓存一致性策略 的研究以降低网络通信开销f 1 2 。 在众多数据库优化方法中,缓存技术得到了业界的广泛关注和应用,特别是 基于相关查洵的缓存技术弥补了页缓存和元组缓存不能很好支持关系数据库的 缺陷 1 3 1 。文献 1 4 、t 5 提出了移动计算环境下的相关查询缓存模型,客户端相 关查询缓存研究着重在用于带宽有限,移动设备存储能力有限,而通信复杂的情 况 1 6 。 类似于程序执行的局部性,用户的查询也存在局部性,在许多情况下,不到 5 的关系表占用了数据库系统超过5 0 的i o 时间 1 7 。用户访问了一块收据 后,在不久的将来很可能再次访问它,这就是访问的时间局部性;用户访问了一 块数据后,很可能接着访问临近的数据块,这就是访问的空问局部性:最重要的 访问局部性是语义局部性,即用户往往按照下述模式访问数据库:首先提交一个 查询,接着调整选择条件,或者施加更多的选择条件,显然,后来的查询可以由 先前查询的结果全部或者部分导出。在移动环境下,通过在客户端缓存数据,尽 可能地在本地回答查询,避免了从数据库服务器提取数据,然后借助通信网络传 输到客户端,大大减轻了数据库服务器和网络的负担,同时加快了查询的响应速 度。对于并发访问量较大的中问件,在服务端缓存数据,可以尽可能的回答多个 客户的相似查询,通过缓存重新组织与更新,将频率较高的查询进行缓存,从来 可以减少大量的数据库连接要求。 缓存的管理也有所研究,文献 1 8 、1 9 研究了缓存查询处理的缓存管理策略 等问题,缓存在内存中的的分配策略有所研究 2 0 。 在b s 结构之前,c s 体系结构是访问远程服务器系统的常用方式,其中表 示逻辑和业务逻辑在客户机上执行,而数据库集中负责数据的处理。这种两层结 构的缺点是有大量数据和信息在数据库和客户机平台间进行传送,并限制了系统 的可伸缩性,难于管理。三层结构的出现克服了两层结构的局限性,将应用的表 现逻辑

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论