软件工程毕业论文17415474.doc

上传人:文库蛋蛋多 文档编号:4069134 上传时间:2023-04-03 格式:DOC 页数:45 大小:672.50KB
返回 下载 相关 举报
软件工程毕业论文17415474.doc_第1页
第1页 / 共45页
软件工程毕业论文17415474.doc_第2页
第2页 / 共45页
软件工程毕业论文17415474.doc_第3页
第3页 / 共45页
软件工程毕业论文17415474.doc_第4页
第4页 / 共45页
软件工程毕业论文17415474.doc_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《软件工程毕业论文17415474.doc》由会员分享,可在线阅读,更多相关《软件工程毕业论文17415474.doc(45页珍藏版)》请在三一办公上搜索。

1、本科毕业论文(设计)题目: 基于内存数据库SQLite3的MSSQL中间件设计与实现姓 名: 黄* 学号: 2008100* 院(系): 信息工程学院 专业: 软件工程 指导教师: * 职称: 讲师 评 阅 人: 职称: 2012 年 6 月学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。本人完全意识到本声明的法律后果由本人承担。作者签名: 年 月 日 学位论文版权使用授权书本学位论文作者完全了解学校有关保障、使用学位论文的规定,同意学校保留并向有关学位论文管

2、理部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权省级优秀学士学位论文评选机构将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。本学位论文属于1 保密 ,在_年解密后适用本授权书。2 不保密 。(请在以上相应方框内打“”)作者签名: 年 月 日 导师签名: 年 月 日 摘 要随着嵌入式技的不断发展,嵌入式数据采集系统被广泛应用在电信、工业控制、航空航天、电网监测、电子商务等领域。这些应用领域的共同点是数据具有很强的实时性,要求底层的数据库具有快速可靠的数据处理能力,而传统的磁盘数据库因为磁盘I/O速度的瓶颈造成了整个系

3、统处理能力的下降,对于实时系统来说,这不仅会导致一些事务不能及时完成,甚至还会影响整个系统的稳定和安全。内存数据库(MMDB)解决了磁盘数据库的I/O瓶颈问题,将其应用到上述领域将有效提高系统的处理能力和稳定性。本系统在现有的DBMS上,嵌入高效的SQLite3内存数据库,大幅提高系统的性能。项目针对基于SQL Server的中小型数据库应用系统,在服务器端进行开发。在内存数据库中进行查询,可以极大地减少系统的响应时间,尤其是在系统繁忙时,性能可提升几个数量级。本项目是在目前广泛使用的.NET平台上,通过实现ADO.NET的一个Data Provider for OLE DB,使开发者可以通过

4、统一的ADO.NET接口和类方便的使用高效内存数据库SQLite3。并将为更高层用户提供一个便捷的安装程序,使用户在已搭建好的原始系统上插入本系统成为可能。通过与SQLite的比较分析,可以看到内存数据库较传统磁盘数据库的存取速度有所提高,这样的设计可以更好地解决并发控制的问题。关键词:SQLite3 内存数据库 MS-SQLAbstractWith the continuous development of embedded technology,embedded data acquisition system has been widely used in telecommunicatio

5、ns,industrial control,aerospace,power system monitoring,e-commerce and other fieldsData in these applications are in common real-time data,and these applications requested the database at the bottom layer to have fast and reliable dataprocessing capacity,whereas the traditional disk resident databas

6、e which has the disk I/O speed bottleneck causes the decline in data processing capacity of the entire system,it will not only lead to the result that a number of transactions Can not be completed intime,and even the entire system will also be affected on stability and securityMainmemory database(MM

7、DB)resolves the disk I/O bottleneck problems and if it is deployed to the above-mentioned areas,it will effectively improve the handling capacity and stability in these systemsThis project embeds SQLite3, a memory database which can efficiently and significantly improving system performance, into th

8、e existing database systems. Project is for Small and Medium for SQL Server database based applications, server side development. Querying the database in memory, you can greatly reduce system response time, especially when the system is busy. The performance can be improved by several orders of mag

