专利名称:一种通过协议代理方式访问数据库的方法
技术领域:
本发明涉及计算机数据库系统,特别涉及一种通过协议代理方式访问数据库的方法。
背景技术:
电信、金融等服务业内的企业一般都设立客户服务系统来处理日常的客户业务,其中,与客户交互的客户服务中心作为客户端设备连接至系统数据库以根据业务要求访问数据库的数据。对于银行、金融等安全性要求很高的行业和部门,一方面必须要保证存储数据的系统数据库绝对安全可靠,确保其不受来自外部的非法攻击;另一方面,又需要向客户端提供访问数据库的权限。
在现有系统下,客户端计算机一般通过存储过程调用方式访问数据库。在这种方式下,系统需要向访问方提供整个数据库的数据表结构并开放数据库的读写权限,由客户端计算机通过存储过程方式对数据库直接进行读写操作。显然,由于此种方式下对数据库进行的是直接操作,所以恶意用户可透过客户端计算机非常容易地从数据库获取机密数据或者对数据库存储数据进行肆意篡改,因而存在较大的安全隐患。此外,当以存储过程方式访问数据库时,访问过程与数据库格式密切相关,客户端实现程序或模块的代码将随数据格式的改变而作较大改动,从而造成业务的扩展和改动非常不便。
发明内容
本发明的目的是提供一种通过协议代理方式访问数据库的方法,其可在确保数据库安全的前提下向客户端提供业务服务。
在按照本发明的客户端计算机访问数据库系统的方法中,客户端计算机与数据库系统之间经协议代理模块通信,当客户端计算机内的应用进程访问数据库时,包含以下步骤
(1)客户端计算机的应用进程向协议代理模块传送访问数据库的请求报文;(2)协议代理模块将所述请求报文转换为被访问数据库可处理的协议格式,并控制格式转换后请求报文向数据库系统的发送;(3)数据库系统根据协议代理模块发送的请求报文对数据库进行操作,并且如果需要将操作结果回送至客户端计算机的应用进程,则向协议代理模块发送包含操作结果的响应报文;以及(4)协议代理模块将响应报文转换为客户端计算机内应用进程可处理的协议格式并传送至客户端计算机。
在上述方法中,比较好的是,协议代理模块与数据库系统之间按照TCP协议建立连接和进行通信。更好的是,数据库系统可以对协议代理模块进行IP验证及登录口令验证来保证数据库系统的安全,并可以控制协议代理模块对数据库系统操作的权限。
在上述方法中,比较好的是,在步骤(2)中,协议代理模块对格式转换后报文向数据库系统发送的控制包括报文发送队列控制和报文发送超时控制。
在上述方法中,比较好的是,协议代理模块包括协议代理执行单元和协议格式转换单元,其中,协议代理执行单元负责与数据库系统建立通信连接,从数据库接收操作结果和向数据库发送访问报文,并对访问数据库报文向数据库系统的发送进行队列控制和超时控制,而协议格式转换单元负责客户端计算机与数据库系统之间协议格式的转换。
在上述实现方式中,比较好的是,所有可以配置或改动的设置以预先设定的格式写入配置文件中,协议代理执行单元通过读取配置文件确定协议代理模块与数据库系统之间的通信协议和客户端计算机与数据库之间的协议格式转换方式并且调用协议格式转换单元完成协议格式转换。
由上可见,在本发明中采用协议代理方式来管理客户端计算机对数据库的访问,杜绝了客户端计算机对数据库的直接操作,而且协议代理模块与数据库系统之间的通信可采用安全性较高的协议,因此提高了数据库系统的安全性能,有效地防止了非法用户的恶意攻击。此外,由于采用软件方式实现协议代理模块的功能,并且利用专门的配置文件以特定的格式描述协议代理模块与数据库系统之间的通信协议和客户端计算机与数据库之间的协议格式转换方式,因此只需修改配置文件即可修改业务,方便了系统的升级和业务扩展。
图1为按照本发明的访问数据库方法的流程图。
图2为按照本发明较佳实施例的协议代理接口模块在一个典型的应用环境下的示意图。
具体实施例方式
以下借助图1描述按照本发明的访问数据库方法的流程图。如图1所示,当客户端计算机的应用进程访问数据库时,首先向协议代理模块传送请求访问数据库的请求报文,该请求报文包含有对数据库的操作类型和操作参数。随后,协议代理模块将接收到的报文转换为被访问数据库可处理的协议格式,并控制格式转换后报文向数据库系统的发送方式,协议格式转换和请求报文发送可采用下述实施例中的具体方式。接着,数据库系统根据格式转换后的报文对数据库进行操作,并且如果需要将操作结果回送至客户端计算机的应用进程,则数据库系统向协议代理模块发送包含操作结果的响应报文。最后,协议代理模块将接收到的响应报文转换为客户端计算机内应用进程可处理的协议格式并传送至客户端计算机的应用进程。值得指出的是,本发明的协议代理模块应该理解为一种功能实体,它可以软件、硬件及其结合的方式实现,而且其物理位置可以位于客户端计算机内,也可以位于数据库系统,还可以独立于客户端计算机和数据库系统而分立存在。但是实施方式的上述所有变化并不会对本发明的效果产生实质性的影响。
图2为按照本发明较佳实施例的协议代理接口模块在一个典型的应用环境下的示意图。在图2中,局方系统前置机和局方系统数据库构成营帐系统,前置机用于处理对数据库的各种操作;短信计费服务器、自动语音应答(IVR)业务服务器、应用服务器、催缴业务服务器、传真服务器和语音服务器等构成客户服务系统,各种应用业务由这些服务器完成。在上述组网结构中,营帐系统可视为向提供数据访问的数据库系统,而上述客户服务系统中的各种服务器由于在提供业务时需要访问局方系统数据库存储的数据,所以可视为客户端计算机。在现有技术下,这些客户端计算机直接访问营帐系统,因此对局方系统数据库带来了较大的安全隐患,而在本发明中,如图2所示,所有这些客户端计算机都与下面将要详述的协议代理模块连接,并且必须经过该协议代理模块才能访问数据库系统。如上所述,协议代理模块应该理解为一种功能实体,因此虽然图2中的协议代理模块独立于客户服务系统和营帐系统,但是并不意味着该模块在物理位置上一定是独立的,相反,它可以位于局方系统前置机内或者客户服务系统的各种服务器内。
上述协议代理模块完成的功能主要包括(1)协议格式转换功能客户服务系统中的各种服务器应用程序需要访问营帐系统以读写局方系统数据库,但是由于客户服务系统的软硬件环境与营帐系统往往存在很大差异,所以两个系统对访问数据库的方式是不统一的,例如操作数据库的报文命令字各不相同,数据格式也各不相同,因此当各种服务器向协议代理模块传送请求访问数据库的报文时,协议代理模块将报文中包含的数据库操作命令和参数转换为营帐系统可以识别的操作命令和参数,并将营帐系统访问数据库的操作结果转换为各种服务器应用程序可以处理的格式。
(2)通信管理功能协议代理模块负责与数据库系统建立通信连接,将经过协议格式转换后的服务器对数据库的访问请求发送给数据库系统,以及从数据库系统接收数据库访问结果。在本发明的较佳实施例中,考虑到安全性,协议代理模块与营帐系统内的局方系统前置机采用TCP协议进行通信,在通信建立时,协议代理模块可根据预先确定的方式设定双方的连接方式、IP地址、连接端口号和监听端口号等。此外,为了进一步提高系统的安全性,可由数据库系统对协议代理模块进行IP验证及登录口令验证并控制协议代理模块操作数据库系统的权限。
(3)报文控制发送功能协议代理模块对向数据库系统发送的请求访问报文进行控制以满足各种需要,例如可对待发送的请求访问报文进行队列控制和超时控制。具体而言,在本实施例中,当营帐系统的局方系统前置机处理忙时(即无法处理新的访问请求),协议代理模块启动队列控制处理,对请求访问报文进行队列处理以避免报文的丢失;当一项报文或请求在队列中等待时间过长而得到响应时,协议代理模块可启动超时控制处理丢弃这样的报文。
上述协议代理模块的功能可以软件或硬件方式实现,但是在本发明的较佳实施例中,比较好的是以软件方式实现,以下对此作进一步的描述。
实现协议代理模块上述功能的接口程序包括协议代理执行单元和协议格式转换单元,其中,协议代理执行单元负责与数据库系统建立通信连接,从数据库接收操作结果和向数据库发送访问报文,并对访问数据库报文向数据库系统的发送进行队列控制和超时控制,而协议格式转换单元负责客户端计算机与数据库系统之间协议格式的转换。之所以将实现协议代理的接口程序分成相对独立的两部分是考虑到在客户服务系统与不同局对接时应尽量减少对程序的改动。具体而言,由于客户服务系统与局方系统之间一般只是协议格式不同,双方之间的通信管理过程是相同或相似的,因此主要负责通信管理功能的协议代理执行单元可以作为通用程序使用,而将协议格式转换单元提供给不同的局方系统。
如图2所示,在本实施例中,协议代理执行单元为可执行程序DtProxy.exe而协议格式转换单元为可由DtProxy.exe调用的动态链接库DtProxyDll.dll。
为了灵活地配置DtProxy.exe程序与局方系统前置机之间的通信协议,在本实施例中,将所有可以配置或改动的设置以预先设定的格式写入一个配置文件DtProxy.ini中,DtProxy.exe程序通过读取该配置文件制定与前置机之间的通信协议。该配置文件内容包括1)连接方式的设定、连接端口和监听端口的配置等;2)传送的各项报文的超时时限和所用连接的配置;3)与其它内部程序通信时的进程ID设置和数据源的配置等。
通过配置文件DtProxy.ini的配置,协议代理模块可通过如下的连接方式向营帐系统内的局方系统前置机发送请求访问数据库的报文1、长连接、异步(非阻塞)方式在这种方式下,DtProxy.exe程序在接收到客户服务系统访问营帐系统的请求报文时,经过协议格式转换后如果前置机可处理,则即行发送,否则进行队列控制,即,将报文放入一个请求队列中,待前置机可处理时再发送。由于各种报文的处理速度不同,因此营帐系统回送的响应报文的顺序可能与请求报文的顺序不同。
2、长连接、同步(阻塞)方式在这种方式下,DtProxy.exe程序将客户服务系统的一个请求报文发送给局方系统前置机后,必须等待接收到响应报文后或者在预先设定时间结束时未接收到响应报文时(即超时)才能发送下一个请求报文。如果请求报文过多,则采用这种方式可以将等待时间过长的请求报文丢弃。
3、短连接、同步(阻塞)方式在这种方式下,DtProxy.exe程序在发送请求报文之前,先与局方系统前置机建立套接字(Socket)连接,然后发送报文,并且只有在接收到响应报文或者在预先设定时间结束时未接收到响应报文时才断开连接。
同样,为了灵活地配置协议格式转换,在本实施例中,将所有可以配置或改动的设置以预先设定的格式写入一个配置文件DtProxyDll.ini中,DtProxy.exe程序在调用DtProxyDLL.dll进行格式转换前,通过读取该配置文件确定协议格式转换方式。该配置内容包括协议格式转换时报文命令字的对应关系和转换数据的对应关系等,具体设置与具体的协议相关。
此外,由于各种接口协议的实现方式不尽相同,所以可能会根据实际情况需要增加配置文件。
权利要求
1.一种客户端计算机访问数据库系统的方法,其特征在于,客户端计算机与数据库系统之间经协议代理模块通信,当客户端计算机内的应用进程访问数据库时,包含以下步骤(1)客户端计算机的应用进程向协议代理模块传送访问数据库的请求报文;(2)协议代理模块将所述请求报文转换为被访问数据库可处理的协议格式,并控制格式转换后请求报文向数据库系统的发送;(3)数据库系统根据协议代理模块发送的请求报文对数据库进行操作,并且如果需要将操作结果回送至客户端计算机的应用进程,则向协议代理模块发送包含操作结果的响应报文;以及(4)协议代理模块将响应报文转换为客户端计算机内应用进程可处理的协议格式并传送至客户端计算机。
2.如权利要求1所述的方法,其特征在于,所述访问数据库的请求报文包含对数据库的操作类型和操作参数。
3.如权利要求2所述的方法,其特征在于,协议代理模块包括协议代理执行单元和协议格式转换单元,其中,协议代理执行单元负责与数据库系统建立通信连接,从数据库接收操作结果和向数据库发送访问报文,并对访问数据库报文向数据库系统的发送进行队列控制和超时控制,而协议格式转换单元负责客户端计算机与数据库系统之间协议格式的转换。
4.如权利要求3所述的方法,其特征在于,所有可以配置或改动的设置以预先设定的格式写入配置文件中,协议代理执行单元通过读取配置文件确定协议代理模块与数据库系统之间的通信协议和客户端计算机与数据库之间的协议格式转换方式并且调用协议格式转换单元完成协议格式转换。
5.如权利要求1~4中任意一项所述的方法,其特征在于,协议代理模块与数据库系统之间按照TCP协议建立连接和进行通信。
6.如权利要求5所述的方法,其特征在于,数据库系统对协议代理模块进行IP验证及登录口令验证,并控制协议代理模块对数据库系统的操作权限。
7.如权利要求6所述的方法,其特征在于,在步骤(2)中,协议代理模块在接收到客户端计算机访问数据库系统的请求报文时,对其作协议格式转换并在数据库系统可处理时即行发送,否则进行队列控制处理。
8.如权利要求6所述的方法,其特征在于,在步骤(2)中,协议代理模块在将客尸端计算机传送的一个请求报文发送给数据库系统后,必须等待接收到数据库系统的响应报文后或者在预先设定时间结束时未接收到响应报文时才能发送下一个请求报文。
9.如权利要求6所述的方法,其特征在于,在步骤(2)中,在发送请求报文之前,协议代理模块先与数据库系统建立套接字(Socket)连接,然后发送请求报文,并且只有在接收到响应报文或者在预先设定时间结束时未接收到响应报文时才断开套接字连接。
全文摘要
本发明提供一种通过协议代理方式访问数据库的方法,在该方法中,客户端计算机对数据库系统之间经协议代理模块通信,该协议代理模块负责管理与数据库系统之间的通信连接,对访问数据库的请求进行队列控制和超时控制,并且负责客户端计算机与数据库系统之间协议格式的转换。由于采用协议代理方式来管理客户端计算机对数据库的访问,所以提高了数据库系统的安全性能,有效地防止了非法用户的恶意攻击。此外,在协议代理模块的软件实现方式中,利用配置文件,以特定的格式描述协议代理模块与数据库系统之间的通信协议和客户端计算机与数据库之间的协议格式转换方式,因此只需修改配置文件即可修改业务,方便了系统的升级和业务扩展。
文档编号G06F17/30GK1494022SQ0213769
公开日2004年5月5日 申请日期2002年10月30日 优先权日2002年10月30日
发明者李凯, 付志强, 涂晓华, 刘少华, 龚连阳, 温兴奋, 周巍, 曾斌, 汪大冰, 邓伟, 蔡利元, 李 凯 申请人:华为技术有限公司