




已阅读5页,还剩40页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
武汉理工大学硕士学位论文 摘要 l d a p 作为一种目录信息的访问协议,提供了简易、高效、可定制的目录 服务。因其高效的查询速度,广泛的应用于用户身份认证管理、电子商务资源 管理、数字证书服务等领域。但随着应用系统处理的数据量越来越大,数据库 访问的响应速度受到很大影响,因此如何提高l d a p 数据的访问效率,使应用 系统的整个运行速度和执行效率得到提升,意义重大,对其认真研究,很有必 要。 本文首先介绍了课题研究现状以及课题研究的意义,接着介绍了在l d a p 服务器中,提高数据访问速度的必要性。讨论了如何提高l d a p 目录访问效率, 分析了影响l d a p 服务器搜索性能的因素,从中找出了提高数据访问速度的切 实可行的办法。为了弄清如何提高数据访问的速度,我们将围绕以下方面展开 研究,具体包括:索引在l d a p 中的作用和内存缓存对提高搜索查询速度的影 响。这些问题的研究对接下来如何高效地使用l d a p ,提高数据访问的效率, 提供了很好的帮助。 接着具体研究了索引在提高l d a p 查询效率中的重要作用,它对提高搜索 速度起到了很好的效果,特别是在海量数据的情况下,其效果尤其明显。索引 在提高查询性能方面起到很大作用,但要合理使用索引,如果添加太多的索引 定义,这样会使l d a p 后端数据库文件非常大做任何事情都会再次变慢,因此 索引的使用要恰到好处。同时文中还使用数据进行了分析研究。 紧接着给出了基于内存缓存的搜索访问系统的设计与实现,具体包括对缓 存结构定义、h a s h m a p 数据结构、缓存对象清除算法的实现,以及将r m i 应用 于分布式缓存中,同时还考虑了数据同步问题。接着将这些应用到搜索系统中, 完成应用系统的开发。在加载缓存后,系统的查询速度显著提高,接着对其进行 了优化。最后使用数据对搜索访问系统进行了测试,并对测试结果进行了分析。 关键词:数据访问,索引,h a s h 缓存,优化 武汉理工大学硕士学位论文 a b s t r a c t l d a pa saa c c e s sp r o t o c o lo fd i r e c t o r yi n f o r m a t i o n ,p r o v i d e sas i m p l e ,e f f i c i e n t , c u s t o r m i z a b l ed i r e c t o r ys e r v i c e b e c a u s eo fi t se f f i c i e n tq u e r ys p e e d , i ti sw i d e l y u s e di nu s e ra u t h e n t i c a t i o nm a n a g e m e n t ,e - c o m m e r c er e s o u r c em a n a g e m e n t ,d i 粤t a l c e r t i f i c a t es e r v i c e sa n do t h e rf i e l d s h o w e v e r , w i t ht h ep r o c e s sd a t ao fa p p l i c a t i o n s y s t e mi n c r e a s e dl a r g e l y , r e s p o n s es p e e d o fd a t a b a s ea c c e s sh a sb e e ng r e a t l ya f f e c t e d 1 m e r c f o r c ,h o wt oi m p r o v et h el d a pd a t aa c c e s se f f i c i e n c y , s ot h a tt h ew h o l e a p p l i c a t i o ns y s t e ms p e e da n de f f i c i e n c yi nt h ei m p l e m e n t a t i o nw o u l d b ee n h a n c e d ,i s o fg r e a ts i g n i f i c a n c e ,a n di t sc a r e f u ls t u d yi sn e c e s s a r y t h i sd i s s e r t a t i o nf i r s t l yd e s c r i b e st h ec u r r e n ts i t u a t i o na n dt h es i g n i f i c a n c eo f t h er e s e a r c hs u b j e c t , a n a l y s e st h en e c e s s a r yo fi m p r o v i n gq u e r ys p e e do nt h o s ed a t a t y p e si nl d a ps e r v e r ,d i s c u s s e sh o wt oi m p r o v et h ee f f i c i e n c yo fl d a pd i r e c t o r y a c c e s s ,a n a l y s e st h ee l e m e n t so fa f f e c t i n gt h ep e r f o r m a n c eo fl d a ps e r v e rs e a r c h , f r o mw h i c ht of i n dap r a c t i c a lw a yt oi m p r o v ed a t aa c c e s ss p e e d i no r d e rt of r e do u t h o wt oi m p r o v et h es p e e do fd a t aa c c e s s ,w ew i l lf o c u so nt h ef o l l o w i n ga s p e c t st o s t u d y , s p e c i f i c a l l yi n c l u d i n g :t h er o l eo ft h ei n d e xi nt h el d a pa n dm e m o r yc a c h e t oi m p r o v et h es p e e do ft h es e a r c hq u e r y , w h i c ha ee l e m e n t so fa f f e c t i n gt h e p e r f o r m a n c eo fl d a ps e a r c h r e s e a r c ho nt h e s ei s s u e st e a c hu sh o w t oe f f i c i e n t l y u s el d a p , t oi m p r o v et h ee f f i c i e n c yo fd a t aa c c e s s ,p r o v i d e su sag o o dh e l p t h e nw es t u d yt h ee f f e c to fi n d e xi nt h el d a pq u e r y ,i n d e xp l a y e sav e r yg o o d e f f e c to ni m p r o v i n gt h es e a r c hs p e e d ,e s p e c i a l l yi nt h ec a s eo fm a s s i v ed a t a , t h e e f f e c ti sp a r t i c u l a r l ye v i d e n t i n d e xp l a y e sas i g n i f i c a n tr o l eo ni m p r o v i n gq u e r y p e r f o r m a n c e b u ti fy o ua d dt o om a n yi n d e xd e f m i t i o n s ,i tw o u l db em a k el d a p b a c k e n dd a t a b a s ef i l ed oa n y t h i n gs l o w l y , s ou s et h ei n d e xt ob ej u s tr i g h t t h e p a p e ra l s ou s eal o to fd a t aa n a l y s i s b a s e do nt h ea b o v e ,w ep r e s e n tt h ed e s i g na n di m p l e m e n t a t i o no ft h es e a r c h a c c e s ss y s t e mb a s e do nm e m o r yc a c h e ,s p e c i f i c a l l yi n c l u d i n gt h ed e f i n i t i o no ft h e c a c h es t r u c t u r e ,h a s h m a pd a t as t r u c t u r e ,t h ec a c h eo b j e c tr e m o v a la l g o r i t h m ,t h e n 武汉理工大学硕士学位论文 r m ii nd i s t r i b u t e dc a c h ea n dd a t as y n c h r o n i z a t i o nt h e s ea p p l i c a t i o n sa r eu s e di n s e a r c ha c c e s ss y s t e mt oc o m p l e t et h ea p p l i c a t i o ns y s t e m a f t e rl o a d i n gt h ec a c h e ,t h e s p e e dq u e r yo ft h es y s t e mi m p r o v e ss i g n i f i c a n t l y a tl a s t ,t h es e a r c ha c c e s ss y s t e mi s m e a s u r e db yi n p u t t i n gd a t aa n dt h em e a s u r e dr e s u l t sa r ea n a l y z e d k e yw o r d s :d a t aa c c e s s ,i n d e x ,h a s hc a c h e ,o p t i m i z a t i o n i l l 独创性声明 本人声明,所呈交的论文是本人在导师指导下进行的研究工作及 取得的研究成果。尽我所知,除了文中特别加以标注和致谢的地方外, 论文中不包含其他人已经发表或撰写过的研究成果,也不包含为获得 武汉理工大学或其它教育机构的学位或证书而使用过的材料。与我一 同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说 明并表示了谢意。 签名:二迄斑日期:盗型 龇 学位论文使用授权书 本人完全了解武汉理工大学有关保留、使用学位论文的规定,即: 学校有权保留并向国家有关部门或机构送交论文的复印件和电子版, 允许论文被查阅和借阅。本人授权武汉理工大学可以将本学位论文的 全部内容编入有关数据库进行检索,可以采用影印、缩印或其他复制 手段保存或汇编本学位论文。同时授权经武汉理工大学认可的国家有 关机构或论文数据库使用或收录本学位论文,并向社会公众提供信息 服务。 ( 保密的论文在解密后应遵守此规定) 研究生( 签名) :美忘勇 导师( 签 动,口辱f a 坫b 武汉理工大学硕士学位论文 第1 章绪论 1 1 研究背景及其意义 随着l d a p 轻量级目录访问协议技术的发展,l d a p 已经被许多应用系统 使用,广泛用于数据的存储、搜索和管理1 1 l 。因为其所具备的搜索速度快、树 状的组织结构形式、分布式的环境以及方便快捷的访问机制,使l d a p 广泛地 应用于用户身份认证管理、电子商务资源管理、数字证书服务等领域,特别是 在图书馆书目的查找、用户访问控制与认证信息的搜索、安全认证等方面【2 1 。 l d a p 目录是一种类型的数据库,不是关系数据库,有快速的数据读取、 浏览和查找功制3 1 。从l d a p 服务器中读取数据的速度,比一般关系数据库快 一个数量级。因而,高效的查询效率和良好的稳定性使l d a p 为许多大型应用 系统提供目录服务,但是随着应用系统处理的数据量越来越大,尤其是达到海 量数据时,数据库访问的响应速度会受到很大影响【4 】。因此如何提高l d a p 数 据的访问效率,使应用系统的整个运行速度和执行效率得到提升,意义重大, 很有必要认真研究。数据访问速度的快慢直接影响到整个系统的性能,起到至 关重要的作用,因而提高数据查询的效率是一件很有意义且具有挑战性的任务, 也是目前研究的热点。 尽管l d a p 具有快速读取数据的优点,可以方便快捷的查询到所需的数据, 但对整个应用系统而言,还是很有必要对其性能进行优化【5 1 。客户端从数据库 中读取数据,当大量数据是经常重复使用时,如果每次都从数据库中获取则显 得效率太低1 6 l 。这时如果使用h a s h 内存缓存,将数据缓存于内存中,客户端直 接从内存中读取数据,就能使查询速度更快,效率更高【7 】。另外,在储存大量 数据时,l d a p 服务目录的条目节点达到一定数量后,查询速度会显著降低, 这时就要发挥索引的作用以提高查询效率【引。此外,如何提高l d a p 目录访问 效率,哪些因素影响了l d a p 服务器搜索性能【9 1 ,从中找出这些要素对提高数 据访问的速度大有裨益,这些都需要认真研究和分析。 武汉理工大学硕士学位论文 1 2 国内外研究现状 近些年来,国内关于优化l d a p 服务器搜索性能,提高数据访问速度的研 究在不断发展,目前主要包括l d a p 连接延迟、n a g l e 算法对搜索延迟的影响、 条目缓存对搜索的影响、以及目录大小和条目大小对搜索性能的影响【1 0 l 。下面 就对这几方面的因素作简要的介绍。 在搜索请求的过程中,整个时间流程经历了连接时间、处理时间和响应时 间。在整个响应时间内,建立连接的时间是最主要的决定因烈1 1 】,l d a p 连接 延迟严重影响了响应速度。尽管处理时间随着负载的增大会增长,但增长并不 明显。相反的,查询数据时,随着查询量达到较大时,打开连接的时间将占据 主要的连接时间,从而延长了响应时间,严重影响了整个响应时间,l d a p 连 接延迟对整个响应速度的提高影响很大1 1 2 j 。 1 2 2n a g l e 算法对搜索延迟的影响 当可供传送的片段少于一个完整的最大传输单元时,n a g l e 算法限制数据 包的发送,从而减少小数据包的传输,进而提高网络利用率。该算法的工作原 理如下:如果所有重要的数据已知,则任何片段将会被立即发送。如果有未确 认的数据,而片段仅唯一传输最大传输单元的数据。否则,它就排队,要想更 多的数据被很快传递到t c p 层i l 引,当达到一个完整的最大传输单元才可以发 送。实验表明,当通过t c pn o d e l a y 套接字选项禁用n a g l e 时,l d a p 搜 索时间从6 0 毫秒减少到8 毫秒左右,而处理量依然不变。n a g l e 算法的使用导 致搜索操作需要额外的等待时间,当禁用n a g l e 算法后,搜索结果致使响应时 间在正常操作情况下大大的降低了【1 4 1 。 1 2 3 目录大小对搜索性能的影响 目录大小对搜索性能有很大影响,当目录中条目数量的大小达到一定数量 时,对l d a p 性能就有一定的限制【1 5 】。首先考虑目录在内存中,增大后的目录, 对响应影响很大。由目录大4 , 己2 1 起的整个响应增加归功于处理时间的增加,增 加幅度很大。处理时间的增加,正如预期,是由于后端处理的增加。具体来说, 2 武汉理工大学硕士学位论文 这主要是由于条目中检索时间增加,而i d 搜寻时间仅略有增加1 1 6 j 。 随着目录大小的增加,数据库缓存大小将最终受限于可用的系统内存,并 且目录可能不再保留在内存中【1 7 l 。在应用系统中,当缓存的大小增大到超出一 定数量时,由于内存的不足性能将逐渐退化。当目录处于内存外时,性能好坏 将受限于数据库搜索时间和磁盘访问时间。 总之,在目录大小达到一定数量后,将降低搜索速度,对l d a p 性能有一 段的影响。进一步扩大后,由于受限于系统内存,从而导致了目录溢出内存, 并且进一步恶化使处理延迟变得更加明显,响应时间将更长。 1 2 4 条目大小对搜索性能的影响 l d a p 条目大小对其性能也有一定的影响【1 8 j 。以下比较了l d a p 目录条目 大小为4 8 8 字节和条目大小为4 8 8 0 字节的表现。对于较大的条目大小,系统内 存的可用性限制最大数据库缓存大小为5 0 0 0 个条目,超过了这个数量性能将迅 速地劣化。我们首先对内存中的目录进行比较,使用5 0 0 0 个目录条目和5 0 0 0 条目缓存,对于相同条目大小。作为负载的一个函数。在轻量中度负载下,在 条目大小增大时,整个反应延迟增加了大约8 m s ,而处理量保持不变。服务器 性能分析表明,响应时间的增加主要来自于编码时间的增加,从1 2 m s 增大到 7 m s 。此外,在条目大小很大时,过滤器匹配步骤花费大约约0 8 m s ,在条目大 小较小时为0 2 m s 。这些结果是可以理解的,因为编码和过滤器匹配过程两者 都依赖于l d a p 条目中属性数量,当条目大小增大时属性也增大【1 9 】。其他前端 处理步骤的延迟,后端处理步骤增加要小得多。在高负载下,当服务器饱和时, 最大处理量在4 8 8 0 字节时小3 0 。 条目大小为1 0 ,0 0 0 的目录和缓存大小仍为5 0 0 0 条目数,对两者之间进行 了对比表明。作为一个负载函数。在较低和平度负载下条目大小增加时, 总的响应时间增加到4 0 m s 。条目响应时间更加恶化,是由于从磁盘中数据传输 时间的增加,此外前端处理时间的增加。前端处理时间的增加仍然在大约8 m s , 证实前端处理受目录大小增加的影响不是很大,而后端处理数据时间增大到 3 2 m s 。同样,对于条目大小规模较大,处理时间可比较于甚至在高负载下的连 接延迟。因此,条目大小引起的处理时间的增加强烈地影响最大处理量,从每 秒请求1 1 0 次大幅下降到每秒请求3 0 次。 总之,对于内存中目录,条目大小引起的整个处理延迟由前端处理决定, 3 武汉理工大学硕士学位论文 具体而言,由编码和过滤器匹配决定。对于内存外的操作,处理延增加由后端 数据检索时间占主导。这种情况下,最大处理量也大幅减少。 1 3 论文研究内容 文章主要讨论了如何提高l d a p 目录访问效率,分析了影响l d a p 服务器 搜索性能的要素,从中找出了提高数据访问的速度提高切实可行的办法。为了 弄清如何提高数据访问的速度,我们将围绕以下方面展开研究具体包括:首先 研究影响l d a p 搜索访问性能的因素有索引和内存缓存,着重从原理上,分析 和研究这两个因素对搜索查询速度快慢的影响。紧接着详细研究了和分析索引 在提高l d a p 查询效率中的作用,其对提高搜索速度起到了很好的效果,特别 是在海量数据的情况下,其效果尤其明显。最后,在上述基础上给出了基于内 存缓存的搜索访问系统的设计与实现,具体包括对缓存结构定义、h a s h m a p 数 据结构、缓存对象清除算法的实现,以及r m i 应用于分布式缓存中,同时还考 虑了搜索访问系统中的数据同步问题,最终完成应用系统的开发。并在加载缓 存后,发现查询速度显著提高,接着并对其相关方面的性能进行了优化。 1 4 论文组织结构 全文共分5 章,内容安排如下: 第一章介绍本文的研究背景及其意义,介绍了目前国内外l d a p 数据访问 优化的研究现状,并总结了课题研究中所做的主要工作,这章是对整个课题研 究的整体介绍。 第二章分析了影响l d a p 搜索性能的一些因素,讨论如何提高l d a p 目录 访问效率,给出了影响l d a p 服务器搜索性能的两个要素即索引在l d a p 中的 作用和内存缓存对提高搜索查询速度的影响。从而为提高数据访问的速度提供 切实可行的办法。对于这些问题的论述,只是从原理上进行分析和研究,更加 详细的研究将在接下来的章节中给出。 第三章介绍了索引在提高l d a p 查询效率中的作用。本章分析了索引对提 高目录服务的查询效率的重要作用,详细分析了增加索引定义,对提升常用查 询性能的影响。索引在提高查询性能方面起到很大作用,特别是在海量数据的 情况下,其效果尤其明显。本章使用大量的数据进行了测试分析和研究,对于 4 武汉理工大学硕士学位论文 如何使用索引,以及做到如何合理使用索引都做了详细的分析说明。 第四章为基于内存缓存的搜索访问系统的设计与实现。这章完成了整个系 统的开发过程,具体部分包括h a s h 内存缓存的设计,包括对缓存结构定义、 h a s h m a p 数据结构、缓存对象清除算法等方面的设计与实现,以及r m i 应用于 缓存中,同时解决了数据同步问题。最后进行了测试,并对测试结果进行了分 析。在应用系统中加载内存缓存后,使得搜索访问的效率大大提高,从而提高 了应用程序的运行性能,进而提高了整个应用系统的性能,这就是使用内存缓 存的好处所在。 第五章对本文的工作进行了总结,提出可能的改进和对未来工作的展望。 5 武汉理工大学硕士学位论文 第2 章影响l d a p 搜索性能的因素 在本章节中,我们将讨论如何提高l d a p 目录访问效率,分析影响l d a p 服务器搜索性能的要素,从而为提高数据访问的速度提供切实可行的办法。为 了提高数据访问的速度,我们将围绕以下两方面展开研究:索引在l d a p 中的 作用和内存缓存对提高搜索查询速度的影响。 2 1 索引在l d a p 中的作用 2 1 1l d a p 存储结构及搜索规则 索引在l d a p 有何作用,不妨让我们先从l d a p 的存储结构入手。从数据 结构上看l d a p ,它是一个树形结构,在形式上采用层次结构,可提供快速而 有效的搜索和检索,做到这一点很大程度上与它的存储结构有关。如图2 1 , l d a p 服务器上的数据以树状结构进行存储【冽,以域名“d c = w h u t ,d e = e d u ”为基 准,在它下面分别按照o 组织、o u 部门、用户名分为三层,各层之间结构清 晰,人员组织信息明确。 图2 1l d a p 存储结构图 在服务器l d a p 中,后端使用某种机制来存储和检索信息。每个条目都分 配了一个唯一的i d ,一个条目搜索首先返回条目的一对d 列表,这些条目是 6 武汉理工大学硕士学位论文 要搜索的值,然后i d s 被用于返回相应的条刚2 。 假如上图中用户c n = c l 、c n = c 2 、o n = c 3 和o n = c 4 分别存储在数据库中,如 果要搜索条目“c n = c 3 ,o u = o u 2 ,o = d e p 2 , 搜索过程内部是如何进行的,这是需要关 注的问题,也为提高搜索效率提供了借鉴方法。从数据库搜索信息细节中,可 以看到,当我们搜索用户名为c n = c 3 的条目时,它是按照条目在l d a p 中存储 的先后顺序,逐个进行查找的,先查询用户名为c l l = c 1 的条目,接着查询用户 名为o n = c 2 的条目,再查到用户名为c n = c 3 的条目,刚好找到,则返回搜索信 息。图中给出的条目信息不多,查询的时间不是很长,对数据库性能影响不是 很大。但当l d a p 中存储的数据量是上百万条时,按照这种搜索规则,显然不 合时宜,这就需要我们找到解决问题的办法。 2 1 2 索引对l d a p 所起的作用 索引技术是数据查询中最重要的技术【2 2 1 。如果要加提升数据库的性能,索 引优化是首先应该考虑的。因为它能使我们的数据库得到最大性能方面的提升。 当我们发一条查询命令时,数据库对它进行分析,以优化查询【2 3 1 。在l d a p 中 索引的作用很重要,对提高搜索效率尤为突出,可以说起到了举足轻重的作用, 索引的合理使用对整个数据库性能的提高尤为重要。 索引是如何发挥它的作用来提高搜索效率,这就要分析原理。如果你搜索 过滤条件中的属性项已经被索引了,则搜索过程是这样的,首先搜索读取索引, 再被索引精确地拉到数据库中的条目位置【2 4 1 。如果过滤条件中的属性项没有被 索引,搜索将会读取目标范围内的每一个单独的条目,测试它是否与过滤条件 匹配,这样极大扩大了搜索次数。显然地,在用于正确搜索时,i n d e x 能节省相 当的工作强度和时间,这点至关重要。 具体到上图中的实例,若在配置文件中添加o 和o i l 的索引,还是搜索条目 为“c n = c 3 ,o u = o u l ,o = d e p 2 ”的用户,则不用搜索“o = d e p l ”下的条目( 如果有的话) , 也不用搜“o u = o u l ,o = d e p 2 ”下的条目,而是直接搜索“o u = o u l ,o = d e p 2 ”下的条目, 先搜索到“c n = c 2 ,o u = o u l ,o = d e p 2 ”,接着找到“o n = c 3 ,o u = o t l l ,o = d e p 2 并返回搜索 结果。这样的话,效率就明显提高,只需执行两次搜索就能找到目标。 可见索引机制在l d a p 搜索的过程中很重要,对提高查询速度起到至关重 要的作用。索引的使用极大地提高了搜索效率,合理使用索引将对l d a p 性能 的提高起到积极的作用。接下来的第3 章将详细讲解索引在提高l d a p 查询效 7 武汉理工大学硕士学位论文 率中的作用,并结合具体的数据分析和讲解索引的相关知识,这里只从原理上 分析索引在l d a p 中对提高搜索效率的作用。 2 2 内存缓存对搜索的作用 2 2 1 缓存对搜索的影响 随着用户数的增多,应用系统需要处理的数据量也越来越大。当有多个用 户同时向某一数据发出请求时,系统的响应速度就会非常慢。特别是反复地查 询同一数据时,每次都要从数据库中查找相同数据,而数据又是不变的。这样 的处理方式显然是不合理的,需要优化处理【2 5 1 。因此,怎样提高数据库访问的 响应速度就显得尤其重要。为了解决这个问题,可行办法有优化数据库、提高 硬件的性能、增大带宽等,但这些因素在一定条件下都会受到限制,这时就应 该采用缓存技术进行处理。内存缓存就是一种能够提高数据库响应速度的查询 优化技术。一般地,2 0 的数据通常在8 0 的时间内被访削2 q 。因而,我们的 目标就可以集中在这2 0 的数据中,当这些数据第一次被访问以后就将它放到 内存中,再次访问时,用户就可以通过直接匹配的方法,从内存中读取所要的 数据即可。不必再直接访问大量原始的数据以及耗时的连接操作,有效的节约 了时间,提高了速度。 大多数的应用系统按照三层模式开发的,它们是数据访问层、业务逻辑层 和表示层。在这三层中,都涉及到数据的收集和处理,所以数据的处理是很重 要,数据的响应快慢,直接决定了系统的性斛2 7 1 。所以要提高系统的整体性能, 缓存这些数据很有必要。缓存系统就是将数据库中经常被访问的数据进行缓存, 放入内存中,充当数据访问层和业务逻辑层的桥梁【硼。当客户端提交请求,若 需要处理的数据在内存缓存中,则直接从内存中读取,若不在则直接访问数据 库,之后将数据放入内存中,以便下次访问使用。 2 2 2 搜索访问系统中内存缓存的使用 在应用系统的应用中,很大部分操作是搜索查询。因而,如何做到快速地 搜索查询是系统性能好坏的重要标志,本文中就使用内存缓存,对搜索访问进 行优化和提高,加快查询速度,使整个应用系统的性能得到急速提升,多数查 询的反应时间会因为有缓存的数据而加快。 8 武汉理工大学硕士学位论文 在本文的基于内存缓存的搜索访问系统中,基于以下设计思想开发的。用 户通过客户端向位于服务器的逻辑层提交请求,根据所要处理的数据,逻辑层 首先从内存缓存中查找,若不存在,就直接从数据库中查找,之后把数据转入 缓存中,供以后使用【2 9 1 。基于内存缓存的搜索系统的核心是基于对象缓存最大 时间策略实现的应用系统,在这个基础上,实现了基于r m i 的分布式缓存,基 于面向对象缓存的搜索系统【砌。 l 应用程序 缓存系统数据库对象 管理类 内存缓存 查找类 查找对象 、 在内存中查找对象 返回对象 返叵空值n u l l 从数据库中装载对象 , 将数据返回给系统 返回对象 图2 2 基于内存缓存的搜索访问系统 图2 2 表示缓存系统的序列图。应用程序从缓存系统管理类中查找对象, 首先从内存中查找对象,若存在则返回对象给应用程序。若不存在则返回空值 n u l l 给应用程序,应用程序根据在直接从数据库中查找对象,数据库将数据装 入内存中,最后返回给应用程序。 在应用系统中,缓存的作用是用于临时存放复制数据的内存区域,位于应 用程序与数据库之间。内存缓存的使用可以减少直接对数据库的访问次数,节 约了时间,使得搜索访问的效率大大提高,从而提高了应用程序的运行性能, 进而提高了整个应用系统的性能。在查询数据时,应用程序首先到内存缓存中 去搜索,如果找到就直接返回使用;若找不到就直接到数据库中查找,使用后 再把数据放到缓存中,以便下次使用。所以,若经常使用的数据都临时存放在 内存缓存中,则每次访问时,直接从缓存中搜索访问,则大大加快了相应的速 度,就可以大大减少应用程序对数据库的访问,使得程序的运行性能明显的提 升,这就是使用内存缓存的好处所在。 在这节中,只是就缓存对搜索的影响和搜索访问系统中内存缓存的使用从 9 武汉理工大学硕士学位论文 原理上,做简要和大概地论述说明,更加详细的说明和细节的设计实现过程, 将在第4 章中做更进一步的论述。其中包括基于内存缓存的搜索系统的设计与 实现,包括对缓存结构定义、h a s h m a p 数据结构、缓存对象清除算法的实现, 以及将r m i 应用于分布式缓存中,最后将这些应用到搜索系统中去,且对相关 数据进行了测试,并对测试结果进行了分析。 2 3 本章小结 本章着重从原理上分析了影响l d a p 搜索性能的两个因素,包括索引和内 存缓存,两因素对提高搜索查询的效率起到了积极的作用。一方面,研究了索 引在提高l d a p 查询效率中的作用,分析了索引如何提高查询速度,以及详细 分析了索引在数据库中所起作用的原理,从根本上弄清了索引的作用,为接下 来索引的使用提供了切实可行的方法。索引在提高查询性能方面起到很大作用, 特别是在海量数据的情况下,其效果尤其明显。但要合理使用索引,如果添加 太多的索引定义,这样会使l d a p 后端数据库文件非常大做任何事情都会再次 变慢,因此索引的使用要恰到好处。文中对如何合理使用索引做了详细分析说 明,并且文中还用大量数据进行分析研究。另一方面,研究了内存缓存对搜索 查询速度的影响,它极大地提高了查询速度,使程序的运行性能明显的提升, 进而使整个应用系统的性能也得到了提高,这些都是在应用系统中使用内存缓 存的好处所在。关于影响l d a p 搜索性能的两个因素即索引和缓存的展开论述 将在第3 章和第4 章中做更加详细的研究和分析。 1 0 武汉理工大学硕士学位论文 第3 章索引在提高l d a p 查询效率中的作用 3 1 索引在搜索查询中的作用 3 1 1 索引的概念 索引本身不是用来查询的,索引用于优化查询,是给系统内部使用的【3 3 1 。对 于数据库专家来说,索引的创建与管理或许没有难度,只需要添加几个简单的 语句即可。但比较困难的是,如何根据实际情况来选择合适的索引,从而提高 搜索查询的速度。索引技术是数据查询中最重要的技术1 3 1 l 。如果要加提升数据 库的性能,索引优化是首先应该考虑的。因为它能使我们的数据库得到最大性 能方面的提升。当对一条搜索查询命令执行时,数据库首先对它进行细致地分 析,以优化查询1 3 到,接着再返回执行的结果。为提高查询速度,我们可以在数 据库中对数据添加索引,以达到加快搜索速度的目的。 o p e n l d a p 中索引i n d e x 的设置使用都在s l a p d c o n f 进行。i n d e x 索引仅仅在 加载目录初始化时才有效,如果索引在随后改变了,而目录服务需要使用修改 后的索引,则需要停止s l a p d ,重启后才能生效【3 3 1 。对于大量的不同种类的目录 查询,要获得性能调整到良好的程度相当艰难,你需要添加所有必须的l d a p 索引定义到你的s l a p d c o n f 文件中,以提升常用查询的性能,但是你不应该添 加太多的索引定义,这样做会适得其反,使l d a p 后端数据库文件非常大做任 何事情都会再次变慢1 3 4 j 。 3 1 2 索引对查询速度的影响 查询速度的快慢直接影响数据库的性能好坏,在数据库的应用中,索引与 查询是不可分割的两部分。查询速度的提高很大程度上由索引决定,l d a p 目 录服务器中也不例外。如何合理巧妙地使用索引,对于查询速度的提高至关重 要,特别是在数据库庞大的情况下尤其明显。虽说索引可以在很大程度上提高 数据库的查询效率,但是如果索引使用不当,如过多添加索引,反而起到适得 其反的效果,使得速度变得更慢。 l d a p 如何进行搜索任务,下面做了一个简易的概括。如果你搜索过滤条 武汉理工大学硕士学位论文 件中的属性项已经被索引了,则搜索过程是这样的,首先搜索读取索引,再被 索引精确地拉到数据库中的条目位置。如果过滤条件中的属性项没有被索引, 搜索将会读取目标范围内的每一个单独的条目,测试它是否与过滤条件匹配, 这样极大扩大了搜索次数【3 5 1 。显然地,在用于正确搜索时,i n d e x 能节省相当的 工作强度和时间,这点至关重要。 不过,假如应用中事实上使用了p r e s e n c e 过滤,如果目标属性存在于搜索 范围内绝大部分条目,那么所有的那些条目无论如何将会读取,因为他们是结 果集的有效成员。如果在所有条目中都有某一属性,例如1 0 0 的条目都包括 m a i l 属性,则p r e s e n c e 索引对于搜索完全一定益处没有,因为1 0 0 的条目都匹 配p r e s e n c e 过滤条件。这样资源产生浪费,i n d e x 完全是在浪费c p u 时间、磁盘 和内存。所以,不要轻易的使用索引,仅仅在目标数据的属性非常罕见地出现 时,这时添加索引,将会起到很好的搜索效果。 3 1 3 索引的定义 如何使用索引,需要知道索引的定义,索引的格式及索引类型等索引规则。 下面是一个简单的索引定义【3 6 1 ,首先介绍一下,接着会详细地对索引相关的要 点分析举例介绍。 i n d e x o b j e a c l a s s e q 此旬用来指定s l a p d 索引时用到的a t t r i b u t e ,e q 指索引时的匹配规则。主要是用 来优化查询的。常用到的匹配规则有:a p p r o x ( 模糊匹配,a p p r o x i m a t e ) 、e q ( 精 确匹配,e q u a l i t y ) 、p r e s ( 现值匹配,若某记录的此a t t r i b u t e 没有值则不进行 匹配,p r e s e n c e ) 和s u b ( 子串匹配,s u b s t r i n g ) 。 索引的格式为: i n d e xa t t r l i s tid e f a u l ti n d i c e s # i n d i c e s = 【p r e s 【,a p p r o x 】【,e q 【,s u b 】【,s p e c i a l 】 索引指令定义的规则索引将被o p e n l d a p 遵守。任何索引参数被包括在内。 如果属性没有出现在索引指令,它仍然可以被使用于搜索过滤条件中。但如果 它发生频繁,它将会降低数据库的性能,若出现次数很少则无所谓。 a t t r l i s t 可能单独出现,或者是用逗号隔开的列表。 默认的可以任性的参数提供索引并且还可以用于随后的索引参数,这些参 数没有索引条目。默认值必须定义在没有索引值之前。随后的默认将提供索引 1 2 武汉理工大学硕士学位论文 参数使用新的设置。 索引作为一种机制被用于l d a p 目录服务器( 数据库) ,可以用来有效地找 到条目匹配搜索标准。索引将k e y 映射到i d 列表( 定义的i d 列表) ,它定义设 置条目项i d ( 定义的条目项i d ) ,因而使条目匹配索引k e y 。下面分别介绍: 通常l d a p 有五种基本的索引类型被执行:e q u a l i t y 、p r e s e n c e 、s u b s t r i n g 、 a p p r o x i m a t e 和o r d e r i n g 索引。 e q u a l i t y 或v a l u e 索引用于判断识别条目( 包含一个属性值) 是否完全匹配一 个给断言的定值。它将会被使用到,如果使用搜索形式为:s n - s m i t h ,换句话 说,没有通配符也包括在内( 仅使用e q u a l i t y 规则) 。 p r e s e n c e 索引用于判断识别所给定的条目项,至少要有一个值对于给定的 属性。它将会被使用到,如果使用搜索形式为:o b j e c t c l a s s = p e r s o n o r a t t r i b u t e = m a i l 。 s u b s t r i n g 索引用于判断识别给定的条目( 包含属性值) ,是否匹配给定的子 字符串断言。它将会被使用到,如果使用搜索形式为:s n = s m * ,也就是说通 配符包括在内( 使用子字符串规则) 。这种规则可能被加强通过使用s u b i n i t i a l ( 优 化如s n = s ) 或s u b a n y ( 优化如s n - - n 杉) 或s u b f m a l ( o 忙化如s n - t h ) ,一个或多个 子参数可能被包括。 a p p r o x i m a t e 索引用于判断识别给定的条目( 包含属性值) ,是否近似等于给定 的断言的值。它将会被使用到,如果使用搜索形式为:s n - - = p e r s o n ( 例如可以 搜索形如s o u n d s a l i k e ) 。 o r d e r i n g 索引用于判断识别给定的条目( 包含属性值) ,是否大于、等于或 者小于给定的断言的值。 索引的使用基于应用需求的情况,影响目录读取表现。相反地,如果从来 没有被搜索的话,索引的使用则毫无意义。因此,如何合理的使用索引,需要 认真研究,仔细分析。 下面给出具体的实例,分别详细说明不同情况下,索引的使用规则。 襻简单使用默认类型的值,例如定义c n ,s n ,u i d 为p r e s ,e q 类型。格式 为: 。 i n d e xc 1 1p r e s ,e q i n d e xs np r e s ,e q i n d e xu i d p r e s ,e q 武汉理工大学硕士学位论文 托i j 建了一个索引,属性值为c l l 参e q u a l i t y , s u b s t r 搜索条件和进一步的优化 参例如对于形如s c = a * 的搜索 i n d e xc ne q ,s u b ,s u b i n i t i a l 耽i j 建了一个索引,属性值为s n 挣e q u a l i t y , s u b s t r 搜索条件 参注意:a p p r o x 索引是浪费时间,因为没有o r d e r i n g 规则对于s na p p r o x 存在, 带只有说明参数存在。 i n d e xs ne q ,a p p r o x ,s u b 航化搜索条件形如o b j e c t c l a s s = p e r s o n i n d e xo b j e c t c l a s se q 3 1 a 索引的使用 对于大量的不同种类的目录查询,要使性能调整到比较好的状态,就需要 添加所有必须的l d a p 索引定义到你的s l a p d c o n f 文件中,以提升常用查询的 性能,但是不应该添加太多的索引定义,这样会使l d a p 后端数据库文件非常 大做任何事情都会再次变慢吲,因此索引的使用要恰到好处。 如果组织树中任何一个o b j e c t 有一个属性a t t r i b u t e ,其属性值多于2 5 ,则 对于此属性的索引将会自动添加到系统中。结果索引被侦查到时将会是 “s y s t e m ”类型而不是“a u t o a d d e d ”类型。这要归功于数据库底层的结构,系统自 动添加索引为l d a p 查询提高了更好的访问存储时间。 索引类型可行映射一对一的过滤类型,比较于l d a p 协议的可行性。在查 询搜索时,可以创建索引去匹配过滤规则。几乎没有应用使用p r e s e n c e 过滤来 搜索查询。索引是没有意义的存在,当目标属性的数据库中的条目大部分存在。 在大多数l d a p 部署存在索引不应该做的,只是浪费的开销。 合理使用索引,索引是数据库中重要的数据结构,它的根本目的就是为了 提高查询效率。现在大多数的数据库产品都采用索引结构。索引的使用要恰到 好处。索引的添加规则
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 菌藻类原料的品质鉴别与保管说课稿中职专业课-烹饪原料知识-中餐烹饪-旅游大类
- 山东省郯城县红花镇初级中学七年级地理上册 2.1 大洲和大洋说课稿 新人教版
- DR培训课件教学课件
- 2024秋八年级数学上册 第十五章 分式15.2 分式的运算 3分式的加减-同分母的分式相加减说课稿(新版)新人教版
- dreams课件Langsto教学课件
- 2025年靶向药护理题库及答案
- douyin-课件教学课件
- 2025年护理管理领导题库及答案
- Unit 5 How do you get to school说课稿初中英语鲁教版五四学制2012六年级下册-鲁教版五四学制2012
- 5、比的应用说课稿小学数学六年级上册浙教版
- 长期照护师技能操作考核试卷及答案
- 街道管理考试题库及答案
- 2025年执业药师之《药事管理与法规》题库附参考答案详解(培优)
- 2025年企业管理人员能力考试试题及答案
- 统编语文(2024)二年级上册识字5《去外婆家》课件
- 2025年6月浙江省高考化学试卷真题(含答案及解析)
- (正式版)DB15∕T 3226-2023 《液化天然气单位产品电耗限额》
- 物权编善意取得制度解读
- 静脉采血业务学习
- 2025年高考政治总复习高中三年必考基础知识复习汇编资料(必背版)
- 保障性租赁住房房屋维修保养方案
评论
0/150
提交评论