9、nitude.This project bases on the widely used .NET platform, implements an ADO.NET Data Provider for OLE DB. So that developers can access efficient memory database SQLite3 conveniently by unified ADO.NET interfaces and class. The system will also provide users an installation, which make it possible

10、 to insert the new system into the existing original system.Through a comparative analysis with SQLite,we can see that the MMDB accesses a lot faster compared with the traditional database,so the design could solved the problem of concurrency control betterKeyword: SQLite3 memory database MS-SQL缩略词和

11、术语DRDB Disk Resident Database 磁盘数据库MMDB Main-Memory Database 内存数据库OS Operating System 操作系统SQLite 是没有独立运行的进程,与服务器的应用程序在应用程序进程空间内共生共存,遵循ACID的关联式、嵌入式数据库。MidUnit 是本课题研究实现的中间件系统目录摘 要3Abstract4缩略词和术语1目录2第一章 绪论11.1 系统开发背景11.1.1课题来源11.1.2实时数据库特点11.2 国内外研究现状21.3 研究目的、内容及意义31.3.1研究目的41.3.2研究内容41.3.3研究意义41.4 本

12、文结构4第二章 内存数据库相关基础62.1内存数据库的特点62.1.1内存数据库数据存储的组织和管理62.1.2事务处理62.1.3系统恢复72.2内存数据库与磁盘数据库的差异72.3内存数据库的关键技术92.4 本章小结10第三章 开源数据库SQLite分析113.1 SQLite的特点113.2 SQLite的不足123.3 SQLite的体系结构123.4 SQLite的常见API143.4.1打开数据库143.4.2执行SQL语句143.4.3保存查询结果143.4.4释放空间153.4.5显示错误信息153.4.6关闭数据库153.5 SQLite的使用153.6 本章小结16第四章

13、 系统概要设计174.1系统体系结构174.2中间件174.3 主要功能模块184.4 本章小结19第五章 系统分析及系统实现205.1 基本功能205.2 扩展功能205.3 开发环境205.4 C#下SQLite3的配置及使用205.5 SqlConverter285.5.1 SqlConverter类列表及类视图295.5.2 SqlConverter界面设计315.6 系统现状335.7 本章小结33第六章 总结与展望34致 谢35参考文献36第一章 绪论1.1 系统开发背景1.1.1课题来源数据库理论与技术的发展极其迅速,其应用日益广泛,几乎无处不在。近些年来,基于磁盘的数据库技术获

14、得了空前的发展,并在传统的应用领域获得了极大成功,然而它们在现代的工程和时间关健型应用面前却显得软弱无力,面临新的严峻挑战。随着嵌入式软件技术的发展和内存容量的大幅度提高,嵌入式内存数据库应用而生。众所周知,计算机对内存的读写时间,远远小于对磁盘的读写时间。内存数据库系统,是将数据保存在内存中,在内存中对数据进行管理的数据库系统。使用内存数据库进行查询等常用操作,将使系统性能得到明显提升。做为实时数据解决方案嵌入到传统数据库系统中,可以极大地减少系统的响应时间,使性能提升几个数量级。目前,国内外有大量基于磁盘数据库的信息管理系统,例如学校的选课系统、考试查询系统等。这些系统大都使用传统的磁盘数

15、据库管理系统对数据进行管理,如SQL Server,Oracle等。这些数据库管理系统都比较成熟稳定,但执行效率较低,特别是网络访问人数激增时,系统响应时间更是常让用户无法忍受。大量的数据库应用研究,特别是在电信领域和金融领域,试试内容交付对数据的并发访问有很高要求。这些应用要求在很高的传输率,加上低的传输延迟,它们要求严格的持久性和高的可靠性。如果对事务处理不够迅速,并发操作的互相等待时间过长,都会极大的影响实际的应用,有时会造成巨大的损失,而这些都是人为干预无法解决的问题。 嵌入式内存数据库的特点决定了它有能力处理实时事务。但是它已不是传统的磁盘数据库,因此,传统数据库适用的数据结构、事务

