(计算机应用技术专业论文)面向应用的内存数据库研究.pdf_第1页
(计算机应用技术专业论文)面向应用的内存数据库研究.pdf_第2页
(计算机应用技术专业论文)面向应用的内存数据库研究.pdf_第3页
(计算机应用技术专业论文)面向应用的内存数据库研究.pdf_第4页
(计算机应用技术专业论文)面向应用的内存数据库研究.pdf_第5页
已阅读5页,还剩56页未读 继续免费阅读

(计算机应用技术专业论文)面向应用的内存数据库研究.pdf.pdf 免费下载

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

文档简介

摘要 内存数据库通过将数据完全加载到内存,在内存中实现对数据的管理,有 效地解决了基于磁盘的数据库系统中c p u 和磁盘i o 之间的主要矛盾。随着6 4 位处理器和操作系统的出现,解除了3 2 位系统最大只支持2 g 内存的限制,为 内存数据库的发展提供了非常有利的时机。内存数据库主要应用于嵌入式系统, 实时计费系统、股票交易系统等。内存中数据读写的速度比磁盘要高出几个数 量级,将数据保存在内存中相比从磁盘上访问数据能够极大地提高应用的性能。 传统的基于磁盘的数据库可能无法满足实时处理性能的需要,软件自身的价格 和购买数据库产品、服努及技术支持的价格等因素都决定了人们对数据库产品 的选择。设计开发一款能够满足较高实时性要求,又能够在数据量相对较小的 情况下替代基于磁盘的关系数据库产品的的内存数据库具有很高的应用价值和 现实意义。 本文主要研究了内存数据库的理论知识及其相关的关键技术,借鉴现有的 内存数据库产品的一些设计理念,提出了支持客户机服务器模型的面向应用 的内存数据库体系结构,优化内存数据的组织结构,最终设计并实现了该内存 数据库系统。 内存中的数据是易失的,如何采取有效的措施确保内存数据库能够完整快 速地从故障中恢复,确保数据的完整性和高可用性是本文研究的一个主要工作。 针对面向应用内存数据库的特点,通过采取重做日志、检查点文件等行之有效 的备份和恢复机制来充分保证内存数据库的可恢复性;通过对数据库复制技术 的研究,提出了内存数据库复制的体系结构。利用复制技术可以确保内存数据 库的高可用性。 最后,通过对系统进行测试验证了该内存数据库系统处理数据的正确性和 处理性能的高效性。 关键词:内存数据库;体系结构;面向应用;数据结构;恢复;高可用性;复 制 a b s t r a c t m a i nm e m o 巧d a t a b a s e ( m d b ) l o a d sd a t ae n t i r e l yi n t om a i np h y s i c a lm e m o r y m dm a n a g e sd a t ai nm e m o r y , w h i c he f f e c t i v e l yr e s o l v e st h ed i s kr e s i d e n td a t a b a s e d r d b ) s y s t e m sc o n t r a d i c t i o nb e t w e e nc p ua n dd i s ki o 、矾t ht h ee m e 曜e n c eo f i 4b i t sc p ua n do p e r a t i n gs y s t e m ,t h er e s t r i c t i o no fo n l ym a xs u p p o r t i n g2 g b n e m o r yf o r3 2b i t ss y s t e mh a sb e e nr e l i e v e da n dp r o v i d e sav e r yb e n e f i c i a l ) p p o r t u n i t yf o rt h ed e v e l o p m e n to fm d b m d bi sm a i n l yu s e di ne m b e d d e d ;y s t e m s ,o n l i n e - b i l l i n gs y s t e m s ,s t o c kt r a d e ss y s t e m se t c ,n l ed a t ar e a d i n ga n d v r i t i n gs p e e do fm e m o r yi sh i g h e ro r d e r so fm a g n i t u d et h a nd i s k t r a d i t i o n a ld r d b n a yn o ts a t i s f i yt h er e q u i r e m e n to fr e a l t i m ep e r f o r m a n c e ,a n dt h ep r i c eo fs o f t w a r e t s e l f , d a t a b a s e ,s e r v i c ea n dt e c h n o l o g ys u p p o r ta r ea l lf a c t o r sp e o p l ec h o o s ea l a t a b a s ep r o d u c t d e s i g n i n ga n dd e v e l o p i n gam d bs y s t e mw h i c hc a nm e e t e a l - t i m ep e r f o r m a n c en e e d sa n dc a nr e p l a c er d b m si ns o f t w a r ed e v e l o p m e n ti so f 7 e a ta p p l i e dv a l u ea n dp r a c t i c a ls i g n i f i c a n c e t h i st h e s i s p u t sf o r w a r dc l i e n t s e r v e rs u p p o r t e da p p l i c a t i o n o r i e n t e dm d b t r c h i t e c t u r eb ym a i n l y s t u d y i n gm d bt h e o r i e sa n dr e l a t e dk e yt e c h n o l o g i e s , ,p t i m i z e sd a t as t r u c t u r e si nm e m o r y , d e s i g n sa n di m p l e m e n t st h em d bf i n a l l y b e c a u s et h ed a t ai nt h em e m o r ) ri sv o l a t i l e ,h o wt om a k et h em d bs y s t e m j c i m p l e t e l yr e c o v e rf r o mf a i l u r eq u i c k l yb yv a l i dm e a s u r e s ,a n de n s u r ed a t a n t e g r a l i t ya n dh i g ha v a i l a b i l i t yi sam a i nw o r ko ft h et h e s i s f o ra p p l i c a t i o n o r i e n t e d ,i d b ,b a c k u pa n dr e s t o r es c h e m e so nt h eb a s i so fr e d ol o ga n dc h e c k p o i n tf i l ee t c a et h ek e yf o rm d b sr e c o v e r y m d b sh j i g ha v a i l a b i l i t yi se n a b l e db yr e s e a r c h i n g i a t a b a s er e p l i c a t i o nt e c h n o l o g ya n dr e p l i c a t i o na r c h i t e c t u r e f i n a l l y , t h ec o r r e c t i o na n dp e r f o r m a n c eo fm d b s d a t ap r o c e s s i n ga r ev e r i f i e d l ys y s t e mt e s t i n g 【e y w o r d s :m e m o r yd a t a b a s e ;a r c h i t e c t u r e ;a p p l i c a t i o n - o r i e n t e d ;d a t as t r u c t u r e ; r e c o v e r y ;h i g ha v a i l a b i l i t y ;r e p l i c a t i o n 论文独创性声明 本论文是我个人在导师指导下进行的研究工作及取得的研究成果。论文中除 了特 i i j ) j r l 以标注和致谢的地方外,不包含其他人或机构已经发表或撰写过的研究 成果。其他同志对本研究的启发和所做的贡献均已在论文中做了明确的声明并表 示了谢意。 储签名:徐撕醐:加“l 论文使用授权声明 本人完全了解上海师范大学有关保留、使用学位论文的规定,即:学校有权 保留送交论文的复印件,允许论文被查阅和借阅;学校可以公布论文的全部或部 分内容,可以采用影印、缩印或其它手段保存论文。保密的论文在解密后遵守此 规定。 名獬名:骼御。删m , 上海师范大学硕士学位论文 第一章绪论 1 1 内存数据库的概念 内存数据库【( m a i nm e m o r yd a t a b a s e ,i n m e m o r yd a t a b a s e ) 顾名思义就是 将数据完全加载到内存,在内存中实现对数据进行管理的数据库。内存数据库有 效地解决了基于磁盘的数据库中c p u 和磁盘i o 之间的主要矛盾,内存中数据读 写的速度比磁盘要高出几个数量级,将数据保存在内存中相比从磁盘上访问数据 能够极大地提高应用的性能。同时,内存数据库抛弃了磁盘数据管理的传统方式, 以全部数据都在内存中的指导思想为基础,对数据库的体系结构进行重新设计【2 3 】, 并且在数据组织结构、索引技术、并行操作等方面也进行了相应的改进,所以数 据处理速度比传统数据库的数据处理速度要快很多,一般都在1 0 倍以上。基于磁 盘的数据库,磁盘上的数据在访问之前通过缓存技术加载到内存中;内存数据库, 内存中的数据会在磁盘上建立拷贝,实现数据的持久化。内存数据库与基于磁盘 的数据库最大的不同之处就是其主拷贝常驻内存,这一点对于内存数据库的体系 结构和访问方式等有着非常重要的影响。 尽管内存数据库与传统基于磁盘的数据库有着很大的区别,但是内存数据库 本质上还是数据库,它也应该具有一般数据库的基本功能【4 】: 数据的持久化管理,包括数据库的定义、存储、维护等; 完成各种数据操作,如查询、插入、更新、删除、完整性检查等; 事务管理,包括事务调度与并发控制等; 对数据存取的控制和安全性检验等; 数据的可靠性恢复机制等。 1 2 课题背景及意义 内存数据库并不是全新的概念,早在上世纪6 0 年代末就已经出现、9 0 年代后 半期得以发展。当时由于3 2 位处理器和操作系统的限制,3 2 位寻址空间实际上最 大只支持2 g b 的物理内存。随着6 4 位处理器和操作系统的出现,理论上最大可以 支持1 6 0 亿g b 的内存空间,所以在6 4 位系统中,内存存储空间只受限于可以安 装到系统上的物理内存的数量。 目前软件开发过程中应用最为广泛的是基于磁盘的关系数据库系统,比较有 代表性的关系数据库系统有o r a c l e 、s q ls e r v e r 、d b 2 、s y b a s e 和m y s q l 等。商 用数据库产品、服务及技术支持等方面的价格相对于中小软件自身的价格来说是 比较昂贵的。表1 - 1 和表1 2 是分别摘自于微软和m y s q l 官方网站上公布的具体 价格表。o r a c l e 、d b 2 和s y b a s e 数据库产品的价格相对来说会更高一些。 】 面向应用的内存数据库研究 表1 - 1s o ls e r v e r2 0 0 5 价格( 摘自微软官方网站) 产品版本购买方式零售价格( 人民币) 含税 企业版1 处理器许可证 ¥3 4 0 。4 5 l 标准版1 处理器许可证 ¥7 1 0 3 4 服务器设备增加客户端访问许可证( 包含 ¥4 0 9 6 9 1 5 个客户端访问许可证) 工作组版1 处理器许可证 ¥4 5 8 0 6 服务器设备增加客户端访问许可证( 包含 ¥1 8 0 4 8 1 0 个客户端访问许可证) s q l 客户端企业版标准版客户端访问许可证 y 2 0 0 1 访问许可证工作组版客户端访问许可证¥l ,8 0 4 表1 - 2m y s q l 企业版数据库服务和技术支持价格表( 摘自m y s q l 官方网站) m y s q l e n t e r p r i s em y s q l e n t e r p r is em y s q l e n t e r p r i s em y s q le n t e r p r i s e b a s i cs i l v e rg o l dp l a t i n u m $ 5 9 9 0 0 s e r v e r y e$ 1 9 9 9 0 0 s e r v e r y e$ 2 9 9 9 0 0 s e r v e r y e$ 4 9 9 9 0 0 s e r v e r y e a ra ra ra r 国内有很多基于m y s q l 数据库开发的应用软件,人们对m y s q l 许可模式存 在一定的认识误区,以为m y s q l 作为开源软件是完全免费的。其实m y s q l 提供 两种方式的许可模式:商业模式和g p l ( g e n e r a lp u b l i cl i c e n s e ) 协议模式。如果 采取g p l 协议模式,m y s q l 数据库可以免费使用,但是同时企业需要遵从g p l 协议将源代码公开,这可能是很多企业不愿意做的事情。目前国际上由于违反g p l 协议而成为被告的企业和产品屡见不鲜,如c i s c ow i p 3 0 0i p h o n e 、s k y p e 网络电话 等。中国自加入到w t o 以来,政府不断加大知识产权保护和打击盗版的力度,使 用盗版产品对于企业的长期发展无疑是致命的。 现在人们对应用程序的处理性能要求越来越高,对于那些对处理性能及实时 性要求较高的应用来说,基于磁盘的关系数据库可能会成为系统性能的瓶颈,无 法满足设计开发的需要。内存的存取速度为n s 级( 十亿分之一秒) ,磁盘的存取速 度为u s 级( 百万分之一秒) ,内存的存取速度比磁盘快数百倍而且性能均一。随着 内存价格的下降、容量的不断增大和6 4 位操作系统的普及,内存数据库成为数据 库发展的主流方向之一。目前市场上已有的内存数据库产品主要是面向大型企业 的应用,如电信领域的在线计费、实时帐务等、证券、银行以及嵌入式系统等。 其昂贵的价格无论是对中小软件的开发企业,还是对应用企业都是不小的负担。 虽然也有开源的内存数据库产品,研究开发一款具有自主知识产权的内存数 据库产品,不仅能够满足对实时性要求较高的应用系统开发的需要,同时也可以 在中小软件开发中作为关系型内存数据库产品的替代产品,有效地节约应用企业 的开支,提升产品的竞争力。总之,对内存数据库的研究具有很大的实际应用价 值和现实意义。 2 上海师范大学硕士学位论文 1 3 国内外研究现状 目前市场上存在的有商用内存数据库产品和开源内存数据库产品。商用内存 数据库产品以o r a c l et i m e s t e n 、a l t i b a s e 、e x t r e m d b 等为代表;开源的内存数据 库产品主要有f a s t d b 以及m y s q l 提供的m e m o r ys t o r a g ee n g i n e 等。下面对上述 的内存数据库产品进行简要地介绍。 o r a c l e 公司于2 0 0 5 年6 月2 0 日完成了对t i m e s t e n 公司的收购,标志着o r a c l e 正式进入内存数据库市场。t i m e s t e n 5 j 是一个针对内存进行了优化的关系数据库, 通过在内存中管理数据,并相应地优化数据结构和访问算法,数据库操作能够以 最大效率执行,从而大大提高响应速度和吞吐量,甚至能够与完全使用高速缓存 磁盘的r d b m s 相媲美。t i m e s t e n 可嵌入到应用程序中,从而消除了进程间通信 和不必要的网络操作,以进一步提高数据库操作的性能。根据标准关系数据模型, 可以使用s q l 、j d b c 和o d b c 访问o r a c l et i m e s t e n 数据库。o r a c l et i m e s t e n 提 供了r e p l i c a t i o nt i m e s t e nt ot i m e s t e n 选件以实现高可用性和负载平衡;c a c h e c o n n e c tt oo r a c l e 选件可将内存数据库扩展成一个可更新的缓存,从而管理o r a c l e 数据库与o r a c l e 内存数据库t i m e s t e n 之间的数据加载和同步。t i m e s t e n 主要支持 的系统包括实时计费系统、股票交易系统、呼叫中心系统、航线运营系统等。 a l t i b a s e 数据库1 6 j 是韩国a l t i b a s e 公司推出的一款混合型数据库管理系统 ( h y b r i dd b m s ) ,即同时支持内存数据库和磁盘数据库,从而获得极高的存取速 度和极强的并发访问能力以及大容量存储访问。a l t i b a s e 数据库有三种运行模 式:内存数据库专用模式、磁盘数据库专用模式和混合模式。a l t i b a s e 完美地 结合了磁盘数据库和内存数据库的特性,为需要大量、高速处理的用户提供了最 有效的解决方案。a l t i b a s e 数据库凭借其高性能、容错能力和事务管理的方便 性等优势在通信、网上银行、证券交易、实时应用和嵌入式系统领域有着非常广 泛地应用。a l t i b a s e 数据库在国内市场上成功的案例主要集中在电信行业的计 费和帐务系统等的建设中,其中以江苏联通综合营帐系统为代表。 e x t r e m e d b l 7 1 是美国m c o b j e c t 公司的核心产品,主要应用于嵌入式系统,诸 如网路通信设备、自动化产品、控制系统、医疗仪器、航空航天、机顶盒、手机 及p d a 等。e x t r e m e d b 读写速度可以达到微秒级。 m y s q l l s l 提供了m e m o r ys t o r a g ee n g i n e 将数据存储于内存中,但是当m y s q l 服务停止或重启时数据会丢失。基于m e m o r ys t o r a g ee n g i n e 的每一个表对应一个 以f r m 为扩展名的文件,默认使用h a s h 索引,同时支持b 树索引,采取定长记 录的格式。 f a s t d b 9 j 是由k ak n i z h n i k 开发的一款开源的面向应用的内存数据库,具有 非常高效的实时处理性能和方便的c + + 接口。该产品不支持客户机服务器的体 系结构,需要应用程序以嵌入式的方式利用该数据库。 3 面向应用的内存数据库研究 1 4 本文的研究目标 通过对内存数据库基础理论知识的学习和现有内存数据库系统的研究,本文 的研究目标有如下五个方面: ( 1 ) 提出支持客户机服务器模式的面向应用的内存数据库的体系结构。支持 客户机服务器模型在现实的应用中将会更加广泛;面向应用的方式缺乏 一定的灵活性,但是面向应用的访问方式减少了s q l 语句执行前分析、优 化耗费的时间,更具有针对性,实时性能会更高。 ( 2 ) 优化内存数据组织结构和访问模式,以便节约内存开销、提高实时处理性 能。引入h a s h 和t 树索引技术,提高数据访问速度。由于实际运行过 程中数据量的不确定性,内存数据库应具备自动扩展的功能。 ( 3 ) 鉴于内存数据自身易失的特点,内存数据库能够完整快速地从故障中恢 复,确保数据的完整性以及高可用性是本文重点研究的目标之一。通过采 取重做日志、检查点文件等有效手段,充分保证内存数据库的可恢复性; 利用数据库复制技术实现内存数据库的高可用性。引入基于共享内存的重 做日志和复制日志数据结构,有效地避免对内存数据库的处理性能产生过 多的影响。 ( 4 ) 在以上研究的基础上实现该内存数据库系统,探索在软件开发过程中利用 该内存数据库替代传统的关系数据库。摆脱中小规模软件开发中对传统基 于磁盘的关系数据库系统的依赖。 ( 5 ) 建立较完善的测试方案对内存数据库系统处理数据的正确性和处理性能 进行系统的测试。 1 5 论文的内容安排 第1 章:绪论。讨论了内存数据库的概念、课题的背景及意义、国内外研究 现状和本文的主要研究目标; 第2 章:内存数据库体系结构。提出了支持客户机服务器模式的面向应用 的内存数据库体系结构,并对体系结构中的各个组成部分进行具体的综合性的描 述;面向应用特性的具体体现及内存数据库实现过程中涉及的部分相关技术介绍; 第3 章:内存数据组织结构。主要论述了内存数据库在内存中数据的组织结 构,包括构成数据库的表( 字段、记录、索引等) 、重做日志、并发控制等; 第4 章:恢复及高可用性。根据内存数据库的技术特性,采取重做日志、检 查点文件等备份、恢复机制确保内存数据库能够完整快速地从故障中恢复,确保 数据的完整性:论述了内存数据库的复制体系结构,利用数据库复制技术确保内 存数据库的高可用性; 第5 章:系统测试。设计了一套测试方案对内存数据库两种不同访问模式进 4 上海师范大学硕士学位论文 行测试,并通过测试结果证明内存数据库数据处理的正确性,通过吞吐量和平均 响应时间反映其高效的处理性能; 第6 章:总结。总结本文的主要工作、创新点及下一步的工作; 最后是参考文献和致谢。 5 喵向应用的内存数据库1 f i j t ? c 第二章内存数据库体系结构 本章在对内存数据库理论的学习和理解基础上,提出了支持客户机服务器 模型的面向应用的内存数据库基本体系结构,并针对体系结构中的各个组成部分 进行综合性的介绍。 2 1 体系结构综述 内存数据库的基本体系结构【1 0 , 1 1 , 1 2 】由服务器后台程序、控制文件、内存数据组 织结构、检查点文件、重做同志文件和管理工具实用程序等组成。内存数据库的 体系结构如图2 1 所示。 ,日f 选_ 、 图2 1 内存数据库体系结构 服务器后台程序作为内存数据库系统的总控中心,负责对整个内存数据库的 管理和调度;协调应用程序和内存数据库之间的通讯等。 从图2 1 中可以看出,内存数据库支持客户机服务器( c l i e n t s e r v e r ,c s ) 模式。应用程序从客户端通过n o t i f y 消息发送请求到服务器后台服务进程;通过 n o t i f y 消息的类型获取针对该n o t i f y 消息注册的处理函数;调用该处理函数首先 将对数据的操作信息写入到重做日志中,而后再对内存中的数据进行操作,最后 对该请求给出响应。 内存数据库中的数据全部保存在内存中,系统由于断电或重启时存储在内存 中的数据会丢失。数据库中事务的原子性( a t o m i c i t y ) 、一致性( c o n s i s t e n c y ) 、 6 上海师范大学硕士学位论文 隔离性( i s o l a t i o n ) 和持久性( d u r a b i l i t y ) 四个特性中,内存数据库相对来说缺乏 对持久性的支持。通过采用基于共享内存的重做日志、检查点文件和数据库复制 等技术可以弥补内存数据库在该方面的缺陷,有效地确保内存数据库的高可用性 和数据完整性。内存数据库系统中,模式与外模式之间的映像通过n o t f i y 消息进 行定义;模式与内模式之间的映像,通过对各个表分别分配连续的内存空间进行 存储,有效地提高数据访问的速度。 关系数据库管理系统( r d b m s ) 作为可选的组件可以与内存数据库并存。通 过关系数据库实现通用的数据管理,内存数据库实现那些对实时性要求比较高的 应用。关系数据库中的数据通过n o t f i y 消息方式上发到内存数据库中,内存数据 库中的数据可以采取o t l ( o r a c l e ,o d b ca n dd b 2 c l it e m p l a t el i b r a r y ) 技术与关 系数据库进行交互。 2 1 1 控制文件 控制文件用于定义内存数据库中包含表的相关信息:表名、表对应的磁盘文 件、备份文件、初始记录数和扩展记录数。控制文件命名方式:“数据库名c t l , 下面是控制文件中针对其中一个表的格式说明,多个表只需重复定义说明即可。 t a b l e _ n a m e c o r d e r s t a b l e _ f i l ed a t a l d b n o r t h w m d _ c o r d e r s m d b b a c k u p _ f i l ed a t a l d b n o r t h w m d _ c o r d c r s m d b b a k r e c o r d _ h u m 1 0 2 4 r e c o r d _ c x t 1 0 2 4 在加载数据库时,内存数据库服务进程读取控制文件中的信息以便获取数据 库包含的表信息。如果表文件不存在,首先创建数据库表文件;如果表文件已经 存在,验证表文件的有效性并加载到内存中。运行过程中如果内存中的表信息发 生了相关的变化,将变化后的信息重新写入到控制文件中,确保控制文件与表的 相关信息的一致性。 内存数据库中记录采取定长的方式进行存储,因此初始记录数决定了该表在 数据库启动时需要为该表分配内存的大小,有关内存大小的计算后续章节将进行 详细地说明。内存数据库运行过程中,当表中的记录数超出了初始的记录数时, 系统会根据指定的扩展记录数自动对表进行相应的扩展【1 3 】。扩展记录的方式是根 据原记录数与扩展记录数的和重新计算所需内存大小,而后重新分配连续的内存 区域。虽然记录数发生了变化,但是并不影响记录本身在内存中的存储,这样可 以直接将内存中的记录数据复制到新分配的内存区域中。h a s h 索引的建立与桶 的大小有关,因此如果表中存在h a s h 索引的话,则需要重建索引。自动扩展记 录的示意图如图2 2 所示: 7 面向应用的内存数据库研究 图2 - 2 自动扩展记录 2 1 2 内存数据组织结构 内存数据库建立在数据已完全加载到内存中的思想基础上,内存中数据的组 织结构对于内存数据库的管理及其处理性能至关重要。在内存中以表作为基本单 位,既便于数据的统一管理和维护,又降低了数据之间的耦合度。表由表头信息、 字段信息、数据记录区、记录使用标志区,以及可选的h a s h 索引和t 树索引等 构成。表头信息记录了与表相关的关键信息,为对表数据的完整性校验检查提供 了有利的保证。数据库中所有的表通过循环链表的方式组织到一起。表中数据记 录采取定长的方式进行组织,每一条记录都有唯一的标识与之对应,类似于o r a c l e 数据库中的r o w i d 的概念。内存中的数据通过同步到磁盘文件中来实现数据的持 久化,每一张表对应于一个磁盘文件,通过并行的方式同步或加载数据,可以有 效地提高内存数据库同步和加载数据的处理速度。 通过索引技术【1 4 l 可以有效地提高数据的查询速度【1 5 , 1 6 】,本内存数据库中提供 了两种索引技术:h a s h 索引和t 树索引。索引作为表的一部份,与表中的数据 共同进行组织和管理。h a s h 索引适用于等值( = ) 比较,t 树索引适用于等值比 较和范围比较( ( 、( = 、= ) 、) ) 等。通常,在等值比较方面,h a s h 索引的速度要 优于t 树索引;相对于t 树索引,h a s h 索引需要更多的存储空间。 h a s h 索引通过h a s h 函数将索引字段的内容变换为h a s h 值后与记录的唯 一标识进行对应,不仅能够有效地节约内存空间,也会加快数据比较的速度。h a s h 索引桶大小的选择对h a s h 索引的影响非常大,桶太小将会导致大量的冲突,桶 太大将会浪费不必要的内存空间。 t 树索引【1 4 】由b 树索引和a v l 树索引演绎而来,继承了a v l 树和b 树的优 点,通过改进更适合内存数据库使用的索引结构。为了达到节省内存空间的目的, t 树索引中每个索引结点只保存索引字段的内容,其它的数据可以通过访问记录本 身来获取。t 树索引结构完全驻留在内存中,因此不会产生磁盘i 0 ,t 树索引比 b 树索引需要更少的空间和c p u 周期。 有关内存数据组织结构更详细的内容将在第三章中将进行具体的介绍。 2 1 3 重做日志 重做日志( r e d ol o g ) 1 7 】的引入是为了确保在内存数据库发生故障时,能够 8 上海师范大学硕士学位论文 尽可能地减少因数据丢失造成的损失,确保数据的完整性。将对内存数据库进行 操作的数据变化信息记录在重做日志中,当数据库发生故障时,通过同步到磁盘 上的检查点文件和重做日志可以将数据库恢复到系统发生故障前的时间点状态。 内存数据库提供了两种类型的重做日志:基于共享内存的重做日志和基于磁盘文 件的重做日志。这两种类型的日志各有优缺点,可以根据应用程序的特性进行抉 择。 共享内存作为进程间通讯中最快的方式,不会因为基于共享内存的重做日志 的引入而成为数据库处理性能的瓶颈。共享内存是由操作系统维护的,不依赖于 具体进程的存在而存在。当内存数据库服务进程发生故障时,重新启动数据库服 务进程后将共享内存重新附加到服务进程中来,读取共享内存中的日志信息即可 恢复数据库。采取基于共享内存的重做日志方式,当主机出现故障时由于共享内 存被破坏可能会造成部分数据的丢失。 基于磁盘文件的重做日志,在基于共享内存的重做日志基础上,引入了更加 可靠的磁盘文件。内存数据库中数据操作变化信息首先会写入到基于共享内存重 做日志中,而后再写入到磁盘文件中。由于磁盘 o 的引入,此种方式的重做日志 可能会成为数据库系统处理性能的瓶颈。对于那些对数据安全性要求比较严格的 应用来说,需要在处理性能和数据的完整性之间进行折中。如何实现更加可靠有 效的重做日志,而不影响内存数据库自身处理性能将是下一步工作的重点内容之 一。 另外,与关系数据库不同的是,重做日志对内存数据库来说并不是必需的, 可以根据应用的需要选择是否记录重做日志,或只针对某些关键的表记录重做日 志。 2 1 4 检查点文件 鉴于内存易失的特性,为了确保内存数据库数据的完整性和持久性,内存数 据库系统会通过检查点操作将内存中的数据同步到磁盘上的检查点文件【1 8 】中,实 现数据库的持久化。触发检查点操作的事件主要有以下四种情况: ( 1 ) 检查点时间间隔到。采取定时器的工作方式,当定时时间到达后即触发检 查点操作。 ( 2 ) 共享内存日志满。无论是基于共享内存还是磁盘文件的重做日志,日志内 容均会保存到共享内存中,其目的之一就是为了确保当保存重做日志的共 享内存被写满时,能够触发检查点操作。 ( 3 ) 数据库管理员手工发起。系统管理员通过管理程序手工发起同步操作将触 发检查点操作。 ( 4 ) 数据库服务进程停止时。当内存数据库服务进程停止时,会触发检查点操 作,将内存中的数据同步到磁盘文件中,数据库服务进程再次启动时将对 9 面向应用的内存数据库研究 应的文件加载到内存中即可。 执行完检查点操作后,内存中的数据被同步到磁盘文件中,同时清空共享内 存中的日志信息。检查点文件的组织结构和表在内存中的组织结构完全相同,数 据的同步操作可以非常快速。检查点文件的保存路径和文件名通过控制文件来定 义。另外,通过服务进程的配置文件可以设定需要为每个表保存检查点文件的个 数,通过在文件名后面追加数字序号以示区别,在该设定的文件个数范围内循环 使用文件序号。 检查点文件中文件头信息记录了文件自身的很多特性信息,包括文件大小、 字段数目、h a s h 索引数、t 树索引数、记录大小、记录数、扩展记录数、已用记 录数等,对检查文件的有效性提供了有力的保证。 2 1 5 管理工具 在面向应用的内存数据库中,管理工具的主要目的是完成内存数据库的启停, 实现内存数据的查询、数据导出同步到磁盘等操作;修改内存中的数据主要通过 应用程序实现,确保数据的安全性。为此设计了m d b v i e w 、m d b c l i e n t 、m d b _ s y n c 等工具实现上述操作。m d b v i e w 工具用来查询导出到磁盘文件中的内容; m d bc l i e n t 工具用来查询内存中的内容;m d bs y n c 用来将内存中的数据同步到磁 盘文件。 下面分别对m d bv i e w 和m d bc l i e n t 工具运行的方式和其提供的命令进行简要 地说明。m d bc l i e n t 工具与m d b v i e w 的不同之处在于运行方式和其提供的命令较 m d bv i e w 多。m d bv i e w 以文件名作为参数,命令的运行方式如下所示: m d bv i e wd b n o r t h w i n dc o r d e r s m d b t a b l ev i e w e rf o rm e m o r yd a t a b a s em a n a g e m e n t t y p e h e l p f o rm o 圮i n f o r m a t i o n h e l p m d b _ v i e wc o m m a n d s : o p e n t a b l e _ n a m e 打开指定的表 s e l e c ta l l 【o r d e rb y i 【d e s e l l ; 查询表中的内容 s e l e c t = 【a n d i n ( , , ) 】【o r d e rb y f 【d e s c l ; c o u n ta l l 查询表中记录总数 c o u n t = 查询某个字段等于具体值的记录数 c l o s e关闭打开的表 i n f o查看与表相关的信息 d e s c查看表结构信息 1 0 上海师范大学硕士学位论文 c 】【i t h e l p i n f o 1 a b l e n a m e | 退出 薷助 :c o r d e r s 湾t 名 f i l e s i z e:2 4 0 2 8 0 表占内存文件空间大小 f i e l d n u m i n d e x n u m r e c o r d s i z e r e c o r d n u m r e c o r d e x t u s e d n u m d e s e f i e i dn a 匝 mn o r d c d d mn c u s t o m e r i d m _ n e m p l o y e e l d m1 1 0 r d e r d a t e :1 4 :1 :2 0 8 :1 0 2 4 :1 0 2 4 :1 0 9 段数 索引数 ,记录数 表可容纳记录数 胂展记录数 傣中已有记录数 f i e l df 打e l o n g l o n g u d n g l o n g l o n g m _ l l s h i p p e d d a t e mn s h i p v m m _ n f r e i g h t m _ s s h i p n a m e m _ s s h i p a d d r e s s m _ s s h i p c i t y m _ s s h i p r e g i o n m _ s s h i p p o s t a l c o & m _ s s h i p c o u n t r y d o s e e x i t i d n g l o n g l o n g l o n g c h a ra r r a y c h a ra r 咄 c 吣a r 脚 c h a ra r r a y a l ra r r a y c h a ra r r a y f 1 e u ds l z e 4 4 4 8 8 8 4 4 4 0 6 0 1 5 1 5 1 0 1 5 i n d e x _ t y p e h a s h m d b v i e w 相关的其它命令此处不再赘述。m d b c l i e n t 可以直接访问内存中的 数据,其命令格式与m d b v i e w 类似。其命令运行的方式:m d b c l i e n tm d b _ i p m d bp o r t ,通过s h o w t a b l e s 命令可以查看该内存数据库中表的列表,通过o p e n 命 令打开指定的表后,即可以执行相关命令查看表的信息、查询表中的数据等。 m d b _ c l i e n tt o o l :r e l e a s e1 0 0 c o n n e c tt om d bs e r v e r :l o c a l h o s t :2 5 1 0 0 1 1 面向应用的内存数据库研究 m d b s h o w t a b l e s ; 列出数据库包含的所有表 c c u s t o m e r s c o r d c r s 其它表忽略 m d b o p e n c o r d e r s ; t a b l e c o r d e r s o p e 皿e d m d b d o s e m d b e x i t 2 2 面向应用 本文中内存数据库面向应用的特性主要体现在对数据库模式的定义和数据库 的访问模式两个方面。所谓的面向应用是指根据实际的应用通过类的形式定义数 据库的模式,即所包含的表;定义操作相关表的n o t i f y 消息,内存数据库中针对 每个n o t i f y 消息注册对应的处理函数来处理对应的消息。 大部分关系型数据库系统和商用内存数据库系统都支持s q 【,9 2 标准,通过 s q l 中的数据定义语言( d d l ) 来完成数据库模式的定义;交互式的数据操纵语 言( d m l ) 实现和应用程序之间的交互。数据库系统在处理s q l 语句时需要对s q l 语句进行解释和优化,解释和优化的过程需要耗费一定的时间,对于那些对实时 性要求较高的系统解释和优化的时间开销可能会成为系统的瓶颈。 能够实现对s q l - 9 2 标准的支持,系统将会非常的灵活方便,但是由于本人能 力和时间上的限制,本文中采取面向应用的方式实现数据库模式的定义以及与内 存数据库的交互。面向应用的方式缺乏灵活性,但是系统更具有针对性,节省了 s q l 语句解释和优化的时间,系统的实时性会更好。 2 2 1 数据库模式定义 数据库的模式包括外模式、模式和内模式。外模式又称为子模式,对应于用 户级。它是某个或某几个用户所看到的数据库的数据视图,是与某一应用有关的 数据的逻辑表示。内模式又称存储模式,对应于物理级,它是数据库中全体数据 的内部表示或底层描述,是数据库最低一级的逻辑描述,它描述了数据在存储介 质上的存储方式和物理结构,对应着实际存储在外存储介质上的数据库。模式 ( s c h e m a ) 也称为逻辑模式或概念模式,是对数据库中的全部数据的逻辑结构和 特征的描述,模式不仅要定义数据的逻辑结构( 例如数据记录由哪些数据项构成, 数据项的名字、类型、取值范围等) ,而且要定义与数据有关的安全性、完整性要 求,定义这些数据之间的联系等。 面向应用的内存数据库中,表的定义通过以类的形式进行声明,而后通过 r e g i s t e r 宏进行注册,数据库中定义的表通过循环链表的方式进行组织和管理。 上海师范大学硕士学位论文 下面以表o r d e r s 的声明和注册为例说明模式的定义方法: 注册表的宏 # d e f i n er egisteroabic)| s t a t i cc m d b f i e l d + m d b _ e o m p o n e n t s o f # # t a b l e 0、 r e t u r n ( ( t a b l e + ) o ) - m d b _ c o m p o n e n t s ( n u l l ) ;) c m d b t a b l e t a b l e :m _ t a b l e ( # t a b l e ,s i z e o f ( t a b l e ) ,& m d b _ c o m p o n e n t s o f # # t a b l e ) 有关表o r d e r s 的声明如下所示: c l a s sc o r d e r s p u b f i c : m i n t 4 m _ n o r d e d d ; m i n t 4 m _ n c u s t o m e r l d ; m i n t 4 m _ n e m p l o y e e i d ; m m t 8 m _ l l o r d e r d a t e ; m i n t 8 m _ l l r e q u i r e d d a t e ; m

温馨提示

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

评论

0/150

提交评论