基于内存数据库FASTDB的NET数据提供程序.doc_第1页
基于内存数据库FASTDB的NET数据提供程序.doc_第2页
基于内存数据库FASTDB的NET数据提供程序.doc_第3页
基于内存数据库FASTDB的NET数据提供程序.doc_第4页
基于内存数据库FASTDB的NET数据提供程序.doc_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

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

文档简介

基于内存数据库FastDB的MSSQL中间件设计与实现杜思良,陈克,魏鹏,孟宁(中国科学技术大学软件学院,江苏省苏州市,215123)摘要:本文阐述一个基于高速内存数据库FastDB的.NET数据提供程序的实现,及其带来的性能提升。 本系统主要是利用ADO.NET实现一个Date Provider for FastDB,从而向程序员提供一个基于ADO.NET的统一接口,使程序员可以方便快速的使用高速内存数据库FastDB。该数据提供程序可以进行对FastDB数据库进行查询、添加、删除、更新操作,主要适用于进行查询这类的读操作。在数据量比较大时,使用FastDB可以使性能得到明显提升。The design and implementation of a middleware based on Main Memory Database FastDB for MSSQLDu Si-liang, Chen Ke, Wei Peng, adviser: Meng Ning(University of Science and Technology of China, Software School, Suzhou, 215123, China)Abstract: This paper describes an implementation of a .NET Data Provider for FastDB, a high-speed memory database. The improvement of performance is also depicted. The system is to use ADO.NET to implement a Date Provider for FastDB, and thus to provide programmers an uniform interface based on ADO.NET, so they can easily and quickly using the high-speed memory database FastDB. The data provider can execute the common instructions: select, insert, delete, and update, on FastDB. It is mainly applied to read operation such select. When the database is large enough, the use of FastDB performance can be significantly improved. 一 引言 目前,国内外存在大量基于磁盘数据库的信息管理系统,例如学校的选课系统、考试成绩查询系统等。这些系统大都使用传统的磁盘数据库管理系统对数据进行管理,如SQL Server,Oracle等。这些数据库管理系统都比较成熟稳定,安全性好。由于其它们均基于磁盘,虽然有一定容量的内存作为缓存,在一定程度上减少了磁盘读写操作,但当数据量稍大,缓存就需要与磁盘进行大量的数据交换,导致执行效率较低下,特别是在网络环境下,当并发访问人数激增时,系统响应时间更是常让用户无法忍受。 众所周知,计算机对内存的读写时间,远远小于对磁盘的读写时间。内存数据库系统,其基本原理,便是将数据保存在内存中,在内存中对数据进行各种操作和管理。因此,使用内存数据库进行查询等常用操作,将使系统性能得到明显提升。目前,内存数据库已成为电信、金融等实时性要求高、访问量大的领域的重要解决方案。现阶段国内外有各种各样内存数据库产品,其中Oracle TimesTen, Altibase, eXtremeDB都是十分优秀的内存数据库产品,但其高昂的价格也往往让人对其敬而远之。于是便产生了许多开源产品,如BerkeleyDB, SQLite 等,而FastDB便是一个高效的开源内存数据库系统,它使用C+开发,具备实时能力及便利的C+接口。FastDB通过位图实现对内存进行分配,最小单位块是分配量子(16字节)。如此大大提高了数据引用的局部性(对象数据尽可能分配在连续的内存区域),最小化修改页的数目和减少了事务提交时间。1 Konstantin Knizhnik. FastDB documentation M/OL. http:/www.garret.ru/fastdb/FastDB.htm本系统主要是利用ADO.NET实现一个Date Provider for FastDB,从而向程序员提供一个基于ADO.NET的统一接口,方便的对FastDB进行访问。二 ADO.NET介绍ADO.NET 是一组向 .NET 程序员公开数据访问服务的类。ADO.NET 为创建分布式数据共享应用程序提供了一组丰富的组件。它提供了对关系数据、XML 和应用程序数据的访问。.NET Framework 数据提供程序用于连接到数据库、执行命令和检索结果。 ADO.NET提供统一接口的API对数据库操作,而不同的数据库只需要提供相应的数据提供器即可。图1 ADO.NET及其数据供应器模型2 Visual Studio .NET支持中心M/OL. /ph/1117/en-usADO.NET用于访问和操作数据库的两个主要组件是.NET Framework 数据提供程序(Data Provider)和DataSet。.NET Framework数据提供程序用于连接到数据库、执行命令和检索结果。这些结果可直接处理,也可放置在DataSet中以便进一步处理。3 Visual Studio .NET支持中心M/OL. /zh-cn/library/a6cd7c08(v=vs.80).aspx .NET Framework中包含四个.NET Framework数据提供程序:* SQL Server .NET Framework数据提供程序* OLE DB .NET Framework数据提供程序* ODBC .NET Framework数据提供程序* Oracle .NET Framework数据提供程序.NET Framework数据提供程序的核心对象* Connection 建立与特定数据源的连接* Command 对数据源执行命令* DataReader 从数据源中读取只进且只读的数据流* DataAdapter 用数据源填充DataSet并解析更新DataSet是专门为独立于任何数据源的数据访问而设计的。DataSet中包含一个或多个DataTable对象的集合,这些对象由数据行和数据列以及对象中数据相关的主键、外键、约束和关系信息组成。也就是说,DataSet表示包括相关表、行、列、约束和表间关系在内的整个数据集。四 FastDB简介FastDB是一个具有实时性和方便的C+接口的高效内存数据库系统。它不支持客户端-服务器架构,所有使用FastDB数据库的应用程序必须在相同的主机上运行。FastDB对主要进行读操作的应用程序进行了优化,消除了数据传输开销,并且提供高效的锁,因此可以提供高速的查询服务。数据库文件被映射到使用FastDB的应用程序的虚拟内存空间中,这使得查询可以在应用程序的上下文中直接进行,而无需进行上下文切换和数据传输。数据库的同步使用原子指令实现,使得查询操作几乎没有任何这方面的开销。FastDB假设整个数据库都运行在RAM中,并在此基础上优化了查询算法和结构。这个假设也使得FastDB无需在数据库文件和缓冲区之间交换数据,消除了缓冲管理的开销,这也是FastDB比传统数据库更快的原因。当数据库文件大于内存容量时,FastDB也可以工作,此时系统交换机制将工作。FastDB支持事务、在线备份和系统崩溃后的自动回复。FastDB是一个面向应用程序的数据库,数据库中的表使用应用程序中类的相关信息构造。 FastDB更适合面向对象编程,它查询的结果是一个类的对象的集合,而不是关系表。FastDB支持一个类SQL的语言进行查询操作。1五 系统结构及实现5.1 系统总体结构整个系统在应用时的分层模型如图2。Application指用于应用程序,ADO.NET是.NET平台向程序员提供的统一的编程接口和平台,再往下一层的.NET Data Provider for FastDB就是本项目实现的核心部分,他调用下层的FastDB数据库接口,作为ADO.NET平台中的一部分,向程序员提供针对FastDB数据库的操作。本系统中包含一个Data Translator部件,用于将SQL Server中的数据转存到FastDB中,这就使得系统的移植更加方便。图2 系统应用分层模型5.2 .Net Data Provider for FastDB .Net Data Provider for FastDB逻辑上与.Net Data Provider for SQL Server,.OLE DB Provider等在同一层次。微软建议将其他类型的数据库提供程序都作为.OLE DB Provider,本系统为简化系统复杂度,减少层次以优化性能,未采用实现.OLE DB Provider的方法,而是直接提供一个面向FastDB的数据提供程序。此数据提供程序使用C#语言编写,调用了FastDB提供的fastdb.dll动态连接库,实现了所有核心类,并实现了部分扩展类。核心类包括:FdbConnection、FdbCommand、FdbDataReader,扩展类部分包括:FdbCommandBuilder、FdbParameter、FdbParameterCollection和FdbTransaction中的部分接口。数据提供程序最终以FdbDataProvider.dll动态连接库的形式供程序员引用,其命名空间为FdbDataProvider。使用本数据提供程序,程序员可以通过统一的接口,像对SQL Server数据库一样,通过sql语句对FastDB数据库进行基本的查询、修改、插入、删除操作。语句中可以直接设置条件,也可以使用参数方式传递参数。具体操作请查阅微软ADO.NET相关帮助信息。5.3. Data Translator Data Translator数据转换程序提供数据转换功能,使原来存放在SQL Server数据库中的数据批量转存到FastDB数据库中的相同表中,以方便系统的移植。Data Translator的工作原理是:1) 首先利用Net Data Provider for SQL Server,将SQL Server数据库中的数据提取出来,并转存为XML格式。2) 将生成的XML文件进行格式转换为FastDB数据库可以识别的XML文件。3) 把转换好的XML文件导入FastDB数据库。经过上述三步,数据转换程序就完成了数据的转移。目前本系统中的数据转换器只能提供单个表中数据的批量转换。要将整个数据库进行移植,需要手工将每个表依次进行转换。六 性能测试与结论本系统使用一个简易的ASP.NET网站进行了基本测试工作,在ADO.NET平台上,利用.Net Data Provider for FastDB和.Net Data Provider for SQL Server,分别对FastDB和SQL Server数据库进行了对比测试。测试中使用的数据库表格式为:persons(name int, salary int, address string)6.1 查询测试 进行查询操作的测试是,FastDB数据库和SQL Server数据库中分别存放好200000条数据。从200000条数据中查询1000条数据的时间对比:SQL Server(秒)FastDB(秒)11.8175.2608.4200.4496.6300.2185.2800.1613.8040.1143.5050.1502.6490.892.3840.1011.9930.981.6610.83表1 插入查询结果经测试发现,当数据库中数据量足够大时,FastDB的性能提升更加明显。测试结果显示,对于查询操作,FastDB数据库的性能比SQL Server高1到2个数量级。6.2 插入测试 分别插入200000条记录时,FastDB和SQL Server用时分别为:SQL Server(秒)FastDB(秒)53.34333.508表2 插入200000条数据结果当插入数据量较少时,FastDB的性能并不比SQL Server高。主要是因为SQL Server

温馨提示

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

评论

0/150

提交评论