16、处理算法与优化、并发控制及恢复等技术对内存数据库不一定合适。所以,实时内存数据库系统应该打破传统磁盘数据库的设计观念,考虑内存快速读取的特点,以CPU和内存空间的高效利用为目标,来重新设计开发各种策略与算法、技术、方法及机制。1.1.2实时数据库特点实时数据库主要为短暂、易变的数据的维护而设计,强调处理的实时性和正确性。实时数据库的研究方面包括:数据和数据库的组织结构、事务的优先级分派、事务的并发和调度控制、数据库恢复、实时数据查询和优化、数据和事务特性的语义研究等等。实时数据库主要具有以下特征1:(1)及时处理包含时态数据的操作或事务具备时间约束和次序依赖关系。时态数据指有效性随时间而变化的

17、数据,在时态数据上的操作必须在失效前处理完毕。处理时态数据的事务问也隐含了时间依赖关系,包含开始依赖、提交依赖、夭折依赖等。(2)区分硬实时、固实时、软实时和非实时事务的并发控制和调度策略。硬实时事务是指超过截止期会给系统带来灾难的数据库事务;固实时事务是指超过截止期价值立即变为0,不再产生负面影响的数据库事务;软实时事务是指超过截止期价值逐渐下降为O的数据库事务;非实时事务是指无截止期要求的数据库事务。硬实时、固实时、软实时和非实时事务呈现出优先级逐渐下降的层次关系,传统数据库的事务没有明显的层次关系。(3)必需保证事务的ACID性质。与传统数据库一样,事务由有限的操作序列组成,必须具备AC

18、ID准则。如果事务的执行原子性、功能一致性、彼此隔离性和作用持久性不能保证,数据的有效性和操作的可管理性也不能实现。(4)在处理结果地大逻辑精确性和时间正确性上更偏向于时间正确性很多实时场合,如果实时系统不能在截止期内给出逻辑精确的结果但可在截止期内给出相对正确的结果,则应用更倾向与接受后者。过期的处理结果对系统作用不大,在实时场合甚至出现负面影响。实时系统对结果时间正确性的偏向在实时数据库里也一样存在。(5)具备高可靠性和健壮性。实时数据库作为数据管理平台很多情况下处于无人操作的环境中,要求能在时间运行状态中始终正常运转,对可能的异常情况能够采取相应的解决措施。(6)有完善的备份和恢复机制。

19、传统数据库中的备份和恢复机制对实时数据库系统也必不可少。虽然自身具备一定的可靠性和健壮性,但不能保证所有外部环境的正常。在运行过程中必须对历史数据进行备份,以便在灾难发生后能够减少损失,从历史数据上尽快恢复。1.2 国内外研究现状内存数据库的研究始于20世纪80年代中期,两大因素推动了它的研究和发展2,一是一些现代应用对数据库的需求,需要数据库具有实时处理数据的能力,以满足时间限制,如雷达跟踪、证券交易等:工程应用领域如过程控制、CADCAM、CIMS、网络(如电信、电力、数据网等)2;人工智能领域如自然语言处理、专家系统、知识处理、演绎推理或规则系统、机器人与机器人视觉、数据挖掘等等。另一个

20、是容量大、价格低廉的内存。目前以G为量级的内存已经出现,“在十年之内,数据库将使用T为量级的内存缓冲区,几乎最大的数据库都可以驻留内存”。在DRDBS中,磁盘IO是系统的“瓶颈”,系统的算法设计目标是最少的IO和最大的磁盘空问利用率,即访问磁盘的次数最小,磁盘空间的有效使用率最大;而在MMDBS中,外存的IO已不再是“瓶颈”,系统的算法设计目标是CPU和内存空间的高效使用。由于上述因素的作用,数据库研究者考虑将数据库全部或部分驻留内存以获得高性能数据访问。通过将数据库的“工作版本驻留内存可以极大地提高数据库的性能,如减少了磁盘IO、提高事务的执行速度、减少CPU缓存替换次数、提高系统的吞吐率等

