基于统一接口的内存数据库分布式访问方法及系统的制作方法

文档序号:6587757阅读:296来源:国知局
专利名称:基于统一接口的内存数据库分布式访问方法及系统的制作方法
技术领域
本发明涉及电力自动化控制技术领域,尤其是基于统一接口的内存数据库分布式 访问方法及系统。
背景技术
传统的内存数据库系统仅提供本地访问接口,已渐渐不适应现代电力自动化系统 分布式部署的现实需求,能够支持内存数据库远程访问的接口体系成为了电力自动化系统 开发中的重要内容。现有技术中,已有一些公司开发了自己的内存数据库远程访问接口,却存在以下 不足远程访问和本地访问内存数据库通过不同的接口来实现,不具有统一性;没有解决 异构机之间的内存数据库数据交换问题;使用复杂,需要开发人员深入了解通信协议;不 支持主备冗余机制。

发明内容
本发明的目的是提供一种基于统一接口的内存数据库分布式访问方法,使用统一 接口提供本地和远程访问功能,并进行透明数据交换,以解决异构机之间内存数据库的数 据转换问题。本发明的另一目的是提供一种基于统一接口的内存数据库分布式访问系统,以实 现异构机之间内存数据库的数据转换。本发明的基于统一接口的内存数据库分布式访问方法包括以下步骤在客户机上装设面向对象类内存数据库接口 rtdbintf模块,通过该模块访问本 地内存数据库或服务器内存数据库;在主、备服务器上运行代理服务rtdbproxy模块;若应用程序访问本地内存数据库,rtdbintf模块将通过内存数据库API直接访问 本机上的内存数据库;若应用程序访问远程服务器的内存数据库,则rtdbintf模块和主服务器 rtdbproxy模块通过Socket建立TCP/IP连接,rtdbintf模块将访问请求封装成协议包,发 送给主服务器的rtdbproxy模块,该rtdbproxy模块能够获取服务器的主备角色信息、解析 收到的报文、访问服务器内存数据库,再返回执行结果; rtdbintf模块和rtdbproxy模块使用RTDB*NET通信协议交换所在主机的体系结 构信息(即内存布局)和服务器的主备角色信息。在rtdbintf模块向rtdbproxy模块发送访问请求和接收到来自rtdbproxy模块 的返回信息时,要根据服务器和客户机体系结构的异同选择是否进行相应的字节顺序转 换,如果服务器和客户机体系结构不同,则rtdbintf模块将整型数据、浮点型数据的内存 字节顺序颠倒。rtdbintf模块接到rtdbproxy模块返回的信息时,检查服务器的主备角色是否发生变化,如果有变化就将活动连接主动切换到新的主服务器上。在应用程序调用rtdbintf接口模块建立和rtdbproxy模块连接时,需要同时指定 主备服务器的IP地址和rtdbproxy的服务端口号。本发明的基于统一接口的内存数据库分布式访问系统包括客户机和主备服务器, 所述客户机中包括面向对象类内存数据库接口 rtdbintf模块、本地内存数据库和应用程 序模块,所述主备服务器中分别包括代理服务rtdbproxy模块和服务器内存数据库,所述 应用程序模块通过所述rtdbintf模块直接调用内存数据库API来访问本地内存数据库,或 通过rtdbproxy访问远程服务器内存数据库,rtdbintf模块和rtdbproxy模 块通过socket 建立TCP/IP连接,使用RTDB*NET通信协议交换数据。所述rtdbintf模块包括连接接口、数据库接口、查询接口、表结构信息接口和字 段信息接口,通过使用该组接口,用户可以任意选择访问本地还是服务器内存数据库。本发明的基于统一接口的内存数据库分布式访问方法,使用了统一的接口提供分 布式内存数据库访问并进行透明数据交换,解决了异构机之间的内存数据库数据转换问 题,通信协议对应用程序透明并支持主备冗余机制,采用类商用数据库的接口体系,降低开 发人员的学习曲线。本发明的基于统一接口的内存数据库分布式访问系统中,客户机与主备服务器中 分别装设rtdbinft模块和rtdbproxy模块,使得异构机之间基于统一接口的内存数据库中 数据交换成为可能。


