(10)申请公布号 CN 102521254 A
(43)申请公布日 2012.06.27C N  102521254 A
*CN102521254A*
(21)申请号 201110365442.2
(22)申请日 2011.11.17
G06F 17/30(2006.01)
(71)申请人广东电网公司电力科学研究院
地址510080 广东省广州市越秀区东风东路
水均岗8号粤电大厦
(72)发明人周伊琳  陈炯聪  黄缙华  孙建伟
胡亚平  陈扬
(74)专利代理机构广州知友专利商标代理有限
公司 44104
代理人
周克佑
(54)发明名称
异构数据库的统一访问方法
(57)摘要
本发明公开了一种异构数据库的统一访问方
法,包括步骤:前台客户端接收用户输入的SQL 语
句,并将SQL 语句请求发往后台数据库请求处理
程序;后台数据库请求处理程序根据SQL 标准语
法分析SQL 语句是否合法;对请求SQL 进行初步
语法分析,分解出要操作的虚表表名,然后根据虚
表表名判断当前的请求是发向哪类异构数据库服
务器的;根据步骤三判断得到的结果选择对应异
构数据库服务器的SQL 分析处理器来处理SQL 语
句中的实际读写请求;将步骤四执行后的结果返
回给前台客户端。该方法能够实现通过统一的访
问接口访问各种异构数据库,从而降低数据库应
用开发过程中的难度、缩短开发的时间周期,进一
步降低应用系统后期的维护成本。
(51)Int.Cl.
权利要求书3页  说明书10页  附图2页
(19)中华人民共和国国家知识产权局(12)发明专利申请
权利要求书 3 页  说明书 10 页  附图 2 页
1.一种异构数据库的统一访问方法,其特征在于包括如下方法:
步骤一:前台客户端接收用户输入的SQL语句,并将SQL语句请求发往后台数据库请求处理程序;
步骤二:后台数据库请求处理程序根据SQL标准语法分析SQL语句是否合法;如果SQL 语句不合法,构造错误回应包给客户端,然后直接退出本流程;否则,进入下一步;
步骤三:对请求SQL进行初步语法分析,分解出要操作的虚表表名,然后根据虚表表名判断当前的请求是发向哪类异构数据库服务器的,所述异构数据库服务器的类型包括:传统关系数据库管理系统、实时/历史数据库系统、对象数据库管理系统;其中,实时/历史数据库系统包括两张虚表:实时数据库表和历史数据库表;对象数据库管理系统包括三张虚表:模型数据表、类数据表和实例数据表;如果当前SQL语句中的表名称是实时数据库表或历史数据库表,则是发往实时/历史数据库服务器的请求;如果当前SQL语句中的表名称是模型数据表、类数据表或实例数据表,则是发往对象数据库服务器的请求;否则默认是发往传统关系数据库服务器的请求;
步骤四:根据步骤三判断得到的结果选择对应异构数据库服务器的SQL分析处理器来处理SQL语句中的
实际读写请求,如果是发往传统关系数据库服务器的请求则选择传统关系数据库管理系统SQL分析处理器;发往实时/历史数据库服务器的请求则选择实时/历史数据库系统SQL分析处理器;发往对象数据库服务器的请求则选择对象数据库管理系统SQL分析处理器;各个分析处理器的处理过程如下:
(1)、所述的传统关系数据库管理系统SQL分析处理器处理针对传统关系数据管理系统的读写请求,处理的过程如下:
a1)、如果对应的传统关系数据库管理系统的原始API支持标准的SQL语法语句,那么不需要进行转换处理,直接将这个原始请求传给传统关系数据库管理系统的原始API调用执行;
b1)、如果对应的传统关系数据库管理系统的原始API不支持标准的SQL语法语句,则进行语法转换,将请求中的标准SQL语句通过对应的传统关系数据库管理系统的语法转换器进行转换,并将转换后的SQL语句传递给对应的传统关系数据库管理系统的相应原始API进行调用;
(2)、所述的实时/历史数据库系统SQL分析处理器处理针对实时/历史数据库系统的读写请求,处理的过程如下:
a2)、使用语法分析器第一步分析确定输入的SQL语法是否符合实时/历史数据库系统支持的语法,同时分析SQL语句操作类型,要操作的虚表的表名,要操作虚拟字段,和要操作的约束条件限制;
b2)、如果当前请求的SQL语句操作类型是对实时/历史数据库系统的虚表的查询、更新或插入以外的请求动作,则返回失败;否则进入c2;
c2)、根据a2分析出的结果,调用实时/历史数据库系统的相应API执行相应请求;
(3)、所述的对象数据库管理系统SQL分析处理器处理针对对象数据库管理系统的读写请求,处理的过程如下:
a3)、使用语法分析器第一步分析确定输入的SQL语法是否符合对象数据库管理系统支持的语法,同时分析出SQL语句操作类型,要操作的虚表表名,要操作虚拟字段,和要操
作的约束条件限制;
b3)、如果当前请求的SQL语句操作类型是对对象数据库系统的虚表的查询、更新或插入以外的请求动作,则返回失败,因为对象数据库系统中的虚表是固定的,不允许创建表、修改表和删除表等操作;否则进入c3;
c3)、根据a3)分析出的结果,调用对象数据库系统的相应API执行相应请求;
步骤五:将步骤四执行后的结果返回给前台客户端。
2.根据权利要求1所述的异构数据库的统一访问方法,其特征在于:所述支持标准的SQL语法语句的传统关系数据库管理系统包括Oracle、DB2、Sybase和SQL Server。
3.根据权利要求1所述的异构数据库的统一访问方法,其特征在于:所述步骤c2)的具体过程是:根据步骤a2)分析出的SQL语句操作类型以及要操作的虚表表名,判断执行以下不同的步骤:
如果是INSERT语句并且虚拟表的表名是实时数据库表,则调用实时/历史数据库系统的实时数据插入API来执行该请求;
如果是INSERT语句并且虚拟表的表名是历史数据库表,则调用实时/历史数据库系统的历史数据插入API来执行该请求;
如果是SELECT语句并且虚拟表的表名是实时数据库表,则调用实时/历史数据库系统的实时数据查询API来执行最终的请求;
如果是SELECT语句并且虚拟表的表名是历史数据库表,则调用实时/历史数据库系统的历史数据查询API来执行最终的请求;
如果是Update语句并且虚拟表的表名是实时数据库表,则调用实时/历史数据库系统的实时数据更新API来执行最终的请求;
如果是Update语句并且虚拟表的表名是历史数据库表,则调用实时/历史数据库系统的历史数据修改API来执行最终的请求;
如果是Delete语句并且虚拟表的表名是实时数据库表,则该请求属于非法的一种,实时数据是不允许被删除的;
如果是Delete语句并且虚拟表的表名是历史数据库表,则调用实时/历史数据库系统的历史数据删除API来执行最终的请求。
4.根据权利要求1所述的异构数据库的统一访问方法,其特征在于:所述实时/历史数据库系统包括两张虚表:实时数据库表和历史数据库表,其中,所述实时数据库表中存储实时/历史数据库系统的标签编号、数据的时间标签、实时数值和数值状态;历史数据表中存储实时/历史数据库系统的标签编号、数据的开始时间标签、数据的结束时间标签、历史数值和数值状态。
5.根据权利要求1所述的异构数据库的统一访问方法,其特征在于:所述步骤c3)的具体过程是:根据步骤a3)分析出的SQL语句操作类型,要操作的虚表表名,根据判断执行以下不同的步骤:
如果是SELECT语句并且表名是模型数据表,则调用对象数据库系统的模型数据查询API来执行最终的请求;
如果是INSERT语句并且表名是模型数据表,则调用对象数据库系统的模型数据插入API来执行最终的请求;
如果是UPDATE语句并且表名是模型数据表,则调用对象数据库系统的模型数据更新API来执行最终的请求;
如果是Delete语句并且表名是模型数据表,则调用对象数据库系统的模型数据删除API来执行最终的请求;
如果是SELECT语句并且表名是类数据表,则调用对象数据库系统的类数据查询API来执行最终的请求;db2数据库sql语句
如果是INSERT语句并且表名是类数据表,则调用对象数据库系统的类数据插入API来执行最终的请求;
如果是UPDATE语句并且表名是类数据表,则调用对象数据库系统的类数据更新API来执行最终的请求;
如果是Delete语句并且表名是类数据表,则调用对象数据库系统的类数据删除API来执行最终的请求;
如果是SELECT语句并且表名是实例数据表,则调用对象数据库系统的实例数据查询API来执行最终的请求;
如果是INSERT语句并且表名是实例数据表,则调用对象数据库系统的实例数据插入API来执行最终的请求;
如果是UPDATE语句并且表名是实例数据表,则调用对象数据库系统的实例数据更新API来执行最终的请求;
如果是Delete语句并且表名是实例数据表,则调用对象数据库系统的实例数据删除API来执行最终的请求。
6.根据权利要求1所述的异构数据库的统一访问方法,其特征在于:所述对象数据库管理系统包括三张虚表:模型数据表、类数据表和实例数据表,其中,模型数据表中存储对象数据库管理系统中的模型名称、模型类型、创建时间、修改时间、模型描述和子类列表;类数据表中存储对象数据库管理系统中的类名称、类所属的包、创建时间、修改时间、类描述和实例列表;实例数据表中存储对象数据库管理系统中的实例名称、所属的类、创建时间、修改时间、实例描述和属性列表。
1/10页
异构数据库的统一访问方法 技术领域
[0001] 本发明涉及一种数据库访问方法,具体来说涉及一种异构数据库的统一访问方法。
背景技术
[0002] 随着计算机和软件技术的不断发展,软件领域的分工也越发精细,具体体现在:不同的行业、不同的项目甚至同一个项目的不同阶段的侧重点完全可能不一样,所采取的技术工具、数据模型和数据库管理系统都可能完全不尽相同。
[0003] 在数据库管理系统的领域内,目前就存在着:传统的关系型数据库管理系(例如:甲骨文公司的Oracle 、IBM 公司的DB2、Sun 公司Sybase 以及微软公司的SQLServer 等)、实时/历史数据库系统、对象数据库管理系统。通常,传统的关系数据库管理系统都是以SQL 标准对外提供访存接口,Insert/Select/Update 和Delete 等标准的SQL 语句;而实时/历史数据库系统和对象数据库系统一般都是以和各种语言绑定的API 调用来提供访存接口。因此对于数据库应用开发人员来说,开发一个应用往往需要熟悉和了解各类数据库关系系统的特性和API(应用编程接口)。
[0004] 因此,目前在大型项目中,由于引入了特性各异的数据库管理系统,给软件开发人员带来了极大的开发难度和后期维护难度。一方面数据管理的精细化是必然的趋势,需要引入不同的针对性很强的数据库管理软件;另外一方面,目前没有一种行之有效的方法和统一和简化异构数据库的统一访问技术。现在,数据库管理技术领域一般将数据分为如下三种类型:
[0005] a 、管理型关系数据;b 、生产型时序数据;c 、应用型模型数据。因此如何将各种数据抽象统
一、归纳整理出一种标准的访问手段变得尤为迫切。
发明内容
[0006] 本发明的目的在于提供一种异构数据库的统一访问方法,该方法能够实现通 过统一的访问接口访问各种异构数据库,从而降低数据库应用开发过程中的难度、缩短开发的时间周期,进一步降低应用系统后期的维护成本。
[0007] 本发明的目的可通过以下的技术措施来实现:
[0008] 一种异构数据库的统一访问方法,包括如下方法:
[0009] 步骤一:前台客户端接收用户输入的SQL 语句,并将SQL 语句请求发往后台数据库请求处理程序;
[0010] 步骤二:后台数据库请求处理程序根据SQL 标准语法分析SQL 语句是否合法;如果SQL 语句不合法,构造错误回应包给客户端,然后直接退出本流程;否则,进入下一步;
[0011] 步骤三:对请求SQL 进行初步语法分析,分解出要操作的虚表表名,然后根据虚表表名判断当前的请求是发向哪类异构数据库服务器的,所述异构数据库服务器的类型包括:传统关系数据库管理系统、实时/历史数据库系统、对象数据库管理系统;其中,实时/说  明  书CN 102521254 A

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。