21、。内存数据库自出现以来就得到数据库研究者的广泛关注,现在人们对它的体系结构、数据存储方式、存取方法、查询优化、事务处理、并发控制、数据恢复等技术取得了丰富的成果2。在体系结构方面,为了支持内存数据库的数据恢复,从软硬件出发,开发了多种结构形式,如多处理机结构、专用非易失内存存储活动日志等3;在数据组织方面,提出了基于关系模型的区一段式结构、影子内存等6;在存取方法上,研究多种适合内存数据库的索引及存取策略,如多种形式的Hash,T树索引等7;在事务和查询处理上,主要在事务提交和与之关联日志记录、查询优化,尤其是连接(join)优化,进行了多方面的研究,开发了“提前提交”策略6;在并发控制方面,

22、提出了二层封锁方案、乐观并发控制等方法。由于内存速度较快,锁的粒度较大,这样可以减少死锁检测开销,提高吞吐率,降低系统的响应时间;内存数据库安全性更为脆弱,恢复技术显得尤为重要。这方面的研究集中在检验点操作、日志记录、数据库装入和重装技术6,如Fuzzy检验点策略、BlackWhite策略、Copy on Update策略等;有序装入、带优先级的装入、按存取频率的装入、以及优先级和频率组合等装入策略。现阶段国内外有各种各样内存数据库产品,其中Oracle TimesTen, Altibase, eXtremeDB都是十分优秀的内存数据库产品,但其价格也常常让人望而却步。因此便产生了许多开源产品

23、,而SQLite3便是一个高效的开源内存数据库系统,具备实时能力及便利的C+接口。SQLite3通过位图实现对内存进行分配,最小单位块是分配量子(16字节)。如此大大提高了数据引用的局部性(对象数据尽可能分配在连续的内存区域),最小化修改页的数目和减少了事务提交时间。1.3 研究目的、内容及意义1.3.1研究目的本系统主要是利用ADO.NET实现一个Data Provider for SQLite3,从而向程序员提供一个基于ADO.NET的统一接口。向MS SQL Server用户提供一个基于SQLite3的中间件,实现SQL Server中的数据向SQLite3的转移,并利用SQLite3使

24、原有的系统具有内存数据库快速、高效的特性,从而大幅提高系统的性能。图1 ADO.NET及其数据供应器模型1.3.2研究内容内存数据库相关技术,包括数据结构、索引、事务处理、查询优化、数据库恢复等。研究开源嵌入式数据库的设计思想、相关技术,研究中间件相关技术。1.3.3研究意义将开发的数据库中间件用于SQL Server和SQLite3连通中,让用户可以在使用SQL Server的同时按需求可以方便的使用SQLite3数据库。1.4 本文结构本文首先介绍了内存数据库的相关技术,然后分析了SQLite的体系结构,在此基础上给出了中间件详细设计。最后,在实验平台上对中间件进行模拟实验,测试了中间件的

25、性能并对内存数据库的发展进行了展望。本文后面的章节组织如下:第二章介绍了内存数据库的相关基础知识。第三章分析了SQLite数据库及其体系结构。第四章对内存数据库中间件的设计进行了需求分析。第五章中间件系统概要设计第六七章通过在PC上搭建数据库实验环境,编写测试程序实现对数据库的各种操作,从而测试数据库的性能,并分析实现的技术难度问题。最后总结全文,并提出了不足和未来改进的方向。第二章 内存数据库相关基础2.1内存数据库的特点2.1.1内存数据库数据存储的组织和管理一个MMDB的逻辑整体主要由两个部分构成,即内存版本与外存版本2。主存储器是易失内存,它存放MMDB的“工作版本”。它在逻辑上被划分

