一种访问数据库的方法及装置制造方法及图纸

技术编号:2881839 阅读:153 留言:0更新日期:2012-04-11 18:40
本发明专利技术提出一种访问数据库的方法和装置,装置包括应用系统和数据库管理系统DBMS及位于两者间的中间件,所述应用系统采用数据服务的方式访问所述中间件,由所述中间件进行数据服务的转换工作,并且实际完成数据库的访问,将获得的数据进行整理,形成通用形式的结果返回给应用系统,所述方法给出了所述中间件的工作过程,使用本发明专利技术在需要进行DBMS的移植时只需修改中间件部分,大大减小移植后的测试范围,从而降低移植费用,加快移植速度。(*该技术在2020年保护过期,可自由使用*)

【技术实现步骤摘要】

本专利技术涉及软件系统实现中的一种通用的访问数据库的方法,具体地说,是一种应用软件系统需要使用数据库时不依赖于特定数据库管理系统DBMS的方法。在大型应用软件系统中一般需要使用数据库来存放或操作数据,各种数据库系统提供不同的访问方式和其他特性(比如数据库的容量估计、在线备份)。在现有技术中,访问数据库的方法是直接采用各种与DBMS相关的API接口,或使用一些通用的数据库接口。当改变DBMS系统时,这两种情况都需要对应用软件系统进行修改。使用API接口的缺点一是在改变DBMS时,移植代价较高,二是数据库相关操作分别有不同的人员开发,所有开发人员必须完全了解数据库处理的各个实现细节,包括表结构,表与表之间的关系等,导致产品质量不易控制,这样容易重复劳动,且成本较高;使用通用数据库接口虽可使移植代价稍有降低,其他方面并无改善,且严重影响数据库的使用效率。本专利技术的目的是提供一种在不同DBMS系统问移植时费用较低且软件系统整体开发成本较低的数据库访问方法及其装置。为实现上述目的,本专利技术首先提出的一种访问数据库的装置,其核心是在现有技术中的应用系统和DBMS之间增加一个中间件进行隔离,应用系统采用数据服务的方式访问所述中间件,由所述中间件进行数据服务的转换工作,并且实际完成数据库的访问,将获得的数据进行整理,形成通用形式的结果返回给应用系统。本专利技术提出的一种数据库访问方法,包括以下步骤1)判断应用系统所要求的数据访问是否为事务性操作,如果是,进入步骤2)如果不是,则直接进入步骤3);2)应用系统向中间件发出开始一个事务命令,中间件向应用系统返回一个事务标识;3)应用系统向中间件发出一个服务请求;4)中间件对服务请求进行翻译,并对数据库管理系统DBMS进行操作,获得结果;5)如果结果只有一条记录,中间件将结果组织成标准形式返回给应用系统,进入步骤8);6)结果有多条记录,中间件将结果写入结果缓冲区,并将缓冲区标识返回给应用系统,由应用系统进行相应操作;7)应用系统向中间件发出释放结果缓冲区的命令;8)如果不是事务型操作则成功完成;9)事务型操作,如果服务请求失败,应用系统向中间件取消整个事务,退出处理过程;10)如果继续服务请求,则重复步骤3,直至完成整个事务;11)所有服务都成功完成,应用系统向中间件确认整个事务完成。如上所述的一种数据库访问方法,其特征在于,所述步骤6)中由应用系统进行相应操作包括1)用系统向中间件发出取结果命令;2)中间件向应用系统返回一条结果记录;3)重复步骤2),直至取完数据或应用系统停止取数据。下面结合附图和实施例进一步详细说明本专利技术。附图说明图1是本专利技术所述方法的流程2是本专利技术所述装置的结构示意图为了更好地理解本专利技术,有必要先解释一下相关概念,服务的概念被理解为应用系统希望对数据库进行某种操作,以获得预想结果的一个表述,用一个三元组来表示{名称;输入;输出}。应用系统向中间件发出服务请求,中间件满足应用系统对数据库的访问要求。其中,名称决定中间件进行什么样的服务操作。输入表示输入到中间件的参数,其数量、类型和格式取决于服务名称。输出表示应用系统从中间件获得的输出数据,其数量、类型和格式取决于服务名称。服务与具体的数据库结构及操作方法无关,只表示应用系统希望存储、获取或删除什么信息。具体的数据库操作由中间件处理。服务模型只与应用系统对数据存储和获取的具体要求有关。以下是一个例子应用系统需要将采集到的数据写入数据库,数据有两个{A,B},同时要记录采集到数据的时间。在需要时按时间取出相应的数据。为了实现上述功能,需要两个服务。一个服务是写入数据,其名称为Write,输入参数为A,B,time,没有输出,其表达形式为{Write;A,B,time;}另一个服务是读取数据,其名称为Read,输入参数为time,输出A,B,其表达形式为{Read;time;A,B}。这两个服务都没有指明如何具体地操作数据库,其执行过程由中间件完成,在开发过程中,只需在数据库中建立一张表存储这些数据,然后将完成上述两个服务所对应的操作数据库的方法,添加到中间件中去。应用系统仅对中间件提出上述服务要求,就可以得到希望的结果,且不必知晓其具体的存储方式和操作过程。在数据库的实际应用中,还有关于事务操作的概念,它是指一个事务过程中对数据库中的数据进行多次修改的一系列操作必须全部按次序完成,如果有一个操作失败则属于本事务过程全部操作无效,对原有数据没有影响。因此在使用本方法访问数据库时需要提供事务控制的能力,可以使多个服务构成一个事务,便于实现一些应用。在没有显式的指明事务时,中间件应该将每个单独的服务理解为一个事务的操作。数据库操作的返回信息一般分为两种,一种形式为一个或多个数据,构成一条记录,另一种是返回一组记录。在返回一个记录时,中间件将其按标准格式排列好直接返回给应用。在返回多条记录时,中间件将所有数据记录在结果缓冲区中,并给应用一个缓冲区标识,应用通过该标识逐条获取数据。按照本专利技术所述的方法,当应用系统需要在数据库中存储某些信息或从数据库中获得某些信息时,就按图1显示的具体的实现流程所描述的方法向中间件装置申请服务,完成需要的操作。应用向中间件发出开始一个事务命令(当多个服务构成一个事务时),中间件向应用返回一个事务标识(当多个服务构成一个事务时),应用向中间件发出一个服务请求,中间件对服务请求进行翻译,并对DBMS进行操作,所获结果只有一条记录时,则中间件将结果组织成标准形式返回给应用,当结果有多条记录时,中间件将结果写入结果缓冲区,并将缓冲区标识返回给应用系统;如果存在继续服务请求,则有应用系统继续向中间件发出服务请求,直至没有继续服务请求,则应用系统向中间件取消整个事务,退出处理过程(当多个服务构成一个事务时)。例如当结果有多条记录时,应用系统需要在数据库中获得某些信息,是这样工作的应用系统向中间件发出取结果命令,中间件向应用返回一条结果记录,直至取完数据或应用停止取数据,应用系统向中间件发出释放缓冲区的命令,不断重复,直至完成整个事务,所有服务都成功完成,应用向中间件确认整个事务完成。本专利技术中,应用系统使用服务的界面形式包括但不限于通用或专用的API形式的接口,经二次封装的类形式的接口。本专利技术适用于现有的所有操作系统和DBMS系统,只是在各种不同操作系统下和DBMS系统下中间件的实现方式略有不同而已。现以适用环境为SUNSolarise*7操作系统和Oracle**8.0 DBMS的中间件为例,说明图2给出的本专利技术结构原理。本专利技术装置是隔离在应用系统和数据库之间的中间件系统,中间件系统向应用系统提供数据服务,以便代替应用系统直接访问数据库的传统做法。这样在需要改变DBMS系统时不用对应用系统进行修改,增强系统的可移植性。如图2所示,所述中间件位于应用模块和数据库之间,应用模块使用API形式的接口和中间件模块通讯,中间件的构成模块分为服务模块、调度模块、处理模块、结果记录查询模块和超时检测模块五个模块。分成五个模块的原因是为了实现并发操作、提高系统的运行效率和稳定性。实际上将这些模块的所有功能完全组合在一起也是可以的。所述服务模块用于接收各种命令,并将其分发给调度模块和查询模块。所述调本文档来自技高网...

【技术保护点】
一种访问数据库的装置,包括应用系统和数据库管理系统DBMS,其特征在于,还包括一个位于应用系统和数据库管理系统DBMS之间的中间件,所述应用系统采用数据服务的方式访问所述中间件,由所述中间件进行数据服务的转换工作,并且实际完成数据库的访问,将获得的数据进行整理,形成通用形式的结果返回给应用系统。

【技术特征摘要】

【专利技术属性】
技术研发人员:董嘉张琪
申请(专利权)人:深圳市中兴通讯股份有限公司
类型:发明
国别省市:94[中国|深圳]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1