專利名稱:一種通過協(xié)議代理方式訪問數(shù)據(jù)庫的方法
技術領域:
本發(fā)明涉及計算機數(shù)據(jù)庫系統(tǒng),特別涉及一種通過協(xié)議代理方式訪問數(shù)據(jù)庫的方法。
背景技術:
電信、金融等服務業(yè)內(nèi)的企業(yè)一般都設立客戶服務系統(tǒng)來處理日常的客戶業(yè)務,其中,與客戶交互的客戶服務中心作為客戶端設備連接至系統(tǒng)數(shù)據(jù)庫以根據(jù)業(yè)務要求訪問數(shù)據(jù)庫的數(shù)據(jù)。對于銀行、金融等安全性要求很高的行業(yè)和部門,一方面必須要保證存儲數(shù)據(jù)的系統(tǒng)數(shù)據(jù)庫絕對安全可靠,確保其不受來自外部的非法攻擊;另一方面,又需要向客戶端提供訪問數(shù)據(jù)庫的權限。
在現(xiàn)有系統(tǒng)下,客戶端計算機一般通過存儲過程調(diào)用方式訪問數(shù)據(jù)庫。在這種方式下,系統(tǒng)需要向訪問方提供整個數(shù)據(jù)庫的數(shù)據(jù)表結構并開放數(shù)據(jù)庫的讀寫權限,由客戶端計算機通過存儲過程方式對數(shù)據(jù)庫直接進行讀寫操作。顯然,由于此種方式下對數(shù)據(jù)庫進行的是直接操作,所以惡意用戶可透過客戶端計算機非常容易地從數(shù)據(jù)庫獲取機密數(shù)據(jù)或者對數(shù)據(jù)庫存儲數(shù)據(jù)進行肆意篡改,因而存在較大的安全隱患。此外,當以存儲過程方式訪問數(shù)據(jù)庫時,訪問過程與數(shù)據(jù)庫格式密切相關,客戶端實現(xiàn)程序或模塊的代碼將隨數(shù)據(jù)格式的改變而作較大改動,從而造成業(yè)務的擴展和改動非常不便。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種通過協(xié)議代理方式訪問數(shù)據(jù)庫的方法,其可在確保數(shù)據(jù)庫安全的前提下向客戶端提供業(yè)務服務。
在按照本發(fā)明的客戶端計算機訪問數(shù)據(jù)庫系統(tǒng)的方法中,客戶端計算機與數(shù)據(jù)庫系統(tǒng)之間經(jīng)協(xié)議代理模塊通信,當客戶端計算機內(nèi)的應用進程訪問數(shù)據(jù)庫時,包含以下步驟
(1)客戶端計算機的應用進程向協(xié)議代理模塊傳送訪問數(shù)據(jù)庫的請求報文;(2)協(xié)議代理模塊將所述請求報文轉換為被訪問數(shù)據(jù)庫可處理的協(xié)議格式,并控制格式轉換后請求報文向數(shù)據(jù)庫系統(tǒng)的發(fā)送;(3)數(shù)據(jù)庫系統(tǒng)根據(jù)協(xié)議代理模塊發(fā)送的請求報文對數(shù)據(jù)庫進行操作,并且如果需要將操作結果回送至客戶端計算機的應用進程,則向協(xié)議代理模塊發(fā)送包含操作結果的響應報文;以及(4)協(xié)議代理模塊將響應報文轉換為客戶端計算機內(nèi)應用進程可處理的協(xié)議格式并傳送至客戶端計算機。
在上述方法中,比較好的是,協(xié)議代理模塊與數(shù)據(jù)庫系統(tǒng)之間按照TCP協(xié)議建立連接和進行通信。更好的是,數(shù)據(jù)庫系統(tǒng)可以對協(xié)議代理模塊進行IP驗證及登錄口令驗證來保證數(shù)據(jù)庫系統(tǒng)的安全,并可以控制協(xié)議代理模塊對數(shù)據(jù)庫系統(tǒng)操作的權限。
在上述方法中,比較好的是,在步驟(2)中,協(xié)議代理模塊對格式轉換后報文向數(shù)據(jù)庫系統(tǒng)發(fā)送的控制包括報文發(fā)送隊列控制和報文發(fā)送超時控制。
在上述方法中,比較好的是,協(xié)議代理模塊包括協(xié)議代理執(zhí)行單元和協(xié)議格式轉換單元,其中,協(xié)議代理執(zhí)行單元負責與數(shù)據(jù)庫系統(tǒng)建立通信連接,從數(shù)據(jù)庫接收操作結果和向數(shù)據(jù)庫發(fā)送訪問報文,并對訪問數(shù)據(jù)庫報文向數(shù)據(jù)庫系統(tǒng)的發(fā)送進行隊列控制和超時控制,而協(xié)議格式轉換單元負責客戶端計算機與數(shù)據(jù)庫系統(tǒng)之間協(xié)議格式的轉換。
在上述實現(xiàn)方式中,比較好的是,所有可以配置或改動的設置以預先設定的格式寫入配置文件中,協(xié)議代理執(zhí)行單元通過讀取配置文件確定協(xié)議代理模塊與數(shù)據(jù)庫系統(tǒng)之間的通信協(xié)議和客戶端計算機與數(shù)據(jù)庫之間的協(xié)議格式轉換方式并且調(diào)用協(xié)議格式轉換單元完成協(xié)議格式轉換。
由上可見,在本發(fā)明中采用協(xié)議代理方式來管理客戶端計算機對數(shù)據(jù)庫的訪問,杜絕了客戶端計算機對數(shù)據(jù)庫的直接操作,而且協(xié)議代理模塊與數(shù)據(jù)庫系統(tǒng)之間的通信可采用安全性較高的協(xié)議,因此提高了數(shù)據(jù)庫系統(tǒng)的安全性能,有效地防止了非法用戶的惡意攻擊。此外,由于采用軟件方式實現(xiàn)協(xié)議代理模塊的功能,并且利用專門的配置文件以特定的格式描述協(xié)議代理模塊與數(shù)據(jù)庫系統(tǒng)之間的通信協(xié)議和客戶端計算機與數(shù)據(jù)庫之間的協(xié)議格式轉換方式,因此只需修改配置文件即可修改業(yè)務,方便了系統(tǒng)的升級和業(yè)務擴展。
圖1為按照本發(fā)明的訪問數(shù)據(jù)庫方法的流程圖。
圖2為按照本發(fā)明較佳實施例的協(xié)議代理接口模塊在一個典型的應用環(huán)境下的示意圖。
具體實施例方式
以下借助圖1描述按照本發(fā)明的訪問數(shù)據(jù)庫方法的流程圖。如圖1所示,當客戶端計算機的應用進程訪問數(shù)據(jù)庫時,首先向協(xié)議代理模塊傳送請求訪問數(shù)據(jù)庫的請求報文,該請求報文包含有對數(shù)據(jù)庫的操作類型和操作參數(shù)。隨后,協(xié)議代理模塊將接收到的報文轉換為被訪問數(shù)據(jù)庫可處理的協(xié)議格式,并控制格式轉換后報文向數(shù)據(jù)庫系統(tǒng)的發(fā)送方式,協(xié)議格式轉換和請求報文發(fā)送可采用下述實施例中的具體方式。接著,數(shù)據(jù)庫系統(tǒng)根據(jù)格式轉換后的報文對數(shù)據(jù)庫進行操作,并且如果需要將操作結果回送至客戶端計算機的應用進程,則數(shù)據(jù)庫系統(tǒng)向協(xié)議代理模塊發(fā)送包含操作結果的響應報文。最后,協(xié)議代理模塊將接收到的響應報文轉換為客戶端計算機內(nèi)應用進程可處理的協(xié)議格式并傳送至客戶端計算機的應用進程。值得指出的是,本發(fā)明的協(xié)議代理模塊應該理解為一種功能實體,它可以軟件、硬件及其結合的方式實現(xiàn),而且其物理位置可以位于客戶端計算機內(nèi),也可以位于數(shù)據(jù)庫系統(tǒng),還可以獨立于客戶端計算機和數(shù)據(jù)庫系統(tǒng)而分立存在。但是實施方式的上述所有變化并不會對本發(fā)明的效果產(chǎn)生實質(zhì)性的影響。
圖2為按照本發(fā)明較佳實施例的協(xié)議代理接口模塊在一個典型的應用環(huán)境下的示意圖。在圖2中,局方系統(tǒng)前置機和局方系統(tǒng)數(shù)據(jù)庫構成營帳系統(tǒng),前置機用于處理對數(shù)據(jù)庫的各種操作;短信計費服務器、自動語音應答(IVR)業(yè)務服務器、應用服務器、催繳業(yè)務服務器、傳真服務器和語音服務器等構成客戶服務系統(tǒng),各種應用業(yè)務由這些服務器完成。在上述組網(wǎng)結構中,營帳系統(tǒng)可視為向提供數(shù)據(jù)訪問的數(shù)據(jù)庫系統(tǒng),而上述客戶服務系統(tǒng)中的各種服務器由于在提供業(yè)務時需要訪問局方系統(tǒng)數(shù)據(jù)庫存儲的數(shù)據(jù),所以可視為客戶端計算機。在現(xiàn)有技術下,這些客戶端計算機直接訪問營帳系統(tǒng),因此對局方系統(tǒng)數(shù)據(jù)庫帶來了較大的安全隱患,而在本發(fā)明中,如圖2所示,所有這些客戶端計算機都與下面將要詳述的協(xié)議代理模塊連接,并且必須經(jīng)過該協(xié)議代理模塊才能訪問數(shù)據(jù)庫系統(tǒng)。如上所述,協(xié)議代理模塊應該理解為一種功能實體,因此雖然圖2中的協(xié)議代理模塊獨立于客戶服務系統(tǒng)和營帳系統(tǒng),但是并不意味著該模塊在物理位置上一定是獨立的,相反,它可以位于局方系統(tǒng)前置機內(nèi)或者客戶服務系統(tǒng)的各種服務器內(nèi)。
上述協(xié)議代理模塊完成的功能主要包括(1)協(xié)議格式轉換功能客戶服務系統(tǒng)中的各種服務器應用程序需要訪問營帳系統(tǒng)以讀寫局方系統(tǒng)數(shù)據(jù)庫,但是由于客戶服務系統(tǒng)的軟硬件環(huán)境與營帳系統(tǒng)往往存在很大差異,所以兩個系統(tǒng)對訪問數(shù)據(jù)庫的方式是不統(tǒng)一的,例如操作數(shù)據(jù)庫的報文命令字各不相同,數(shù)據(jù)格式也各不相同,因此當各種服務器向協(xié)議代理模塊傳送請求訪問數(shù)據(jù)庫的報文時,協(xié)議代理模塊將報文中包含的數(shù)據(jù)庫操作命令和參數(shù)轉換為營帳系統(tǒng)可以識別的操作命令和參數(shù),并將營帳系統(tǒng)訪問數(shù)據(jù)庫的操作結果轉換為各種服務器應用程序可以處理的格式。
(2)通信管理功能協(xié)議代理模塊負責與數(shù)據(jù)庫系統(tǒng)建立通信連接,將經(jīng)過協(xié)議格式轉換后的服務器對數(shù)據(jù)庫的訪問請求發(fā)送給數(shù)據(jù)庫系統(tǒng),以及從數(shù)據(jù)庫系統(tǒng)接收數(shù)據(jù)庫訪問結果。在本發(fā)明的較佳實施例中,考慮到安全性,協(xié)議代理模塊與營帳系統(tǒng)內(nèi)的局方系統(tǒng)前置機采用TCP協(xié)議進行通信,在通信建立時,協(xié)議代理模塊可根據(jù)預先確定的方式設定雙方的連接方式、IP地址、連接端口號和監(jiān)聽端口號等。此外,為了進一步提高系統(tǒng)的安全性,可由數(shù)據(jù)庫系統(tǒng)對協(xié)議代理模塊進行IP驗證及登錄口令驗證并控制協(xié)議代理模塊操作數(shù)據(jù)庫系統(tǒng)的權限。
(3)報文控制發(fā)送功能協(xié)議代理模塊對向數(shù)據(jù)庫系統(tǒng)發(fā)送的請求訪問報文進行控制以滿足各種需要,例如可對待發(fā)送的請求訪問報文進行隊列控制和超時控制。具體而言,在本實施例中,當營帳系統(tǒng)的局方系統(tǒng)前置機處理忙時(即無法處理新的訪問請求),協(xié)議代理模塊啟動隊列控制處理,對請求訪問報文進行隊列處理以避免報文的丟失;當一項報文或請求在隊列中等待時間過長而得到響應時,協(xié)議代理模塊可啟動超時控制處理丟棄這樣的報文。
上述協(xié)議代理模塊的功能可以軟件或硬件方式實現(xiàn),但是在本發(fā)明的較佳實施例中,比較好的是以軟件方式實現(xiàn),以下對此作進一步的描述。
實現(xiàn)協(xié)議代理模塊上述功能的接口程序包括協(xié)議代理執(zhí)行單元和協(xié)議格式轉換單元,其中,協(xié)議代理執(zhí)行單元負責與數(shù)據(jù)庫系統(tǒng)建立通信連接,從數(shù)據(jù)庫接收操作結果和向數(shù)據(jù)庫發(fā)送訪問報文,并對訪問數(shù)據(jù)庫報文向數(shù)據(jù)庫系統(tǒng)的發(fā)送進行隊列控制和超時控制,而協(xié)議格式轉換單元負責客戶端計算機與數(shù)據(jù)庫系統(tǒng)之間協(xié)議格式的轉換。之所以將實現(xiàn)協(xié)議代理的接口程序分成相對獨立的兩部分是考慮到在客戶服務系統(tǒng)與不同局對接時應盡量減少對程序的改動。具體而言,由于客戶服務系統(tǒng)與局方系統(tǒng)之間一般只是協(xié)議格式不同,雙方之間的通信管理過程是相同或相似的,因此主要負責通信管理功能的協(xié)議代理執(zhí)行單元可以作為通用程序使用,而將協(xié)議格式轉換單元提供給不同的局方系統(tǒng)。
如圖2所示,在本實施例中,協(xié)議代理執(zhí)行單元為可執(zhí)行程序DtProxy.exe而協(xié)議格式轉換單元為可由DtProxy.exe調(diào)用的動態(tài)鏈接庫DtProxyDll.dll。
為了靈活地配置DtProxy.exe程序與局方系統(tǒng)前置機之間的通信協(xié)議,在本實施例中,將所有可以配置或改動的設置以預先設定的格式寫入一個配置文件DtProxy.ini中,DtProxy.exe程序通過讀取該配置文件制定與前置機之間的通信協(xié)議。該配置文件內(nèi)容包括1)連接方式的設定、連接端口和監(jiān)聽端口的配置等;2)傳送的各項報文的超時時限和所用連接的配置;3)與其它內(nèi)部程序通信時的進程ID設置和數(shù)據(jù)源的配置等。
通過配置文件DtProxy.ini的配置,協(xié)議代理模塊可通過如下的連接方式向營帳系統(tǒng)內(nèi)的局方系統(tǒng)前置機發(fā)送請求訪問數(shù)據(jù)庫的報文1、長連接、異步(非阻塞)方式在這種方式下,DtProxy.exe程序在接收到客戶服務系統(tǒng)訪問營帳系統(tǒng)的請求報文時,經(jīng)過協(xié)議格式轉換后如果前置機可處理,則即行發(fā)送,否則進行隊列控制,即,將報文放入一個請求隊列中,待前置機可處理時再發(fā)送。由于各種報文的處理速度不同,因此營帳系統(tǒng)回送的響應報文的順序可能與請求報文的順序不同。
2、長連接、同步(阻塞)方式在這種方式下,DtProxy.exe程序?qū)⒖蛻舴障到y(tǒng)的一個請求報文發(fā)送給局方系統(tǒng)前置機后,必須等待接收到響應報文后或者在預先設定時間結束時未接收到響應報文時(即超時)才能發(fā)送下一個請求報文。如果請求報文過多,則采用這種方式可以將等待時間過長的請求報文丟棄。
3、短連接、同步(阻塞)方式在這種方式下,DtProxy.exe程序在發(fā)送請求報文之前,先與局方系統(tǒng)前置機建立套接字(Socket)連接,然后發(fā)送報文,并且只有在接收到響應報文或者在預先設定時間結束時未接收到響應報文時才斷開連接。
同樣,為了靈活地配置協(xié)議格式轉換,在本實施例中,將所有可以配置或改動的設置以預先設定的格式寫入一個配置文件DtProxyDll.ini中,DtProxy.exe程序在調(diào)用DtProxyDLL.dll進行格式轉換前,通過讀取該配置文件確定協(xié)議格式轉換方式。該配置內(nèi)容包括協(xié)議格式轉換時報文命令字的對應關系和轉換數(shù)據(jù)的對應關系等,具體設置與具體的協(xié)議相關。
此外,由于各種接口協(xié)議的實現(xiàn)方式不盡相同,所以可能會根據(jù)實際情況需要增加配置文件。
權利要求
1.一種客戶端計算機訪問數(shù)據(jù)庫系統(tǒng)的方法,其特征在于,客戶端計算機與數(shù)據(jù)庫系統(tǒng)之間經(jīng)協(xié)議代理模塊通信,當客戶端計算機內(nèi)的應用進程訪問數(shù)據(jù)庫時,包含以下步驟(1)客戶端計算機的應用進程向協(xié)議代理模塊傳送訪問數(shù)據(jù)庫的請求報文;(2)協(xié)議代理模塊將所述請求報文轉換為被訪問數(shù)據(jù)庫可處理的協(xié)議格式,并控制格式轉換后請求報文向數(shù)據(jù)庫系統(tǒng)的發(fā)送;(3)數(shù)據(jù)庫系統(tǒng)根據(jù)協(xié)議代理模塊發(fā)送的請求報文對數(shù)據(jù)庫進行操作,并且如果需要將操作結果回送至客戶端計算機的應用進程,則向協(xié)議代理模塊發(fā)送包含操作結果的響應報文;以及(4)協(xié)議代理模塊將響應報文轉換為客戶端計算機內(nèi)應用進程可處理的協(xié)議格式并傳送至客戶端計算機。
2.如權利要求1所述的方法,其特征在于,所述訪問數(shù)據(jù)庫的請求報文包含對數(shù)據(jù)庫的操作類型和操作參數(shù)。
3.如權利要求2所述的方法,其特征在于,協(xié)議代理模塊包括協(xié)議代理執(zhí)行單元和協(xié)議格式轉換單元,其中,協(xié)議代理執(zhí)行單元負責與數(shù)據(jù)庫系統(tǒng)建立通信連接,從數(shù)據(jù)庫接收操作結果和向數(shù)據(jù)庫發(fā)送訪問報文,并對訪問數(shù)據(jù)庫報文向數(shù)據(jù)庫系統(tǒng)的發(fā)送進行隊列控制和超時控制,而協(xié)議格式轉換單元負責客戶端計算機與數(shù)據(jù)庫系統(tǒng)之間協(xié)議格式的轉換。
4.如權利要求3所述的方法,其特征在于,所有可以配置或改動的設置以預先設定的格式寫入配置文件中,協(xié)議代理執(zhí)行單元通過讀取配置文件確定協(xié)議代理模塊與數(shù)據(jù)庫系統(tǒng)之間的通信協(xié)議和客戶端計算機與數(shù)據(jù)庫之間的協(xié)議格式轉換方式并且調(diào)用協(xié)議格式轉換單元完成協(xié)議格式轉換。
5.如權利要求1~4中任意一項所述的方法,其特征在于,協(xié)議代理模塊與數(shù)據(jù)庫系統(tǒng)之間按照TCP協(xié)議建立連接和進行通信。
6.如權利要求5所述的方法,其特征在于,數(shù)據(jù)庫系統(tǒng)對協(xié)議代理模塊進行IP驗證及登錄口令驗證,并控制協(xié)議代理模塊對數(shù)據(jù)庫系統(tǒng)的操作權限。
7.如權利要求6所述的方法,其特征在于,在步驟(2)中,協(xié)議代理模塊在接收到客戶端計算機訪問數(shù)據(jù)庫系統(tǒng)的請求報文時,對其作協(xié)議格式轉換并在數(shù)據(jù)庫系統(tǒng)可處理時即行發(fā)送,否則進行隊列控制處理。
8.如權利要求6所述的方法,其特征在于,在步驟(2)中,協(xié)議代理模塊在將客尸端計算機傳送的一個請求報文發(fā)送給數(shù)據(jù)庫系統(tǒng)后,必須等待接收到數(shù)據(jù)庫系統(tǒng)的響應報文后或者在預先設定時間結束時未接收到響應報文時才能發(fā)送下一個請求報文。
9.如權利要求6所述的方法,其特征在于,在步驟(2)中,在發(fā)送請求報文之前,協(xié)議代理模塊先與數(shù)據(jù)庫系統(tǒng)建立套接字(Socket)連接,然后發(fā)送請求報文,并且只有在接收到響應報文或者在預先設定時間結束時未接收到響應報文時才斷開套接字連接。
全文摘要
本發(fā)明提供一種通過協(xié)議代理方式訪問數(shù)據(jù)庫的方法,在該方法中,客戶端計算機對數(shù)據(jù)庫系統(tǒng)之間經(jīng)協(xié)議代理模塊通信,該協(xié)議代理模塊負責管理與數(shù)據(jù)庫系統(tǒng)之間的通信連接,對訪問數(shù)據(jù)庫的請求進行隊列控制和超時控制,并且負責客戶端計算機與數(shù)據(jù)庫系統(tǒng)之間協(xié)議格式的轉換。由于采用協(xié)議代理方式來管理客戶端計算機對數(shù)據(jù)庫的訪問,所以提高了數(shù)據(jù)庫系統(tǒng)的安全性能,有效地防止了非法用戶的惡意攻擊。此外,在協(xié)議代理模塊的軟件實現(xiàn)方式中,利用配置文件,以特定的格式描述協(xié)議代理模塊與數(shù)據(jù)庫系統(tǒng)之間的通信協(xié)議和客戶端計算機與數(shù)據(jù)庫之間的協(xié)議格式轉換方式,因此只需修改配置文件即可修改業(yè)務,方便了系統(tǒng)的升級和業(yè)務擴展。
文檔編號G06F17/30GK1494022SQ0213769
公開日2004年5月5日 申請日期2002年10月30日 優(yōu)先權日2002年10月30日
發(fā)明者李凱, 付志強, 涂曉華, 劉少華, 龔連陽, 溫興奮, 周巍, 曾斌, 汪大冰, 鄧偉, 蔡利元, 李 凱 申請人:華為技術有限公司