26、为若干分区,一个分区用来存放一个关系的数据。每个分区又物理地由若干相互链接的块组成。一块是一个固定长度的连续区域,它是内外存IO的单位,也是内存分配、回收以及对MMDB进行恢复的单位。索引与数据记录分离存放。NVRAM(NO Volatile RAM)兼有内存读写速度快和在后备电池维护的情况下非易失的特点,但价格昂贵,不便插拔,广泛用于嵌入式系统,并可与FlashRAM配合使用,充当FlashRAM写缓冲区。尤其对于实时系统的那些紧急且需要永久保存的数据,当写入FlashRAM会错过它的截止期时,可将它先写入NVRAM,紧急事务的日志也可写在NVRAM中。由于内存是易失的,所以可用少量不易失内

27、存NVRAM作为磁盘高速缓存或临时的固定存储器,存入其中的数据再依其永久性要求移或不移到磁盘上,从而支持实时高性能要求。比如,把对数据库的修改写入到NVRAM里的日志里,可以很好地支持数据库的快速恢复;表明事务间相关性的“全局性锁表”、“事件库”、“触发器库等系统数据结构的永久性可能使之成为系统的潜在瓶颈,将它们放入NVRAM使之成为既是永久的、又可高速存取的数据,则能更好地支持系统的功能与性能要求。NVRAM是主存储器的拓延,目前可用UPS、固态磁盘或磁盘Cache等实现。内存数据与NVRAM数据一起统称为MMDB的“内存版本”。磁盘存储器用来存放未在内存的那一部分数据库数据,同时也用作数据

28、库恢复的备份,我们称之为“外存版本。为便于实现内外存间的数据交换,可将磁盘数据在逻辑上划分为与内存块同样长度的定长块,建立相同类型的索引8。档案式磁带存储器用来存放数据库以前某个完整状态的映象,我们称之为后援数据库。它是脱机的,仅用于MMDB的安全保护和数据的长期档案式保存。2.1.2事务处理当内存数据库用于非实时系统时,除了日志和系统恢复的具体方式跟传统数据库差异比较大以外,事务处理过程与传统数据库的事务处理相似;然而,当内存数据库用于实时系统时,既实时内存数据库中,事务处理由于受到了时间上的限制,传统数据库的事务处理已经不再适用。传统的“ACID”的事务概念及模型对实时事务不适合。实时事务

29、表现出了许多不同的特征,如实时性和相关性。虽然实时事务的正确性与传统事务一样,也包括数据库状态正确性和事务执行正确性两个方面,但其含义与内容有很大的不同。在实时事务中,数据库状态正确性包含内部一致性和时间一致性,事务执行正确性则包含其结果正确性、行为正确性、结构正确性和时间正确性等。事务调度也要采取相关的实时调度算法。2.1.3系统恢复数据库的备份是数据库的副本以及一些控制信息,在出现故障的情况下,可以随时用它进行恢复。数据库备份最小化了数据丢失,能够让您使用恢复过程,从备份副本中重新构造失败的数据库。有多种类型的失败导致需要恢复数据库。其中包括语句失败、用户错误、进程失败、数据库实例失败、媒

30、介失败等。但不是所有类型的失败都需要进行人工交互。但是,在内存数据库系统中,由于所有操作都直接作用于内存中的数据库主拷贝上,数据库极易受到操作系统和应用软件错误造成的破坏,因此MMDB的恢复技术如备份、检验点(Checkpoint)和重启动(restart)等都较常规的磁盘数据库(DRDB)复杂。人们从体系结构、事务提交、日志系统到备份、检验点算法等各个方面进行了大量的研究和探索。日志管理是内存数据库恢复机制中至关重要的一环。由于内存有易失性,日志最好保存于另一稳妥的介质上(如磁盘、非易失内存等),而对日志的IO操作又将在某种程度上影响MMDB的性能,可能成为瓶颈影响系统的事务吞吐量。为此,人