图1是本发明实施例中的一种rtdbintf接口调用关系流程示意图;图2是本发明实施例中的一种远程访问过程示意图。
具体实施例方式本发明针对现有内存数据库系统只提供本地访问接口,而不适应当前系统分布式 部署需求的现实,并且考虑到现有 SCADA(Supervisory Control And Data Acquisition) 系统分布式部署时,应用服务器和操作员工作站CPU体系结构的差异(即数据在内存中存 储的字节顺序不一致),SCADA系统实时库服务器采用主备机配置时,客户端只有访问主服 务器才能获得有效数据的需要,摒弃了现有内存数据库通常使用的专用的C语言API接口, 采用大多数C++程序员熟悉的类接口,提供面向对象的类商用数据库访问接口 rtdbintf模 块,能进行分布式内存数据库访问、数据透明转换、主备服务器透明切换的内存数据库访问 方法及系统。具体实施例如下一、基于统一接口的内存数据库分布式访问方法步骤如下(1)在客户机上装设面向对象类内存数据库接口 rtdbintf模块,通过该模块可以 访问本地内存数据库或服务器内存数据库;(2)在主、备服务器上运行代理服务rtdbproxy模块;(3)若应用程序访问本地内存数据库,rtdbintf模块将通过内存数据库API直接 访问本机上的内存数据库;若应用程序访问远程服务器内存数据库,则rtdbintf模块和主服务器的rtdbproxy模块通过Socket建立TCP/IP连接,rtdbintf模块将访问请求封装成协议包,该访问请求中需指定主备服务器的IP地址和rtdbproxy的服务端口号,将该协议包发送给主 服务器的rtdbproxy模块,该rtdbproxy模块能够获取主备角色信息、解析收到的报文、访 问服务器内存数据库,再返回执行结果;(4)rtdbintf模块和rtdbproxy模块建立连接时,同时交换所在主机的体系结构 信息(即内存布局)和服务器的主备信息。(5)在rtdbintf模块向主服务器rtdbproxy模块发送访问请求时以及接收到来 自rtdbproxy模块的返回信息时,要根据服务器和客户机体系结构的异同选择是否进行相 应的字节顺序转换,如果服务器和客户机体系结构不同,则rtdbintf模块将整型数据、浮 点型数据的内存字节顺序颠倒。(6)rtdbintf模块接到主服务器rtdbproxy模块返回的信息时,检查服务器的主 备角色是否发生变化,如果有变化就将活动连接主动切换到新的主服务器上。RTDB*NET通信协议是一个请求应答式协议,主要包括连接建立、数据库结构信息 查询、表结构信息查询、字段结构信息查询、记录查询、读字段、写字段、断开连接几个部分。如图1所示,为本发明提出的一种rtdbintf接口模块调用关系流程示意图,包括 以下步骤(1)应用程序调用rtdbintf接口模块的动态库导出的CreateRtdbConnection方 法获得IRTDBCormection连接接口,该连接接口具有设置连接参数、建立数据库连接等功 能。(2)通过 IRTDBConnection 的 GetDatabase 方法获得 IRTDBDatabase 数据库接 口, 该接口具有打开指定内存数据库库、查询当前数据库包含表的个数及名字等功能。(3)通过IRTDBDatabase数据库接口的GetQuery方法得到IRTDBQuery查询接口 对象,该接口具有条件查询、遍历结果集、读写字段值等功能。(4)通过 IRTDBDatabase 数据库接口的 GetTableSchema 方法得至Ij IRTDBTableSchema表结构信息接口对象,该接口具有查询当前表定义信息功能,如表名称、 表包含的字段个数及名字等。(5)通过 IRTDBTableSchema 表结构信息接口的 GetFieldSchema 方法得到 IRTDBFieldSchema字段信息接口对象,该接口具有查询当前字段定义信息的功能,如字段 名称、字段类型、字段长度等。其中,应用程序通过rtdbintf接口模块访问本地内存数据库的实现方式与传统 内存数据库访问方法一致,不再详述。如图2所示,为本发明提出的一种应用程序访问远程服务器内存数据库情形的示 意图,实现过程包括以下几点1,应用程序模块在调用rtdbintf模块中的IRTDBCormection连接接口建立连接 时,需要同时指定主备服务器的IP地址和rtdbproxy的服务端口号,本发明支持网络冗余, 即一台服务器可以指定多个IP地址。2,IRTDBConnection连接接口向主服务器中rtdbproxy模块发送连接请求,交换
连接信息。连接请求报文
2)连接响应报文 rtdbintf接口模块根据rtdbproxy返回的报文确定通信协议版本是否相容及是 否需要转换字节顺序。具体地,如果服务器和客户机体系结构相同,则不做任何转换;如果 服务器和客户机体系结构不同,则rtdbintf模块负责将整型数据、浮点型数据的内存字节 顺序颠倒,即将第一个字节的内容与最后一个字节的内容互换、将第二个字节的内容与倒 数第二个字节的内容互换,依次类推。rtdbintf还可以通过rtdbproxy的服务句柄知道当前连接的rtdbproxy是否重新 启动过,据此判断是否需要更新自己缓存的信息。3,所有的通信都使用统一的报文头。公共请求报文头rtdbproxy根据报文类型解析报文,执行相应的操作并返回给rtdbintf。 2)公共响应报文头 rtdbintf根据响应报文判断请求是否得到正确执行,并可以判断rtdbproxy的主 备状态是否发生改变,如果没有变化继续执行。如果发生改变,则将活动连接切换到另一台 服务器上。二、基于统一接口的内存数据库分布式访问系统包括客户机和主、备服务器,所 述客户机中包括面向对象类内存数据库接口 rtdbintf模块、本地内存数据库和应用程序 模块,所述主、备服务器中包括代理服务rtdbproxy模块和服务器内存数据库,应用程序模 块通过所述rtdbintf模块可以直接调用内存数据库API来访问本地内存数据库,或通过 rtdbintf模块和rtdbproxy模块访问远程服务器内存数据库,rtdbintf模块和rtdbproxy 模块通过socket建立TCP/IP连接,使用通信协议RTDB*NET交换数据,所述rtdbintf模 土夬包括 IRTDBConnection 连接接口、IRTDBDatabase 数据库接口、IRTDBQuery 查询接口、 IRTDBTableSchema表结构信息接口和IRTDBFieldSchema字段信息接口,通过使用该同组 接口,用户可以任意选择访问本地还是服务器内存数据库。以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人 员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应 视本发明的保护范围。本发明使用统一的接口提供分布式内存数据库问并进行透明数据交换,解决了异 构机之间的内存数据库数据转换问题,通信协议对应用程序透明并支持主备冗余机制,采 用类商用数据库的接口体系,降低开发人员的学习曲线。
权利要求
基于统一接口的内存数据库分布式访问方法,其特征在于,该方法包括以下步骤在客户机上装设面向对象类内存数据库接口rtdbintf模块,通过该模块访问本地内存数据库或服务器内存数据库;在主、备服务器上运行代理服务rtdbproxy模块;若应用程序访问本地内存数据库,rtdbintf模块将通过内存数据库API直接访问本机上的内存数据库;若应用程序访问远程服务器的内存数据库,则rtdbintf模块和主服务器rtdbproxy模块通过Socket建立TCP/IP连接,rtdbintf模块将访问请求封装成协议包,发送给主服务器的rtdbproxy模块,该rtdbproxy模块能够获取服务器的主备角色信息、解析收到的报文、访问服务器内存数据库,再返回执行结果;rtdbintf模块和rtdbproxy模块使用RTDB*NET通信协议交换所在主机的体系结构信息(即内存布局)和服务器的主备角色信息。
2.根据权利要求1所述的基于统一接口的内存数据库分布式访问方法,其特征在于, 在rtdbintf模块向rtdbproxy模块发送访问请求和接收到来自rtdbproxy模块的返回信 息时,要根据服务器和客户机体系结构的异同选择是否进行相应的字节顺序转换,如果服 务器和客户机体系结构不同,则rtdbintf模块将整型数据、浮点型数据的内存字节顺序颠 倒。
3.根据权利要求2所述的基于统一接口的内存数据库分布式访问方法,其特征在于, rtdbintf模块接到rtdbproxy模块返回的信息时,检查服务器的主备角色是否发生变化, 如果有变化就将活动连接主动切换到新的主服务器上。
4.根据权利要求3所述的基于统一接口的内存数据库分布式访问方法,其特征在于, 在应用程序调用rtdbintf接口模块建立和rtdbproxy模块连接时,需要同时指定主备服务 器的IP地址和rtdbproxy的服务端口号。
5.基于统一接口的内存数据库分布式访问系统,其特征在于,该系统包括客户机和主、 备服务器,所述客户机中包括面向对象类内存数据库接口 rtdbintf模块、本地内存数据库 和应用程序模块,所述主备服务器中分别包括代理服务rtdbproxy模块和服务器内存数据 库,所述应用程序模块通过所述rtdbintf模块直接调用内存数据库API来访问本地内存数 据库,或通过rtdbproxy访问远程服务器内存数据库,rtdbintf模块和rtdbproxy模块通 过socket建立TCP/IP连接,使用RTDB*NET通信协议交换数据。
6.根据权利要求5所述的基于统一接口的内存数据库分布式访问系统,其特征在于 所述rtdbintf模块包括连接接口、数据库接口、查询接口、表结构信息接口和字段信息接 口,通过使用该组接口,用户可以任意选择访问本地还是服务器内存数据库。
全文摘要
本发明涉及基于统一接口的内存数据库分布式访问方法及系统,该系统包括客户机和主备用服务器,客户机中包括面向对象类内存数据库接口rtdbintf模块和本地内存数据库,所述主备服务器中包括代理服务rtdbproxy模块和服务器内存数据库,通过rtdbintf模块直接调用内存数据库API来访问本地内存数据库,或通过rtdbproxy访问远程服务器内存数据库,rtdbintf模块和rtdbproxy模块通过socket建立TCP/IP连接;本发明使用统一的接口提供分布式内存数据库问并进行透明数据交换,解决了异构机之间的内存数据库数据转换问题。
文档编号G06F17/30GK101877002SQ200910310670
公开日2010年11月3日 申请日期2009年11月30日 优先权日2009年11月30日
发明者刘岩, 周逢权, 宋晓炜, 张展国, 张新坡, 王小路, 罗开明 申请人:许继集团有限公司;许继电气股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1