一種數(shù)據(jù)處理方法及其裝置的制造方法
【專利摘要】本發(fā)明公開了一種數(shù)據(jù)處理方法及其裝置,該方法包括:獲取客戶端發(fā)送的數(shù)據(jù)庫處理命令集合,并依據(jù)數(shù)據(jù)庫標(biāo)識信息將所述數(shù)據(jù)庫處理命令分成多個數(shù)據(jù)庫處理子命令;根據(jù)所述子命令中的數(shù)據(jù)庫標(biāo)識信息和數(shù)據(jù)庫服務(wù)器的對應(yīng)關(guān)系,確定每條數(shù)據(jù)庫處理子命令中的數(shù)據(jù)庫標(biāo)識信息對應(yīng)的數(shù)據(jù)庫服務(wù)器;將所述數(shù)據(jù)庫處理子命令分別發(fā)送給對應(yīng)的數(shù)據(jù)庫服務(wù)器;接收每個所述數(shù)據(jù)庫服務(wù)器返回的數(shù)據(jù)處理結(jié)果,并匯總所述數(shù)據(jù)處理結(jié)果發(fā)送給所述客戶端。用以解決現(xiàn)有金融批處理系統(tǒng)存在并發(fā)處理能力不足,無法充分利用現(xiàn)有的系統(tǒng)資源,而且數(shù)據(jù)安全性差的問題。
【專利說明】
-種數(shù)據(jù)處理方法及其裝置
技術(shù)領(lǐng)域
[0001] 本發(fā)明設(shè)及數(shù)據(jù)庫信息管理系統(tǒng),尤其設(shè)及一種數(shù)據(jù)處理方法及其裝置。
【背景技術(shù)】
[0002] 隨著數(shù)據(jù)庫技術(shù)的不斷進(jìn)步,各行各業(yè)為了提高工作效率和服務(wù)水平,數(shù)據(jù)庫的 應(yīng)用也越來越廣泛。比如通訊、金融證券、供水、供電、氣象服務(wù)等領(lǐng)域,引入了全國統(tǒng)一服 務(wù)號碼后,對數(shù)據(jù)庫系統(tǒng)的依賴性越來越大。
[0003] 現(xiàn)有金融批處理系統(tǒng)中主控節(jié)點(diǎn)對客戶端發(fā)送來的待處理的每一個數(shù)據(jù)庫命令 請求都會發(fā)送給一個超級數(shù)據(jù)庫服務(wù)器處理,并將處理結(jié)果返回給客戶端。運(yùn)種方式會導(dǎo) 致現(xiàn)有的融批處理系統(tǒng)并發(fā)處理能力不足,無法充分利用現(xiàn)有的系統(tǒng)資源,而且數(shù)據(jù)安全 性差,一旦出現(xiàn)巖機(jī)現(xiàn)象,損失代價大。
[0004] 綜上,目前金融批處理系統(tǒng)存在并發(fā)處理能力不足,無法充分利用現(xiàn)有的系統(tǒng)資 源,而且數(shù)據(jù)安全性差的問題。
【發(fā)明內(nèi)容】
陽〇化]本發(fā)明實(shí)施例提供一種數(shù)據(jù)處理方法及其裝置,用W解決現(xiàn)有金融批處理系統(tǒng)存 在并發(fā)處理能力不足,無法充分利用現(xiàn)有的系統(tǒng)資源,而且數(shù)據(jù)安全性差的問題。
[0006] 本發(fā)明實(shí)施例包括一種數(shù)據(jù)處理方法,該方法包括:獲取客戶端發(fā)送的數(shù)據(jù)庫處 理命令集合,并依據(jù)數(shù)據(jù)庫標(biāo)識信息將所述數(shù)據(jù)庫處理命令分成多個數(shù)據(jù)庫處理子命令; 根據(jù)所述子命令中的數(shù)據(jù)庫標(biāo)識信息和數(shù)據(jù)庫服務(wù)器的對應(yīng)關(guān)系,確定每條數(shù)據(jù)庫處理子 命令中的數(shù)據(jù)庫標(biāo)識信息對應(yīng)的數(shù)據(jù)庫服務(wù)器;將所述數(shù)據(jù)庫處理子命令分別發(fā)送給對應(yīng) 的數(shù)據(jù)庫服務(wù)器;接收每個所述數(shù)據(jù)庫服務(wù)器返回的數(shù)據(jù)處理結(jié)果,并匯總所述數(shù)據(jù)處理 結(jié)果發(fā)送給所述客戶端。
[0007] 基于同樣的發(fā)明構(gòu)思,本發(fā)明實(shí)施例還包括一種數(shù)據(jù)處理裝置,該裝置包括:獲取 和拆分單元,用于獲取客戶端發(fā)送的數(shù)據(jù)庫處理命令集合,并依據(jù)數(shù)據(jù)庫標(biāo)識信息將所述 數(shù)據(jù)庫處理命令分成多個數(shù)據(jù)庫處理子命令;確定單元,用于根據(jù)所述子命令中的數(shù)據(jù)庫 標(biāo)識信息和數(shù)據(jù)庫服務(wù)器的對應(yīng)關(guān)系,確定每條數(shù)據(jù)庫處理子命令中的數(shù)據(jù)庫標(biāo)識信息對 應(yīng)的數(shù)據(jù)庫服務(wù)器;發(fā)送單元,用于將所述數(shù)據(jù)庫處理子命令分別發(fā)送給對應(yīng)的數(shù)據(jù)庫服 務(wù)器;處理數(shù)據(jù)結(jié)果單元,用于接收每個所述數(shù)據(jù)庫服務(wù)器返回的數(shù)據(jù)處理結(jié)果,并匯總所 述數(shù)據(jù)處理結(jié)果發(fā)送給所述客戶端。
[0008] 本發(fā)明實(shí)施例利用多臺分布式數(shù)據(jù)庫服務(wù)器替換了現(xiàn)有金融批處理系統(tǒng)中的超 級服務(wù)器,并且主控節(jié)點(diǎn)將客戶端發(fā)送的數(shù)據(jù)庫處理命令集合依據(jù)數(shù)據(jù)庫標(biāo)識信息將所述 數(shù)據(jù)庫處理命令分成多個數(shù)據(jù)庫處理子命令,根據(jù)所述子命令中的數(shù)據(jù)庫標(biāo)識信息和數(shù)據(jù) 庫服務(wù)器的對應(yīng)關(guān)系,確定每條數(shù)據(jù)庫處理子命令中的數(shù)據(jù)庫標(biāo)識信息對應(yīng)的數(shù)據(jù)庫服務(wù) 器,然后將所述數(shù)據(jù)庫處理子命令分別發(fā)送給對應(yīng)的數(shù)據(jù)庫服務(wù)器,完成W上動作后主控 節(jié)點(diǎn)等待每個數(shù)據(jù)庫服務(wù)器返回的數(shù)據(jù)處理結(jié)果,并匯總所述數(shù)據(jù)處理結(jié)果發(fā)送給所述客 戶端。運(yùn)樣,利用低端數(shù)據(jù)庫服務(wù)器上負(fù)載數(shù)據(jù)庫的存儲空間進(jìn)行數(shù)據(jù)處理,提升了性能和 安全性,同時提高金融批處理系統(tǒng)的并發(fā)處理能力,提高系統(tǒng)資源利用率。
【附圖說明】
[0009] 為了更清楚地說明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對實(shí)施例描述中所需要使 用的附圖作簡要介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本 領(lǐng)域的普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可W根據(jù)運(yùn)些附圖獲得其 他的附圖。
[0010] 圖1為本發(fā)明實(shí)施例提供一種數(shù)據(jù)處理方法流程示意圖;
[0011] 圖2為本發(fā)明實(shí)施例提供一種主控節(jié)點(diǎn)分發(fā)子命令到數(shù)據(jù)庫服務(wù)器的交互圖;
[0012] 圖3為本發(fā)明實(shí)施例提供一種數(shù)據(jù)庫服務(wù)器反饋數(shù)據(jù)處理結(jié)果至主控節(jié)點(diǎn)的交 互圖;
[0013] 圖4為本發(fā)明實(shí)施例還提供一種數(shù)據(jù)處理裝置。
【具體實(shí)施方式】
[0014] 為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對本發(fā)明作進(jìn) 一步地詳細(xì)描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部份實(shí)施例,而不是全部的實(shí)施 例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的 所有其它實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0015] 在互聯(lián)網(wǎng)、電信、金融等許多關(guān)鍵領(lǐng)域,隨著企業(yè)業(yè)務(wù)的不斷發(fā)展,單個數(shù)據(jù)庫已 經(jīng)很難滿足海量數(shù)據(jù)庫存儲和高并發(fā)數(shù)據(jù)訪問,分布式數(shù)據(jù)庫的出現(xiàn)成為必然,分布式數(shù) 據(jù)庫能夠有效的解決海量數(shù)據(jù)存儲和并發(fā)問題,通過數(shù)據(jù)的水平切分和數(shù)據(jù)表的垂直切 分,有效緩解了海量數(shù)據(jù)存儲,通過負(fù)載均衡、輪詢等緩解了高并發(fā)問題。
[0016] 基于分布式數(shù)據(jù)庫存在上述優(yōu)勢,于是考慮將分布式數(shù)據(jù)庫應(yīng)用于現(xiàn)有的金融批 處理系統(tǒng),于是就會出現(xiàn)如何數(shù)據(jù)庫處理命令分發(fā)至多個數(shù)據(jù)庫服務(wù)器的問題,為了解決 運(yùn)一問題提供了如下實(shí)施例。
[0017] 參見圖1所示,本發(fā)明實(shí)施例提供一種數(shù)據(jù)處理方法流程示意圖,具體地實(shí)現(xiàn)方 法包括:
[0018] 步驟S101,獲取客戶端發(fā)送的數(shù)據(jù)庫處理命令集合,并依據(jù)數(shù)據(jù)庫標(biāo)識信息將所 述數(shù)據(jù)庫處理命令分成多個數(shù)據(jù)庫處理子命令。
[0019] 步驟S102,根據(jù)所述子命令中的數(shù)據(jù)庫標(biāo)識信息和數(shù)據(jù)庫服務(wù)器的對應(yīng)關(guān)系,確 定每條數(shù)據(jù)庫處理子命令中的數(shù)據(jù)庫標(biāo)識信息對應(yīng)的數(shù)據(jù)庫服務(wù)器。
[0020] 步驟S103,將所述數(shù)據(jù)庫處理子命令分別發(fā)送給對應(yīng)的數(shù)據(jù)庫服務(wù)器。
[0021] 步驟S104,接收每個所述數(shù)據(jù)庫服務(wù)器返回的數(shù)據(jù)處理結(jié)果,并匯總所述數(shù)據(jù)處 理結(jié)果發(fā)送給所述客戶端。
[0022] 在步驟SlOl中,獲取數(shù)據(jù)處理命令中包含相同類型數(shù)據(jù)庫的命令,其中,每個數(shù) 據(jù)庫類型對應(yīng)一個數(shù)據(jù)庫標(biāo)識信息;將所述相同類型數(shù)據(jù)庫的命令劃分為一個數(shù)據(jù)庫處理 子命令。例如,主控節(jié)點(diǎn)接收來自客戶端的命令包括"insert into化1.憂11…"、"insert into化2.憂13…"、"insert into化3.憂14…",主控節(jié)點(diǎn)解析上述命令集合,得出含有 數(shù)據(jù)庫標(biāo)識信息化1、化2、化3,因此將該命令集合拆分成=個數(shù)據(jù)庫處理子命令{insert into dbl.憂??!…}、(insert into db2. tbl3..* }、(insert into db3. tbl4..*}。
[0023] 當(dāng)完成數(shù)據(jù)庫處理命令集合的拆分之后,就需要確定生成的數(shù)據(jù)庫處理子命令應(yīng) 該發(fā)送到哪個數(shù)據(jù)庫服務(wù)器,那么就設(shè)及數(shù)據(jù)庫標(biāo)識信息和數(shù)據(jù)庫服務(wù)器對應(yīng)關(guān)系的建立 問題,建立方式如下:
[0024] 獲取所述多個數(shù)據(jù)庫服務(wù)器中的數(shù)據(jù)庫類型,其中,每個數(shù)據(jù)庫類型對應(yīng)一個數(shù) 據(jù)庫標(biāo)識信息;將所述數(shù)據(jù)庫標(biāo)識信息與所述數(shù)據(jù)庫服務(wù)器建立對應(yīng)關(guān)系。
[00巧]其中,獲取所述多個數(shù)據(jù)庫服務(wù)器中的數(shù)據(jù)庫類型可W在與多個數(shù)據(jù)庫服務(wù)器建 立連接的過程中得到,也可W是在連接之后,通過發(fā)送請求消息后得到。
[0026] 例如,有S個數(shù)據(jù)庫服務(wù)器分別是數(shù)據(jù)庫服務(wù)器A、數(shù)據(jù)庫服務(wù)器B和數(shù)據(jù)庫服務(wù) 器C,其中數(shù)據(jù)庫服務(wù)器A中包括數(shù)據(jù)庫1和數(shù)據(jù)庫2,數(shù)據(jù)庫服務(wù)器B中包括數(shù)據(jù)庫3,數(shù) 據(jù)庫服務(wù)器C中包括數(shù)據(jù)庫4和數(shù)據(jù)庫5,因此預(yù)先獲取數(shù)據(jù)庫服務(wù)器中數(shù)據(jù)庫類型為1和 2,并且數(shù)據(jù)庫類型為1和2對應(yīng)的數(shù)據(jù)庫標(biāo)識信息為DBl和DB2,將數(shù)據(jù)庫標(biāo)識信息為DBl 和DB2與數(shù)據(jù)庫服務(wù)器A建立映射關(guān)系,依次類推,數(shù)據(jù)庫服務(wù)器B和DB3建立映射關(guān)系, 數(shù)據(jù)庫服務(wù)器C和DB4、DB5建立映射關(guān)系,映射關(guān)系表見表一。
[0027] 表一;
[0028]
[0029]
[0030] 可見,數(shù)據(jù)庫處理命令集合是多個數(shù)據(jù)庫操作的集合,發(fā)送到不同的數(shù)據(jù)庫服務(wù) 器的命令可W包含不同的子命令,主控節(jié)點(diǎn)可W通過一組接口將多條相同或者不同的子命 令發(fā)送到對應(yīng)的數(shù)據(jù)庫服務(wù)器上。也就是說,不同的數(shù)據(jù)庫服務(wù)器可W同時接收到不同的 數(shù)據(jù)庫處理子命令,相互之間互不影響地工作。運(yùn)樣,每解析得到一個數(shù)據(jù)庫處理子命令就 通過數(shù)據(jù)庫標(biāo)識信息在預(yù)先建立的對應(yīng)關(guān)系中找到對應(yīng)的數(shù)據(jù)庫服務(wù)器,進(jìn)而為后續(xù)的命 令發(fā)送作準(zhǔn)備。
[0031] 考慮到數(shù)據(jù)庫類型有很多種,每種類型數(shù)據(jù)庫提供的接口也不一致,那么設(shè)及數(shù) 據(jù)庫的移植、復(fù)制等的操作處理就會非常復(fù)雜,為此,本發(fā)明實(shí)施例進(jìn)一步地提供一種統(tǒng) 一的數(shù)據(jù)庫接口,W解決上述問題,具體地,獲取所述數(shù)據(jù)庫服務(wù)器中的數(shù)據(jù)庫的數(shù)據(jù)庫接 口,所述數(shù)據(jù)庫服務(wù)器中的數(shù)據(jù)庫的類型不完全相同;
[0032] 將不同類型的數(shù)據(jù)庫的數(shù)據(jù)庫接口封裝成統(tǒng)一的數(shù)據(jù)庫接口;
[0033] 根據(jù)所述統(tǒng)一的數(shù)據(jù)庫接口將所述數(shù)據(jù)庫處理子命令分別發(fā)送至與所述數(shù)據(jù)庫 處理子命令中的標(biāo)識信息對應(yīng)的數(shù)據(jù)庫服務(wù)器。
[0034] 具體地,本發(fā)明實(shí)施例所述的統(tǒng)一數(shù)據(jù)庫接口的實(shí)現(xiàn)方法主要是將各數(shù)據(jù)庫系 統(tǒng)的底層調(diào)用接口(如ORA化E的OCI,SYBA沈的DBLIB或CT LIB,INFORMIX的化I,SQL Server的DB Library)的功能相同的接口進(jìn)行封裝,為金融批處理系統(tǒng)提供統(tǒng)一的訪問數(shù) 據(jù)庫接口及其調(diào)用方法。
[0035] 與現(xiàn)有技術(shù)相比,本發(fā)明實(shí)施例所述方法由于所封裝的接口均為各數(shù)據(jù)庫系統(tǒng)的 最高效的底層調(diào)用接口,提高了數(shù)據(jù)庫的訪問速度,進(jìn)而極大地提高了系統(tǒng)的處理能力,由 于封裝了多種數(shù)據(jù)庫系統(tǒng)的底層接口,因此,只需做簡單的配置,而不需要修改源代碼,也 不需重新編譯,可直接應(yīng)用在不同的商用數(shù)據(jù)庫系統(tǒng)中,提高了系統(tǒng)的互連互通性能,大大 降低了開發(fā)和維護(hù)的成本,也極大提高了系統(tǒng)的穩(wěn)定性。
[0036] 為了充分利用主控節(jié)點(diǎn)的系統(tǒng)資源,增加了一個標(biāo)志信息,用來用于指示當(dāng)前命 令執(zhí)行狀態(tài),若指示信息為休眠狀態(tài)則釋放內(nèi)存資源等待處理結(jié)果,若指示信息為喚醒狀 態(tài)則調(diào)用內(nèi)存資源處理后續(xù)客戶端發(fā)送的數(shù)據(jù)庫處理命令集合。運(yùn)樣,若將所有的所述數(shù) 據(jù)庫處理子命令發(fā)送到對應(yīng)的數(shù)據(jù)庫服務(wù)器,則釋放內(nèi)存資源等待處理結(jié)果;若接收到所 述數(shù)據(jù)庫服務(wù)器返回的數(shù)據(jù)處理結(jié)果,則調(diào)用內(nèi)存資源處理數(shù)據(jù)處理結(jié)果,系統(tǒng)的內(nèi)存資 源被充分利用,提高了系統(tǒng)資源的利用率。
[0037] 為了更加系統(tǒng)地描述上述數(shù)據(jù)處理的過程,本發(fā)明實(shí)施例進(jìn)一步提供圖2和圖3, 通過具體舉例闡述整個數(shù)據(jù)處理的過程。
[0038] 圖2描述主控節(jié)點(diǎn)接收到數(shù)據(jù)庫處理命令集合{insert into化1.憂11…,insert into化2.憂13…,insert into化3.憂14w},將該集合按照上述拆分方法得到數(shù)據(jù)庫處 理子命令(insert into dbl.tbll--}、{insert into db2. tbl3..*}、{insert into db3. 憂14w},得到W上子命令后按照預(yù)先建立的對應(yīng)關(guān)系確定出子命令{insert into化I. tbll...}和{insert into化2.憂對應(yīng)發(fā)送至數(shù)據(jù)庫服務(wù)器1,將子命令{insert into 化3.憂14…}對應(yīng)發(fā)送至數(shù)據(jù)庫服務(wù)器2,至此完成的數(shù)據(jù)庫處理命令集合的分發(fā)。
[0039] 圖3描述當(dāng)兩個數(shù)據(jù)庫服務(wù)器完成了數(shù)據(jù)庫處理命令的處理結(jié)果,再將結(jié)果 "affected rows = l","affected rows = 2", "affected rows = 5"返回至主控節(jié)點(diǎn),當(dāng) 主控節(jié)點(diǎn)判斷所有發(fā)出的子命令均得到了反饋結(jié)果后就將收到的反饋結(jié)果匯總發(fā)送至客 戶端。
[0040] 在實(shí)際應(yīng)用過程中,主控節(jié)點(diǎn)會對一個或者多個數(shù)據(jù)庫服務(wù)器的子命令進(jìn)行同步 監(jiān)控,監(jiān)控的對象主要是數(shù)據(jù)庫服務(wù)器返回的"富"返回值,也就是說,每一條對于數(shù)據(jù)庫的 命令請求,工具都會得到例如影響條數(shù)、成功與否、出錯信息等詳細(xì)的內(nèi)容,監(jiān)控為了保證 一個數(shù)據(jù)庫處理集合的多個數(shù)據(jù)庫子命令都會得到"肯定"的答復(fù),一旦任何一個數(shù)據(jù)庫服 務(wù)器的數(shù)據(jù)庫操作出現(xiàn)了問題,主控節(jié)點(diǎn)就會認(rèn)為該命令集合執(zhí)行失敗,并自動回退所有 的子命令處理過程,而不僅僅是失敗的那一個條子命令。
[0041] 為了主控節(jié)點(diǎn)在監(jiān)控的過程中將得到的異常信息進(jìn)行統(tǒng)一處理,本發(fā)明實(shí)施例進(jìn) 一步地對異常信息進(jìn)行統(tǒng)一化處理,處理方法如下:
[0042] 步驟一:主控節(jié)點(diǎn)識別到返回了失敗的處理結(jié)果,因此主動從該失敗的處理結(jié)果 對應(yīng)的數(shù)據(jù)庫中獲取失敗原因的描述信息,并將描述信息緩存下來。
[00創(chuàng)步驟二:將失敗原因的描述信息格式化,賦予唯一的錯誤號碼ID。
[0044] 步驟=:在配置中,找到用戶所配置的異常持久化內(nèi)容(默認(rèn)是基于哈希表),并 將錯誤信息記錄在持久化層中。
[0045] 步驟四:根據(jù)錯誤號碼ID去持久化層進(jìn)行查找,解析出詳盡的錯誤信息。
[0046] 運(yùn)樣對異常信息進(jìn)行統(tǒng)一化處理,基于錯誤號碼ID查找錯誤信息將會有利于運(yùn) 維人員對于錯誤的分析,并快速提出解決方案。
[0047] 基于相同的技術(shù)構(gòu)思,本發(fā)明實(shí)施例還提供一種數(shù)據(jù)處理裝置,如圖4所示,該裝 置可執(zhí)行上述方法實(shí)施例,該裝置包括:獲取和拆分單元401、確定單元402、發(fā)送單元403, 處理數(shù)據(jù)結(jié)果單元404,其中:
[0048] 獲取和拆分單元401,用于獲取客戶端發(fā)送的數(shù)據(jù)庫處理命令集合,并依據(jù)數(shù)據(jù)庫 標(biāo)識信息將所述數(shù)據(jù)庫處理命令分成多個數(shù)據(jù)庫處理子命令;
[0049] 確定單元402,用于根據(jù)所述子命令中的數(shù)據(jù)庫標(biāo)識信息和數(shù)據(jù)庫服務(wù)器的對應(yīng) 關(guān)系,確定每條數(shù)據(jù)庫處理子命令中的數(shù)據(jù)庫標(biāo)識信息對應(yīng)的數(shù)據(jù)庫服務(wù)器;
[0050] 發(fā)送單元403,用于將所述數(shù)據(jù)庫處理子命令分別發(fā)送給對應(yīng)的數(shù)據(jù)庫服務(wù)器;
[0051] 處理數(shù)據(jù)結(jié)果單元404,用于接收每個所述數(shù)據(jù)庫服務(wù)器返回的數(shù)據(jù)處理結(jié)果,并 匯總所述數(shù)據(jù)處理結(jié)果發(fā)送給所述客戶端。
[0052] 其中,所述獲取和拆分單元401具體用于:獲取數(shù)據(jù)處理命令中包含相同類型數(shù) 據(jù)庫的命令,其中,每個數(shù)據(jù)庫類型對應(yīng)一個數(shù)據(jù)庫標(biāo)識信息;將所述相同類型數(shù)據(jù)庫的 命令劃分為一個數(shù)據(jù)庫處理子命令。例如,主控節(jié)點(diǎn)接收來自客戶端的命令包括"insert into dbl.憂 11 …"、"inse;rt into 化2.憂 13…"、"inse;rt into db3.憂 14…",主控節(jié)點(diǎn)解 析上述命令集合,得出含有數(shù)據(jù)庫標(biāo)識信息化1、化2、化3,因此將該命令集合拆分成=個數(shù) 據(jù)庫處理子命令{insert into dbl.憂1^.}、{insert into 化2.憂13w}、{insert into db3.憂 14…}。
[0053] 當(dāng)完成數(shù)據(jù)庫處理命令集合的拆分之后,就需要確定生成的數(shù)據(jù)庫處理子命令應(yīng) 該發(fā)送到哪個數(shù)據(jù)庫服務(wù)器,那么就設(shè)及數(shù)據(jù)庫標(biāo)識信息和數(shù)據(jù)庫服務(wù)器對應(yīng)關(guān)系的建立 問題,建立對應(yīng)關(guān)系單元405,用于根據(jù)下列方式建立數(shù)據(jù)庫標(biāo)識信息和數(shù)據(jù)庫服務(wù)器的對 應(yīng)關(guān)系:
[0054] 獲取所述多個數(shù)據(jù)庫服務(wù)器中的數(shù)據(jù)庫類型,其中,每個數(shù)據(jù)庫類型對應(yīng)一個數(shù) 據(jù)庫標(biāo)識信息;將所述數(shù)據(jù)庫標(biāo)識信息與所述數(shù)據(jù)庫服務(wù)器建立對應(yīng)關(guān)系。 陽化5] 其中,獲取所述多個數(shù)據(jù)庫服務(wù)器中的數(shù)據(jù)庫類型可W在與多個數(shù)據(jù)庫服務(wù)器建 立連接的過程中得到,也可W是在連接之后,通過發(fā)送請求消息后得到。
[0056] 例如,有S個數(shù)據(jù)庫服務(wù)器分別是數(shù)據(jù)庫服務(wù)器A、數(shù)據(jù)庫服務(wù)器B和數(shù)據(jù)庫服務(wù) 器C,其中數(shù)據(jù)庫服務(wù)器A中包括數(shù)據(jù)庫1和數(shù)據(jù)庫2,數(shù)據(jù)庫服務(wù)器B中包括數(shù)據(jù)庫3,數(shù) 據(jù)庫服務(wù)器C中包括數(shù)據(jù)庫4和數(shù)據(jù)庫5,因此預(yù)先獲取數(shù)據(jù)庫服務(wù)器中數(shù)據(jù)庫類型為1和 2,并且數(shù)據(jù)庫類型為1和2對應(yīng)的數(shù)據(jù)庫標(biāo)識信息為DBl和DB2,將數(shù)據(jù)庫標(biāo)識信息為DBl 和DB2與數(shù)據(jù)庫服務(wù)器A建立映射關(guān)系,依次類推,數(shù)據(jù)庫服務(wù)器B和DB3建立映射關(guān)系, 數(shù)據(jù)庫服務(wù)器C和DB4、DB5建立映射關(guān)系,映射關(guān)系表見表一。
[0057] 考慮到數(shù)據(jù)庫類型有很多種,每種類型數(shù)據(jù)庫提供的接口也不一致,那么設(shè)及數(shù) 據(jù)庫的移植、復(fù)制等的操作處理就會非常復(fù)雜,為此,本發(fā)明實(shí)施例進(jìn)一步地提供一種統(tǒng)一 的數(shù)據(jù)庫接口,W解決上述問題,所述發(fā)送單元403具體用于:
[0058] 獲取所述數(shù)據(jù)庫服務(wù)器中的數(shù)據(jù)庫的數(shù)據(jù)庫接口,所述數(shù)據(jù)庫服務(wù)器中的數(shù)據(jù)庫 的類型不完全相同;將不同類型的數(shù)據(jù)庫的數(shù)據(jù)庫接口封裝成統(tǒng)一的數(shù)據(jù)庫接口;根據(jù)所 述統(tǒng)一的數(shù)據(jù)庫接口將所述數(shù)據(jù)庫處理子命令分別發(fā)送至與所述數(shù)據(jù)庫處理子命令中的 標(biāo)識信息對應(yīng)的數(shù)據(jù)庫服務(wù)器。
[0059] 可見,采用運(yùn)種統(tǒng)一的數(shù)據(jù)庫接口的方式可W兼容異構(gòu)數(shù)據(jù)庫,例如,同樣的插入 操作代理(InsertAction),對于化和DB2的行為是完全不一樣的,兼容異構(gòu)數(shù)據(jù)庫所帶 來的另外一個好處是,當(dāng)用戶需要調(diào)整底層的數(shù)據(jù)庫實(shí)現(xiàn),或者希望采用非數(shù)據(jù)庫的方式 進(jìn)行測試(通常所說的Mock測試),運(yùn)樣的設(shè)計(jì)就會帶來極大的方便。舉例來說,如果系統(tǒng) 調(diào)整,需要將MS化調(diào)整為DB2,那么唯一的修改就在于"選擇數(shù)據(jù)庫模型"運(yùn)一步驟上,將 化的數(shù)據(jù)庫模型調(diào)整為DB2即可,其他的都不需要進(jìn)行變動。
[0060] 對于應(yīng)用程序而言,運(yùn)樣的優(yōu)化調(diào)整是不可見的。
[0061] 例如,對于MS化來說,如果我們需要實(shí)現(xiàn)的是"插入,當(dāng)出現(xiàn)主鍵或者唯一鍵重 復(fù)時進(jìn)行更新操作"運(yùn)樣的需求,那么裝置將會檢查所傳入的語句的合理性,并視情況,優(yōu) 化成MS化的REPLACE語句。然而,同樣的需求對于DB2而言,是通過MERGE INTO語句實(shí) 現(xiàn)的。運(yùn)也正是體現(xiàn)出了不同的底層數(shù)據(jù)庫對于優(yōu)化語句的影響,通過在應(yīng)用層就將語句 進(jìn)行優(yōu)化可W盡可能地加速操作的執(zhí)行。
[0062] 為了充分利用主控節(jié)點(diǎn)的系統(tǒng)資源,增加了一個資源回收單元406,用于若將所有 的所述數(shù)據(jù)庫處理子命令發(fā)送到對應(yīng)的數(shù)據(jù)庫服務(wù)器,則釋放內(nèi)存資源等待處理結(jié)果;若 接收到所述數(shù)據(jù)庫服務(wù)器返回的數(shù)據(jù)處理結(jié)果,則調(diào)用內(nèi)存資源處理數(shù)據(jù)處理結(jié)果。運(yùn)樣, 系統(tǒng)的內(nèi)存資源被充分利用,提高了系統(tǒng)資源的利用率。
[0063] 該裝置在實(shí)際使用時,通常W應(yīng)用程序的形成呈現(xiàn),即應(yīng)用程序做為一個數(shù)據(jù)處 理的工具被主控節(jié)點(diǎn)加載,運(yùn)段應(yīng)用程序統(tǒng)一使用W下六個步驟的方式進(jìn)行應(yīng)用:
[0064] 步驟A :定義連接信息,也就是選擇數(shù)據(jù)庫模型,并向工具傳遞數(shù)據(jù)庫連接信息, 如果需要針對分布式數(shù)據(jù)庫服務(wù)器的操作,那么需要傳遞多個連接信息,具體地,選擇數(shù)據(jù) 庫模型(比如目標(biāo)數(shù)據(jù)庫是MYSQL那么就選擇MS化模型,如果是DB2,則選擇DB2模型); 整理具體的連接信息,包括IP,端口,用戶名和密碼等;將連接信息通過某種方式傳遞到數(shù) 據(jù)庫模型中。 陽0化]步驟B :連接數(shù)據(jù)庫群,也就是向已經(jīng)注冊的數(shù)據(jù)庫群發(fā)送連接請求,試圖連接上 運(yùn)些數(shù)據(jù)庫群。調(diào)整數(shù)據(jù)庫模型的連接參數(shù)(超時時間,重試次數(shù)等),使其符合應(yīng)用程序 的需求。調(diào)用數(shù)據(jù)庫模型的連接方法異步連接到所有注冊的數(shù)據(jù)庫節(jié)點(diǎn)上。
[0066] 步驟C:生成對應(yīng)代理,也就是根據(jù)具體的操作類型(增、刪、改、查等)獲取到具 體的代理類型,并提供細(xì)節(jié)參數(shù),具體地,根據(jù)操作的類型從數(shù)據(jù)庫模型中獲取到具體的任 務(wù)代理;設(shè)置代理的相關(guān)屬性,W期滿足應(yīng)用程序的要求。
[0067] 步驟D :準(zhǔn)備任務(wù),也就是明確對于一個或者多個數(shù)據(jù)庫的操作,并整理成一個任 務(wù),具體地,根據(jù)操作的類型從數(shù)據(jù)庫模型中獲取到具體的任務(wù)代理;設(shè)置代理的相關(guān)屬 性,W期滿足應(yīng)用程序的要求。
[0068] 步驟E :執(zhí)行任務(wù),也就是通過工具的接口執(zhí)行任務(wù),具體地,通過執(zhí)行代理執(zhí)行 相關(guān)的任務(wù),運(yùn)里提供了多種方式,例如對于一個、一組甚至所有的已經(jīng)連接的數(shù)據(jù)庫進(jìn)行 相同或者不同的操作;獲取到任務(wù)的返回值,供應(yīng)用程序使用。
[0069] 步驟F :捕獲異常,也就是為了應(yīng)對可能發(fā)生的任何異常,都通過統(tǒng)一的流程捕 獲,W便進(jìn)一步的異常流程處理,具體地,由工具托管檢查每一個步驟的步驟,一旦出現(xiàn)了 錯誤,立刻向應(yīng)用程序進(jìn)行匯報,并及時保留現(xiàn)場。
[0070] W上應(yīng)用程序的使用需要強(qiáng)調(diào)的有如下幾點(diǎn):第一:整個流程沒有"斷開連接"、 "釋放資源"之類的操作。運(yùn)是因?yàn)橐坏?yīng)用程序選擇使用了本工具,那么所有的與釋放資 源相關(guān)的內(nèi)容都由工具所托管,從而能有效減輕應(yīng)用程序的壓力,從而不用整天在那里進(jìn) 行判斷。第二:工具其實(shí)提供了兩種異常捕獲的方式,一種是通過傳統(tǒng)的"走一步看一步" 的思路,即每做一次操作,工具都會檢查運(yùn)一步操作的正確性。第二種是通過高級編程語言 所提提供的異常機(jī)制,具有跳轉(zhuǎn)的意味。運(yùn)里推薦使用第二種方式。第=:工具所提供的步 驟雖然看上去比傳統(tǒng)的"連接-執(zhí)行-斷開連接"的數(shù)據(jù)庫操作方式來得復(fù)雜,但是由于每 一個步驟的目標(biāo)明確性,卻更容易被接受和運(yùn)用。運(yùn)是因?yàn)椋瑐鹘y(tǒng)思路上的"執(zhí)行"更可W 分為"準(zhǔn)備-綁定-輸入?yún)?shù)-執(zhí)行-檢查結(jié)果"等多個步驟,而運(yùn)里,卻由工具來為應(yīng)用 程序執(zhí)行"準(zhǔn)備-綁定"W及"檢查結(jié)果"的工作。第四:整個流程與底層數(shù)據(jù)庫的選擇無 關(guān)。即無論底層的數(shù)據(jù)庫如何變動,幾乎所有的工作都不需要重新修改,只要在選擇數(shù)據(jù)庫 模型那里調(diào)整模型的類型即可。
[0071] 綜上所述,本發(fā)明實(shí)施例利用多臺分布式數(shù)據(jù)庫服務(wù)器替換了現(xiàn)有金融批處理系 統(tǒng)中的超級服務(wù)器,并且主控節(jié)點(diǎn)將客戶端發(fā)送的數(shù)據(jù)庫處理命令集合依據(jù)數(shù)據(jù)庫標(biāo)識信 息將所述數(shù)據(jù)庫處理命令分成多個數(shù)據(jù)庫處理子命令,根據(jù)所述子命令中的數(shù)據(jù)庫標(biāo)識信 息和數(shù)據(jù)庫服務(wù)器的對應(yīng)關(guān)系,確定每條數(shù)據(jù)庫處理子命令中的數(shù)據(jù)庫標(biāo)識信息對應(yīng)的數(shù) 據(jù)庫服務(wù)器,然后將所述數(shù)據(jù)庫處理子命令分別發(fā)送給對應(yīng)的數(shù)據(jù)庫服務(wù)器,完成W上動 作后主控節(jié)點(diǎn)等待每個數(shù)據(jù)庫服務(wù)器返回的數(shù)據(jù)處理結(jié)果,并匯總所述數(shù)據(jù)處理結(jié)果發(fā)送 給所述客戶端。運(yùn)樣,利用低端數(shù)據(jù)庫服務(wù)器上負(fù)載數(shù)據(jù)庫的存儲空間進(jìn)行數(shù)據(jù)處理,提升 了性能和安全性,同時提高金融批處理系統(tǒng)的并發(fā)處理能力,提高系統(tǒng)資源利用率。
[0072] 本發(fā)明是參照根據(jù)本發(fā)明實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程 圖和/或方框圖來描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一 流程和/或方框、W及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻\(yùn)些計(jì)算 機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理 器W產(chǎn)生一個機(jī)器,使得通過計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生 用于實(shí)現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能 的裝置。
[0073] 運(yùn)些計(jì)算機(jī)程序指令也可存儲在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備W特 定方式工作的計(jì)算機(jī)可讀存儲器中,使得存儲在該計(jì)算機(jī)可讀存儲器中的指令產(chǎn)生包括指 令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或 多個方框中指定的功能。
[0074] 運(yùn)些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì) 算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟W產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或 其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個流程或多個流程和/或方框圖 一個方框或多個方框中指定的功能的步驟。
[00巧]盡管已描述了本發(fā)明的優(yōu)選實(shí)施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造 性概念,則可對運(yùn)些實(shí)施例作出另外的變更和修改。所W,所附權(quán)利要求意欲解釋為包括優(yōu) 選實(shí)施例W及落入本發(fā)明范圍的所有變更和修改。
[0076] 顯然,本領(lǐng)域的技術(shù)人員可W對本發(fā)明進(jìn)行各種改動和變型而不脫離本發(fā)明的精 神和范圍。運(yùn)樣,倘若本發(fā)明的運(yùn)些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍 之內(nèi),則本發(fā)明也意圖包含運(yùn)些改動和變型在內(nèi)。
【主權(quán)項(xiàng)】
1. 一種數(shù)據(jù)處理方法,其特征在于,該方法包括: 獲取客戶端發(fā)送的數(shù)據(jù)庫處理命令集合,并依據(jù)數(shù)據(jù)庫標(biāo)識信息將所述數(shù)據(jù)庫處理命 令分成多個數(shù)據(jù)庫處理子命令; 根據(jù)所述子命令中的數(shù)據(jù)庫標(biāo)識信息和數(shù)據(jù)庫服務(wù)器的對應(yīng)關(guān)系,確定每條數(shù)據(jù)庫處 理子命令中的數(shù)據(jù)庫標(biāo)識信息對應(yīng)的數(shù)據(jù)庫服務(wù)器; 將所述數(shù)據(jù)庫處理子命令分別發(fā)送給對應(yīng)的數(shù)據(jù)庫服務(wù)器; 接收每個所述數(shù)據(jù)庫服務(wù)器返回的數(shù)據(jù)處理結(jié)果,并匯總所述數(shù)據(jù)處理結(jié)果發(fā)送給所 述客戶端。2. 如權(quán)利要求1所述的方法,其特征在于,根據(jù)下列方式建立數(shù)據(jù)庫標(biāo)識信息和數(shù)據(jù) 庫服務(wù)器的對應(yīng)關(guān)系: 獲取所述多個數(shù)據(jù)庫服務(wù)器中的數(shù)據(jù)庫類型,其中每個數(shù)據(jù)庫類型對應(yīng)一個數(shù)據(jù)庫標(biāo) 識信息; 將獲取的所述數(shù)據(jù)庫標(biāo)識信息與對應(yīng)的所述數(shù)據(jù)庫服務(wù)器建立對應(yīng)關(guān)系。3. 如權(quán)利要求1所述的方法,其特征在于,將所述數(shù)據(jù)庫處理子命令分別發(fā)送給對應(yīng) 的數(shù)據(jù)庫服務(wù)器,包括: 獲取所述數(shù)據(jù)庫服務(wù)器中的數(shù)據(jù)庫的數(shù)據(jù)庫接口,所述數(shù)據(jù)庫服務(wù)器中的數(shù)據(jù)庫的類 型不完全相同; 將不同類型的數(shù)據(jù)庫的數(shù)據(jù)庫接口封裝成統(tǒng)一的數(shù)據(jù)庫接口; 根據(jù)所述統(tǒng)一的數(shù)據(jù)庫接口將所述數(shù)據(jù)庫處理子命令分別發(fā)送至與所述數(shù)據(jù)庫處理 子命令中的標(biāo)識信息對應(yīng)的數(shù)據(jù)庫服務(wù)器。4. 如權(quán)利要求1所述的方法,其特征在于,將所述數(shù)據(jù)庫處理子命令分別發(fā)送給對應(yīng) 的數(shù)據(jù)庫服務(wù)器之后,包括: 若將所有的所述數(shù)據(jù)庫處理子命令發(fā)送到對應(yīng)的數(shù)據(jù)庫服務(wù)器,則釋放內(nèi)存資源; 若接收到所述數(shù)據(jù)庫服務(wù)器返回的數(shù)據(jù)處理結(jié)果,則調(diào)用內(nèi)存資源處理數(shù)據(jù)處理結(jié) 果。5. 如權(quán)利要求1所述的方法,其特征在于,所述依據(jù)數(shù)據(jù)庫標(biāo)識信息將所述數(shù)據(jù)庫處 理命令分成多個數(shù)據(jù)庫處理子命令,包括: 獲取數(shù)據(jù)處理命令中包含相同類型數(shù)據(jù)庫的命令,其中,每個數(shù)據(jù)庫類型對應(yīng)一個數(shù) 據(jù)庫標(biāo)識信息; 將所述相同類型數(shù)據(jù)庫的命令劃分為一個數(shù)據(jù)庫處理子命令。6. -種數(shù)據(jù)處理裝置,其特征在于,該裝置包括: 獲取和拆分單元,用于獲取客戶端發(fā)送的數(shù)據(jù)庫處理命令集合,并依據(jù)數(shù)據(jù)庫標(biāo)識信 息將所述數(shù)據(jù)庫處理命令分成多個數(shù)據(jù)庫處理子命令; 確定單元,用于根據(jù)所述子命令中的數(shù)據(jù)庫標(biāo)識信息和數(shù)據(jù)庫服務(wù)器的對應(yīng)關(guān)系,確 定每條數(shù)據(jù)庫處理子命令中的數(shù)據(jù)庫標(biāo)識信息對應(yīng)的數(shù)據(jù)庫服務(wù)器; 發(fā)送單元,用于將所述數(shù)據(jù)庫處理子命令分別發(fā)送給對應(yīng)的數(shù)據(jù)庫服務(wù)器; 處理數(shù)據(jù)結(jié)果單元,用于接收每個所述數(shù)據(jù)庫服務(wù)器返回的數(shù)據(jù)處理結(jié)果,并匯總所 述數(shù)據(jù)處理結(jié)果發(fā)送給所述客戶端。7. 如權(quán)利要求6所述的裝置,其特征在于,所述裝置還包括: 建立對應(yīng)關(guān)系單元,用于根據(jù)下列方式建立數(shù)據(jù)庫標(biāo)識信息和數(shù)據(jù)庫服務(wù)器的對應(yīng)關(guān) 系: 連接多個數(shù)據(jù)庫服務(wù)器,并獲取所述多個數(shù)據(jù)庫服務(wù)器中的數(shù)據(jù)庫類型,其中,每個數(shù) 據(jù)庫類型對應(yīng)一個數(shù)據(jù)庫標(biāo)識信息; 將所述數(shù)據(jù)庫標(biāo)識信息與所述數(shù)據(jù)庫服務(wù)器建立對應(yīng)關(guān)系。8. 如權(quán)利要求6所述的裝置,其特征在于,所述發(fā)送單元具體用于: 獲取所述數(shù)據(jù)庫服務(wù)器中的數(shù)據(jù)庫的數(shù)據(jù)庫接口,所述數(shù)據(jù)庫服務(wù)器中的數(shù)據(jù)庫的類 型不完全相同; 將不同類型的數(shù)據(jù)庫的數(shù)據(jù)庫接口封裝成統(tǒng)一的數(shù)據(jù)庫接口; 根據(jù)所述統(tǒng)一的數(shù)據(jù)庫接口將所述數(shù)據(jù)庫處理子命令分別發(fā)送至與所述數(shù)據(jù)庫處理 子命令中的標(biāo)識信息對應(yīng)的數(shù)據(jù)庫服務(wù)器。9. 如權(quán)利要求6所述的裝置,其特征在于,所述裝置還包括: 資源回收單元,用于若完全將所述數(shù)據(jù)庫處理子命令發(fā)送到對應(yīng)的數(shù)據(jù)庫服務(wù)器,則 釋放內(nèi)存資源等待處理結(jié)果; 若接收到所述數(shù)據(jù)庫服務(wù)器返回的數(shù)據(jù)處理結(jié)果,則調(diào)用內(nèi)存資源處理數(shù)據(jù)處理結(jié) 果。10. 如權(quán)利要求6所述的裝置,其特征在于,所述獲取和拆分單元具體用于: 獲取數(shù)據(jù)處理命令中包含相同類型數(shù)據(jù)庫的命令,其中,每個數(shù)據(jù)庫類型對應(yīng)一個數(shù) 據(jù)庫標(biāo)識信息; 將所述相同類型數(shù)據(jù)庫的命令劃分為一個數(shù)據(jù)庫處理子命令。
【文檔編號】G06F21/62GK105956481SQ201510593781
【公開日】2016年9月21日
【申請日】2015年9月17日
【發(fā)明人】艾智杰, 吳金壇, 呂伊蒙, 馮哲
【申請人】中國銀聯(lián)股份有限公司