31、们研究了各种各样的解决办法,比如构造非易失内存用于保存部分日志;采用“成组提交”2的技术,使用影子内存技术等来解决日志瓶颈问题。在检验点方面,为了提高系统效率,通常力图使检验点操作和事务处理同时进行。为了提高速度指标和综合性能,MMDB系统往往利用附加的硬件设备如非易失内存、专用的日志处理器、检验点处理器等来支持高效、快速的数据恢复。2.2内存数据库与磁盘数据库的差异MMDB与DRDB之间主要区别在于MMDB的主数据库常驻内存,体系结构设计的优化目标是提高内存和CPU使用效率8。与DRDB相比,MMDB的优点如下:(1)完成同样的功能,所需机器指令大大降低;(2)事务处理无需IO,极大提高了系

32、统性能;(3)不再需要缓冲区管理器,消除了磁盘和内存之间数据拷贝开销;(4)在数据组织与管理中,广泛使用指针,简化了内存管理,降低了空间开销。内存数据库与磁盘数据库的区别如下4:(1)存储介质 内存和磁盘是两种物理结构和电器特性不同的存储介质,存储介质的不同特性是导致MMDB和DRDB之间差别的根本所在,其区别有:(a)内存和磁盘在存取时间上有若干数量级的差别。内存的存取时间是10-8S量级而磁盘是10-3S量级;(b)内存是易失性的,而磁盘是永久性的存储器。即当系统断电时,前者所存信息立即消失,通电也不会恢复;而后者断电时信息不会消失;(c)存储格式不同。内存是字节或字编址的,而磁盘是块存储

33、设备;(d)数据的存储组织方法对性能影响不同。不同的组织方式对磁盘的性能影响远比对内存大,如顺序存取与随机存取的时间对内存没有什么变化,而对磁盘则几乎有数量级的差别;(e)存取方式不同。内存可由处理机直接存取,磁盘则不能;但内存比磁盘更易受来自程序错误的直接破坏。这些差异影响到内存数据库设计的每一方面,进而形成其独有的技术特征。(2) 结构差异内存数据库的工作版本存放在内存中,可以直接的存取数据,因而不需要对缓冲区进行管理,这决定了其体系结构的差异。应用程序访问磁盘数据库时,首先需要将页面信息和表的ID号传递给缓冲区管理器,缓冲区管理器根据这两项内容查找缓冲区,如果查找的内容不在缓冲区内,还需

34、要到磁盘将相应的数据装入内存;而内存数据库可以直接通过内存地址访问数据,不需要了解数据在磁盘上的存放位置,不涉及磁盘的IO操作,这一过程可以大大缩减数据的查询时间。(3)内存数据库与大缓冲区数据库的区别可以通过向DRDB增加缓存来提高数据库的性能,以致把数据库的整个“工作版本常驻内存,但它是针对磁盘结构设计的,不能够充分利用内存数据库优点。DRDB一般采用内存缓冲区管理,先把应用所需数据复制到内存缓冲区,在缓冲区取所需数据,数据存取过程是首先计算出待取记录的磁盘地址,然后调用Buffer管理器检查该记录对应的块是否在Buffer中,若不在缓冲区且缓冲区已满,需采取一定的算法进行数据置换。增大缓

35、冲区可以明显提高磁盘数据库的性能,但MMDB可以直接访问内存,不需数据缓冲区。Tobin JLehman等人对内存数据库系统Starburst进行了专门的性能测试,一个子系统采用内存数据据库管理,另一个采用磁盘数据库管理,并且后者的数据完全存放在内存缓冲区,两者在事务处理期间没有磁盘IO,结果表明,内存数据库比磁盘数据库快23-71倍5,此实验充分说明了MMDB的优越性。(4)算法的设计目标在DRDB中,IO是系统的瓶颈,因而算法的目标是最小化IO次数和最大化磁盘空间利用率;对MMDB,外存IO已经不是系统瓶颈,算法的设计目标是CPU利用率和内存空间的高效使用。(5) 数据组织与存取在数据组织

36、上,由于磁盘的顺序访问比随机访问效率更高,磁盘数据库将经常一块存取的数据存储在相邻的数据块,称为“Record Cluster”,以提高磁盘访问速度。内存的随机访问和顺序访问时间开销相同,提高内存空间利用率是系统追求的一个目标,因而MMDB不需“Record Cluster”技术。在查询处理方面,磁盘数据库优化的目标是降低IO次数,它通常使用B树、B+树或Hash等索引技术,B树索引的空间利用率仅为607。在内存数据库中,IO不再是系统瓶颈,内存空间和CPU的利用率是优化的目标。由于内存通过指针访问,一般MMDB通过指针访问数据,这样具有更多的优越性,这也使得MMDB的查询优化与DRDB不同。

37、(6) 并发控制在DRDB中,数据加锁的开销远小于处理开销,为提高系统的并发度,此类系统大多采用细粒度锁策略,如属性级。这样系统中存在着大量的锁,系统要进行大量的加锁、解锁、死锁检测等,对系统的性能影响很大。内存存取速度比磁盘快得多,事务的执行时间与加锁时间相差不大,使用细粒度锁已无优势,因而,MMDB通常采用大粒度锁,一般为表级。(7) 恢复策略数据库一个基本的要求就是保证数据的一致性和正确性,系统出现故障时的数据恢复是数据库实现的关键。MMDB的数据常驻内存,内存是易失性介质,一旦出现故障,整个数据库全部被破坏。即使使用NV-内存(NonVolatile MainMemory)或者UPS(

38、Universal Power Supply)系统也不是完全可靠的,因而MMDB系统的数据恢复显得更为重要。内存数据库和磁盘数据库在恢复记录、方针、工作量等方面不同,前者的记录是内存数据库,后者是磁盘数据库;前者的方针是部分恢复,后者全部恢复;两者恢复工作量也显然不同。内存数据库相比磁盘数据库性能提升的原因在于5:(1)连接开销内存数据库作为实时数据库的底层实现更多的是与专有的实时应用绑定为一个进程,应用在这个进程空间内调用数据库操作。磁盘数据库与应用分属于不同的进程,虽有利于进程的保护,但增加了连接的开销。(2)寻址开销磁盘数据库的数据访问通过块号和块内偏移来定位,数据所在的数据块需要通过I

39、O系统调入缓冲再进行访问,内存数据库中的数据通过内存地址可以直接访问。(3)缓冲管理磁盘数据库中数据真正处理的操作在缓冲区进行,数据库负责将缓冲区改动的数据再写入磁盘,缓冲区的大小有限制,数据库对缓冲区内的老数据要进行置换,内存数据库不需要这种额外管理。2.3内存数据库的关键技术MMDB除了具有一般数据库的特征外,又具有自己的特殊性质,其关键技术的实现具有特殊性。MMDB关键技术有:数据结构、MMDB索引技术、查询处理与优化、事务管理、并发控制、数据恢复。MMDB不同于DRDB,DRDB技术在内存数据库中不再适用,要对这些关键技术进行新的研究。2.4 本章小结本章主要讲了涉及数据库的相关基础知

40、识,包括内存数据库的特点、内存数据库与磁盘数据库的差异以及内存数据库的关键技术。第三章 开源数据库SQLite分析随着开放源代码软件的使用越来越广泛,像Linux操作系统一样,开放源代码数据库的出现也有其必然性。在当Oracle、IBM、Microsoft、Sybase等几大数据库厂商在数据库领域处于垄断地位的时候,出现了以MySQL、PostgreSQL为代表的开放源代码的数据库系统,推动了开源软件事业的发展。SQLite是DRichard Hipp用C语言编写的开源嵌入式数据库引擎。它是完全独立的,不具有外部依赖性。它是作为PHP V43中的一个选项引入的,构建在PHP V5中。SQLit

41、e支持多数SQL92标准,可以在所有主要的操作系统上运行,并且支持大多数计算机语言。SQLite还非常健壮。其创建者保守地估计SQLite可以处理每天负担多达100,00次点击率的Web站点,并且SQLite有时候可以处理lO倍于上述数字的负载。SQLite是一款轻型的数据库,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持WindowsLinuxUnix等等主流的操作系统,同时能够跟很多程序语言相结合,比如Tcl、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源

42、世界著名的数据库管理系统来讲,它的处理速度比他们都快。SQLite于2005年获得了丌源大奖,而且最新的PHP5也内嵌了SQLite。相比另一款著名的嵌入式数据库Berkely DB。SQLite是关系型数据库,支持大部分SQL语句,这是它比BDB优秀的地方。3.1 SQLite的特点SQLite对SQL92标准的支持包括索引、限制、触发和查看。SQLite不支持外键限制,但支持原子的、一致的、独立和持久(ACID)的事务(后面会提供有关ACID的更多信息)。这意味着事务是原子的,因为它们要么完全执行,要么根本不执行。事务也是一致的,因为在不一致的状态中,该数据库从未被保留。事务还是独立的,所

43、以,如果在同一时间在同一数据库上有两个执行操作的事务,那么这两个事务是互不干扰的。而且事务是持久性的,所以,该数据库能够在崩溃和断电时幸免于难,不会丢失数据或损坏。SQLite通过数据库级上的独占性和共享锁定来实现独立事务处理。这意味着当多个进程和线程可以在同一时问从同一数据库读取数据,但只有一个可以写入数据。在某个进程或线程向数据库执行写入操作之前,必须获得独占锁定。在发出独占锁定后,其他的读或写操作将不会再发生。SQLite的特点:(1)ACID事务(2)零配置一无需安装和管理配置(3)储存在单一磁盘文件中的一个完整的数据库(4)数据库文件可以在不同字节顺序的机器间自由的共享(5)支持数据

44、库大小至2TB(6)足够小,大致3万行C代码,250K(7)比一些流行的数据库在大部分普通数据库操作要快(8)简单,轻松的API(9)包含TCL绑定,同时通过Wrapper支持其他语言的绑定(10)良好注释的源代码,并且有着90以上的测试覆盖率(11)独立:没有额外依赖(12)Source完全的Open,你可以用于任何用途,包括出售它(13)支持多种开发语言,C,PHP,Perl,Java,ASRNET,Python3.2 SQLite的不足(1)没有专有的安全措施,数据库是一个文件。(2)没有内嵌的压缩、解压机制,数据库文件看上去太大。(3)不支持客户服务器结构。(4)数据库文件存放在磁盘上

45、,实时性比较低。(5)未对磁盘数据文件进行加密。3.3 SQLite的体系结构SQLite是采用组件化的方式进行设计的,各部分功能高度模块化,主要模块如图2。图2 SQLite结构SQLite的内部结构由四部分组成:SQL编译器(SQLCompiler)、内核(Core)、后端(Backend)以及附件(Accessories),对数据库进行的各种操作都是按照此顺序,逐一执行的。SQL编译器的前两层是标记处理器(Tokenizer)和分析器(Parser),可以产生高效的代码。后端是基于Knuth优化的B树,通过页面缓冲和操作系统获得对数据的高速存储。再往下是页面高速缓存,它作用在OS的抽象层

46、之上,这样的体系结构使数据库的可移植性变为可能。内核的重点是虚拟机(Virtual Machine),完成数据存储的全部操作,是用户和存储间交换信息的中间单元。附件主要进行代码的测试,在主要代码文件中有许多assert()语句。os_test.c向后的接口程序用来模拟断电,来验证页面调度程序中的系统性事故恢复机制。因此,所有SQL语句都被编译成易读的、可以在虚拟机中执行的程序集,并通过后端完成SQL的查询要求。该体系结构的核心是虚拟数据库引擎(VDBE)。VDBE完成与数据操作相关的全部任务,并且是客户和存储之间信息交换的中间单元。从各个角度分析,它都是SQLite的核心。当SQL语句被分析后,VDBE便开始工作

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

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号