欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種實現(xiàn)數(shù)據(jù)庫訪問的方法、系統(tǒng)和裝置的制作方法

文檔序號:6563710閱讀:270來源:國知局

專利名稱::一種實現(xiàn)數(shù)據(jù)庫訪問的方法、系統(tǒng)和裝置的制作方法
技術(shù)領(lǐng)域
:本發(fā)明涉及應(yīng)用數(shù)據(jù)庫的技術(shù),特別是涉及一種實現(xiàn)數(shù)據(jù)庫訪問的方法、系統(tǒng)和裝置。
背景技術(shù)
:隨著應(yīng)用數(shù)據(jù)庫技術(shù)的發(fā)展,各行各業(yè)使用數(shù)據(jù)庫為人們提供服務(wù)業(yè)務(wù)的情況越來越廣泛,比如銀行業(yè)務(wù)系統(tǒng)等。需要訪問數(shù)據(jù)庫的系統(tǒng)稱為應(yīng)用系統(tǒng),當需要訪問數(shù)據(jù)庫時,所述應(yīng)用系統(tǒng)通過數(shù)據(jù)訪問服務(wù)系統(tǒng)(DAS)對數(shù)據(jù)庫進行操作,達到訪問的目的,這里所述數(shù)據(jù)庫操作通常包括增加、刪除、更新或查詢等?,F(xiàn)有技術(shù)中,如果數(shù)據(jù)庫發(fā)生故障,比如無法與數(shù)據(jù)庫連接等,應(yīng)用系統(tǒng)就不能實現(xiàn)數(shù)據(jù)庫訪問,所有與數(shù)據(jù)庫相關(guān)的業(yè)務(wù)都將癱瘓,這無疑給運營商、設(shè)備商和終端用戶帶來較大的損失,不利于業(yè)務(wù)的推廣。
發(fā)明內(nèi)容本發(fā)明提供一種實現(xiàn)數(shù)據(jù)庫訪問的方法、系統(tǒng)和裝置,可以在數(shù)據(jù)庫發(fā)生故障的情況下,先直接向應(yīng)用系統(tǒng)返回操作成功的信息,當數(shù)據(jù)庫恢復(fù)正常時,才實現(xiàn)對數(shù)據(jù)庫的操作,從而可以增強用戶的體驗效果,提高重新訪問數(shù)據(jù)庫的效率。針對本發(fā)明的第一個目的,提出的技術(shù)方案為一種實現(xiàn)數(shù)據(jù)庫訪問的方法,該方法包括以下步驟A、應(yīng)用系統(tǒng)向數(shù)據(jù)訪問服務(wù)系統(tǒng)DAS發(fā)送數(shù)據(jù)庫操作指令,DAS根據(jù)與數(shù)據(jù)庫進行連接的結(jié)果確定出數(shù)據(jù)庫發(fā)生故障;B、所述DAS保存所述數(shù)據(jù)庫操作指令,并向應(yīng)用系統(tǒng)返回數(shù)據(jù)庫操作成功的信息;C、所述DAS實時檢測數(shù)據(jù)庫是否恢復(fù)正常,如果恢復(fù)正常,則根據(jù)事先保存的數(shù)據(jù)庫操作指令對數(shù)據(jù)庫進行操作。上述方案中,步驟A所述確定數(shù)據(jù)庫發(fā)生故障的方法為所述DAS發(fā)起對數(shù)據(jù)庫的連接,如果連接失敗,則確定數(shù)據(jù)庫發(fā)生故障;或者,在所述步驟A之前進一步包括設(shè)置數(shù)據(jù)庫狀態(tài)變量,并定時對數(shù)據(jù)庫進行連接測試,如果連接失敗,則將數(shù)據(jù)庫狀態(tài)變量設(shè)置為表示故障的值,否則設(shè)置為表示正常的值;步驟A所述確定數(shù)據(jù)庫發(fā)生故障的方法為DAS查詢數(shù)據(jù)庫狀態(tài)變量,并根據(jù)數(shù)據(jù)庫狀態(tài)變量確定數(shù)據(jù)庫發(fā)生故障。上述方案中,步驟C所述實時檢測數(shù)據(jù)庫是否恢復(fù)正常的方法為所述DAS發(fā)起對數(shù)據(jù)庫的連接,如果連接失敗,則重新發(fā)起對數(shù)據(jù)庫的連接;如果連接成功,則確定數(shù)據(jù)庫恢復(fù)正常;或者,所述步驟A之前進一步包括預(yù)先設(shè)置數(shù)據(jù)庫狀態(tài)變量,并定時對數(shù)據(jù)庫進行連接測試,如果連接失敗,則將數(shù)據(jù)庫狀態(tài)變量設(shè)置為表示故障的值,否則設(shè)置為表示正常的值;步驟C所述實時檢測數(shù)據(jù)庫是否恢復(fù)正常的方法為DAS實時查詢數(shù)據(jù)庫狀態(tài)變量,如果數(shù)據(jù)庫狀態(tài)變量為表示正常的值,則確定數(shù)據(jù)庫恢復(fù)正常。上述方案中,預(yù)先建立用于保存操作指令的日志文件,步驟A所述保存數(shù)據(jù)庫操作指令為將數(shù)據(jù)庫操作指令保存在建立的日志文件中。上述方案中,所述數(shù)據(jù)庫操作指令為增加、刪除或更新。上述方案中,預(yù)先在應(yīng)用系統(tǒng)本地建立用于保存靜態(tài)數(shù)據(jù)的單表數(shù)據(jù)文件,并定時將數(shù)據(jù)庫中靜態(tài)數(shù)據(jù)保存到單表數(shù)據(jù)文件中,當應(yīng)用系統(tǒng)需要查詢數(shù)據(jù)庫時,該方法進一步包括X1、所述應(yīng)用系統(tǒng)向DAS發(fā)送查詢指令,DAS根據(jù)與數(shù)據(jù)庫進行連接的結(jié)果確定數(shù)據(jù)庫發(fā)生故障;X2、所述DAS根據(jù)查詢指令查詢本地的單表數(shù)據(jù)文件,并將查詢結(jié)果返回給應(yīng)用系統(tǒng)。針對第二個發(fā)明目的,本發(fā)明提出的技術(shù)方案為一種實現(xiàn)數(shù)據(jù)庫訪問的系統(tǒng),該系統(tǒng)包括應(yīng)用系統(tǒng)、DAS、數(shù)據(jù)庫和第一存儲模塊,其中,所述應(yīng)用系統(tǒng),用于向數(shù)據(jù)訪問系統(tǒng)DAS發(fā)送數(shù)據(jù)庫操作指令,并接收從DAS返回的信息;DAS,用于接收來自應(yīng)用系統(tǒng)的數(shù)據(jù)庫操作指令,與數(shù)據(jù)庫進行連接和操作,將數(shù)據(jù)庫操作指令保存在第一存儲模塊中,并向應(yīng)用系統(tǒng)返回操作成功的信息;第一存儲模塊,用于保存數(shù)據(jù)庫操作指令。上述方案中,所述DAS包括DAS指令分析模塊,用于分析來自應(yīng)用系統(tǒng)的數(shù)據(jù)庫操作指令,從連接池模塊中獲取連接失敗信息,保存數(shù)據(jù)庫操作指令,向應(yīng)用系統(tǒng)返回數(shù)據(jù)庫操作成功的信息;連接池模塊,用于檢測與數(shù)據(jù)庫的連接,將連接失敗信息傳輸給DAS指令分析模塊,建立與數(shù)據(jù)庫的連接并傳輸給業(yè)務(wù)線程池;業(yè)務(wù)線程池模塊,用于分配線程,從連接池模塊中獲取連接,對數(shù)據(jù)庫進行操作。上述方案中,該系統(tǒng)進一步包括用于保存單表數(shù)據(jù)文件的第二存儲模塊;所述應(yīng)用系統(tǒng)進一步用于向DAS發(fā)送查詢指令,并接收返回的查詢結(jié)果;所述DAS進一步用于查詢第二存儲模塊中單表數(shù)據(jù)文件,并返回查詢結(jié)果。針對第三個發(fā)明目的,本發(fā)明提出的技術(shù)方案為一種實現(xiàn)數(shù)據(jù)庫訪問的裝置,所述裝置為DAS,所述DAS包括DAS指令分析模塊,用于分析來自應(yīng)用系統(tǒng)的數(shù)據(jù)庫操作指令,從連接池模塊中獲取連接失敗信息,并保存數(shù)據(jù)庫操作指令;連接池模塊,用于檢測與數(shù)據(jù)庫的連接,將連接失敗信息傳輸給DAS指令分析模塊,建立與數(shù)據(jù)庫的連接并傳輸給業(yè)務(wù)線程池;業(yè)務(wù)線程池模塊,用于分配線程,從連接池模塊中獲取連接,對數(shù)據(jù)庫進行操作。綜上所述,本發(fā)明提出一種實現(xiàn)數(shù)據(jù)庫訪問的方法和系統(tǒng),在數(shù)據(jù)庫發(fā)生故障的情況下,可以先保存數(shù)據(jù)庫操作指令,等待數(shù)據(jù)庫恢復(fù)正常,一旦恢復(fù)正常,DAS就立即利用保存的數(shù)據(jù)庫操作指令對數(shù)據(jù)庫進行訪問,實現(xiàn)對數(shù)據(jù)庫的增加、刪除或更新等操作。而如果需要查詢某靜態(tài)數(shù)據(jù),則可以直接在DAS本地進行查詢并返回結(jié)果。這樣,可以達到增強用戶體驗效果的目的,進一步地,由于可以由DAS自動對數(shù)據(jù)庫進行重新訪問,無需應(yīng)用系統(tǒng)干預(yù),可以提高重新訪問數(shù)據(jù)庫的效率。圖1是本發(fā)明方法的流程圖;圖2是本發(fā)明實施例中的用例示意圖;圖3是實施例中實現(xiàn)數(shù)據(jù)庫訪問的流程圖;圖4是實施例中重新訪問數(shù)據(jù)庫的流程圖;圖5是實施例中查詢單表數(shù)據(jù)的流程圖;圖6是本發(fā)明系統(tǒng)的基本結(jié)構(gòu)示意圖;圖7是數(shù)據(jù)訪問服務(wù)系統(tǒng)DAS的內(nèi)部結(jié)構(gòu)示意圖。具體實施例方式為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖及具體實施例對本發(fā)明作進一步地詳細描述。本發(fā)明的基本思想是不管數(shù)據(jù)庫是否發(fā)生故障,當數(shù)據(jù)訪問系統(tǒng)(DAS)接收到來自應(yīng)用系統(tǒng)的數(shù)據(jù)庫操作指令時,都返回操作成功的信息并保存該數(shù)據(jù)庫操作指令。如果數(shù)據(jù)庫發(fā)生故障,則DAS在數(shù)據(jù)庫恢復(fù)正常之后,再根據(jù)保存的數(shù)據(jù)庫操作指令進行操作。圖1是本發(fā)明的流程圖。如圖1所示,在數(shù)據(jù)庫發(fā)生故障的情況下,本發(fā)明包括以下步驟步驟101應(yīng)用系統(tǒng)向DAS發(fā)送數(shù)據(jù)庫操作指令,DAS根據(jù)與數(shù)據(jù)庫進行連接的結(jié)果確定數(shù)據(jù)庫發(fā)生故障。本步驟中,所述DAS確定數(shù)據(jù)庫發(fā)生故障可以有兩種方法一種是當接收到數(shù)據(jù)庫操作指令時,DAS就發(fā)起對數(shù)據(jù)庫的連接,如果連接失敗,則可以確定數(shù)據(jù)庫發(fā)生故障。另外一種是預(yù)先設(shè)置數(shù)據(jù)庫狀態(tài)變量,并定時對數(shù)據(jù)庫進行連接測試,如果連接失敗,則將數(shù)據(jù)庫狀態(tài)變量設(shè)置為表示故障的值,否則設(shè)置為表示正常的值;此后,如果接收到數(shù)據(jù)庫操作指令,DAS就可以直接查詢數(shù)據(jù)庫狀態(tài)變量,根據(jù)數(shù)據(jù)庫狀態(tài)變量確定數(shù)據(jù)庫發(fā)生故障。步驟102所述DAS保存所述數(shù)據(jù)庫操作指令,并向應(yīng)用系統(tǒng)返回數(shù)據(jù)庫操作成功的信息。步驟103所述DAS實時檢測數(shù)據(jù)庫是否恢復(fù)正常,如果恢復(fù)正常,則根據(jù)事先保存的數(shù)據(jù)庫操作指令對數(shù)據(jù)庫進行操作。本步驟中,所述實時聯(lián)測數(shù)據(jù)庫是否恢復(fù)正常的方法也可以有兩種方法一種方法是DAS發(fā)起對數(shù)據(jù)庫的連接,如果連接失敗,則返回發(fā)起對數(shù)據(jù)庫連接的步驟;如果連接成功,則確定數(shù)據(jù)庫恢復(fù)正常。也就是說,DAS不斷地與數(shù)據(jù)庫進行連接,一旦連接成功,就可以在后續(xù)的步驟中對數(shù)據(jù)庫進行操作。另外一種方法是預(yù)先設(shè)置數(shù)據(jù)庫狀態(tài)變量,并定時對數(shù)據(jù)庫進行連接測試,如果連接失敗,則將數(shù)據(jù)庫狀態(tài)變量設(shè)置為表示故障的值,否則設(shè)置為表示正常的值。那么,DAS可以實時查詢數(shù)據(jù)庫狀態(tài)變量,如果數(shù)據(jù)庫狀態(tài)變量為表示正常的值,則確定數(shù)據(jù)庫恢復(fù)正常。需要注意的是,本發(fā)明所述的方法適合于改變數(shù)據(jù)庫內(nèi)容的操作,比如增加、刪除或更新。實際應(yīng)用中,如果需要查詢數(shù)據(jù)庫,即本身不改變數(shù)據(jù)庫內(nèi)容,但需要數(shù)據(jù)庫返回被查詢的數(shù)據(jù)或記錄,就可以利用以下方法進行查詢預(yù)先在應(yīng)用系統(tǒng)本地建立用于保存靜態(tài)數(shù)據(jù)的單表數(shù)據(jù)文件,并定時將數(shù)據(jù)庫中靜態(tài)數(shù)據(jù)保存在單表數(shù)據(jù)文件中,當應(yīng)用系統(tǒng)需要查詢數(shù)據(jù)庫時,X1、所述應(yīng)用系統(tǒng)向DAS發(fā)送查詢指令,DAS根據(jù)與數(shù)據(jù)庫進行連接的結(jié)果確定數(shù)據(jù)庫發(fā)生故障;X2、所述DAS根據(jù)查詢指令查詢本地的單表數(shù)據(jù)文件,并將查詢結(jié)果返回給應(yīng)用系統(tǒng)。所述的靜態(tài)數(shù)據(jù)指預(yù)先定義的用戶信息等數(shù)據(jù),這些靜態(tài)數(shù)據(jù)可以保存在單表中,查詢比較簡單,即無需根據(jù)多個表進行聯(lián)合查詢。在這種情況下,就可以將用戶常用的一些靜態(tài)數(shù)據(jù)定時導(dǎo)出,保存到所述單表數(shù)據(jù)文件,如果數(shù)據(jù)庫發(fā)生故障,DAS可以直接查詢所述的單表數(shù)據(jù)文件。為了更好地說明本發(fā)明方案,下面用實施例進行詳細描述。本實施例中,DAS預(yù)先建立了兩種文件,一個是保存數(shù)據(jù)庫操作指令的日志文件Filel,另一個是保存靜態(tài)數(shù)據(jù)的單表數(shù)據(jù)文件File2,數(shù)據(jù)庫名稱為DB1。圖2是本實施例針對數(shù)據(jù)庫故障模式的用例圖。如圖2所示,應(yīng)用系統(tǒng)可以對數(shù)據(jù)庫進行增加、刪除或更新等操作,當數(shù)據(jù)庫故障時,包括將操作指令保存到日志文件中;應(yīng)用系統(tǒng)還可以對數(shù)據(jù)庫進行查詢,當數(shù)據(jù)庫故障時,將查詢單表數(shù)據(jù)文件;當數(shù)據(jù)庫恢復(fù)正常時,可以調(diào)用事先保存的日志文件,讀取日志文件中的操作指令。另外,本實施例中,DAS預(yù)先設(shè)置數(shù)據(jù)庫狀態(tài)變量,并定時對數(shù)據(jù)庫進行連接測試,如果連接失敗,則將數(shù)據(jù)庫狀態(tài)變量設(shè)置為表示故障的值,否則設(shè)置為表示正常的值。那么,DAS可以查詢數(shù)據(jù)庫狀態(tài)變量,根據(jù)數(shù)據(jù)庫狀態(tài)變量確定數(shù)據(jù)庫是否發(fā)生故障或者是否恢復(fù)正常。圖3是本實施例對數(shù)據(jù)庫進行操作的流程圖。如圖3所示,本實施例包括以下步驟步驟301應(yīng)用系統(tǒng)向DAS發(fā)送數(shù)據(jù)庫操作指令。實際應(yīng)用中,如果有多個數(shù)據(jù)庫,需要在數(shù)據(jù)庫操作指令中指示需要操作的數(shù)據(jù)庫名稱、記錄ID以及修改內(nèi)容等參數(shù)。向DAS發(fā)送攜帶有這些參數(shù)的數(shù)據(jù)庫操作指令可以這樣實現(xiàn)預(yù)先建立用于設(shè)置操作指令的各項屬性或參數(shù)的命令請求類、執(zhí)行操作指令的命令執(zhí)行類,然后利用命令請求類和命令執(zhí)行類實現(xiàn)向DAS發(fā)送數(shù)據(jù)庫操作指令。比如預(yù)先建立命令請求類CmdRequest和命令執(zhí)行類DASCommand,其中,DASCommand類還可以包括執(zhí)行(execute)方法。當需要發(fā)送數(shù)據(jù)庫操作指令時,可以先構(gòu)造一個CmdRequest類的對象request,并在request對象中設(shè)置調(diào)用SQL或者命令SQL的標簽(Label)以及數(shù)據(jù)庫名稱、記錄ID以及修改內(nèi)容等參數(shù);再構(gòu)造一個DASCommand類的對象command,并攜帶上述各參數(shù)調(diào)用command對象中的execute方法,即調(diào)用command.execute(request)。實際應(yīng)用中,為了與現(xiàn)有的數(shù)據(jù)庫訪問技術(shù)兼容,還可以事先設(shè)置數(shù)據(jù)庫訪問模式變量redo,所述的數(shù)據(jù)庫操作指令中還將攜帶該數(shù)據(jù)庫訪問模式變量。比如數(shù)據(jù)庫訪問模塊分為正常模式和故障模式,如果將redo設(shè)置為“true”,則表示用戶選擇故障模式對數(shù)據(jù)庫進行操作,在數(shù)據(jù)庫發(fā)生故障的情況下,保存該操作命令,并在以后重新調(diào)用該操作命令,也就是本發(fā)明所述的方法;如果將redo設(shè)置為“false”,則表示用戶選擇正常模式對數(shù)據(jù)庫進行操作,即按照現(xiàn)有技術(shù)進行操作。步驟302DAS查詢數(shù)據(jù)庫狀態(tài)變量,確定數(shù)據(jù)庫發(fā)生故障。本步驟中,所述數(shù)據(jù)庫狀態(tài)變量可以設(shè)置為“1”或“0”,其中“1”表示故障,而“0”表示正常;也可以設(shè)置為“true”或“false”,其中,“true”表示正常,“false”表示“故障”。當然,實際應(yīng)用中,還可以用其他方法表示數(shù)據(jù)庫狀態(tài),只要DAS可以識別即可。當然,實際應(yīng)用中,當接收到操作指令時,DAS還需要對操作指令進行分析,即對操作指令進行解析,至于如果解析則屬于現(xiàn)有技術(shù),此處不再贅述。步驟303DAS將數(shù)據(jù)庫發(fā)生故障的信息返回給應(yīng)用系統(tǒng)。為了便于管理員了解數(shù)據(jù)庫運行情況,DAS還可以將數(shù)據(jù)庫發(fā)生故障的信息返回給應(yīng)用系統(tǒng)作為日志保存。當然,如果不需要記錄數(shù)據(jù)庫操作的過程,也可以不返回數(shù)據(jù)發(fā)生故障的信息,即可以省略本步驟。步驟304DAS將數(shù)據(jù)庫操作指令保存在日志文件Filel中。本步驟所述的日志文件的格式可以采用標簽的形式表示,以更新用戶數(shù)據(jù)中用戶ID號為1000的記錄為例,日志文件的格式可以為<FaultLog><logtime>2006072812:34:33.123</logtime><datasource>DB1</datasource><SQL>updatet_userinfosetlevel=:levelwhereuserid=:</SQL><params><paramindex=“1”name=“”value=”1”/><paramindex=“2”name=“”value=”1000”/></params></FaultLog>也就是說,通過日志文件,就可以將數(shù)據(jù)庫操作指令中需要執(zhí)行的操作、參數(shù)等情況記錄下來,等到數(shù)據(jù)庫恢復(fù)正常之后,再對數(shù)據(jù)庫進行操作。步驟305DAS向應(yīng)用系統(tǒng)返回數(shù)據(jù)庫操作成功的信息。需要注意的是,本步驟向應(yīng)用系統(tǒng)返回數(shù)據(jù)庫操作成功的信息與步驟303不同。為了增前用戶的體驗,可以將本步驟操作成功的信息呈現(xiàn)給用戶,而數(shù)據(jù)庫故障的信息則不必呈現(xiàn)給用戶,只是作為數(shù)據(jù)庫操作的過程記錄下來。步驟306DAS實時查詢數(shù)據(jù)庫狀態(tài)變量,根據(jù)數(shù)據(jù)庫狀態(tài)變量確定數(shù)據(jù)庫是否恢復(fù)正常,如果恢復(fù)正常,則根據(jù)事先保存的數(shù)據(jù)庫操作指令對數(shù)據(jù)庫進行操作。本步驟中,如果數(shù)據(jù)庫恢復(fù)正常,就可以調(diào)用保存在日志文件Filel中的數(shù)據(jù)庫操作指令,重新對數(shù)據(jù)庫進行訪問。圖4是數(shù)據(jù)庫故障恢復(fù)后DAS重新訪問數(shù)據(jù)庫的流程圖。如圖4所示重新訪問數(shù)據(jù)庫的方法包括以下步驟步驟401DAS將數(shù)據(jù)庫恢復(fù)正常的信息通知給應(yīng)用系統(tǒng)。與步驟303相同,為了便于管理員了解數(shù)據(jù)庫運行情況,DAS可以將數(shù)據(jù)庫恢復(fù)正常的信息返回給應(yīng)用系統(tǒng)作為日志保存。當然,如果不需要了解數(shù)據(jù)庫運行情況,也可以不返回數(shù)據(jù)庫恢復(fù)正常的信息,即可以省略本步驟。步驟402DAS分配空閑線程。本實施例中,由于要對數(shù)據(jù)庫進行訪問,則需要為訪問數(shù)據(jù)庫分配一個空閑線程,即為執(zhí)行數(shù)據(jù)庫操作指令分配一個空閑線程。步驟403DAS日志文件Filel中讀取并分析事先保存的數(shù)據(jù)庫操作指令。步驟404DAS從自身的連接池中獲取已經(jīng)與數(shù)據(jù)庫建立的空閑連接。步驟405分配的空閑線程利用與數(shù)據(jù)庫的連接,將所述數(shù)據(jù)庫操作指令提交給數(shù)據(jù)庫執(zhí)行,即實現(xiàn)對數(shù)據(jù)庫的訪問。之后,如果數(shù)據(jù)庫操作成功,還可以返回操作成功的信息,DAS再刪除日志文件中的數(shù)據(jù)庫操作指令。如果日志文件中有多個數(shù)據(jù)庫操作指令,DAS將逐一讀取并執(zhí)行每一條操作指令,即重復(fù)執(zhí)行步驟401~步驟405。另外,本發(fā)明是采用線程等技術(shù)來實現(xiàn)對數(shù)據(jù)庫的訪問,實際應(yīng)用中,也可以不采用步驟401~步驟405的方法,只要數(shù)據(jù)庫可以執(zhí)行日志文件中的數(shù)據(jù)庫操作指令即可。本實施例中,還事先建立了用于保存靜態(tài)數(shù)據(jù)的單表數(shù)據(jù)文件File2,DAS可以定時根據(jù)數(shù)據(jù)庫中靜態(tài)數(shù)據(jù)刷新單表數(shù)據(jù)文件File2。圖5是本實施例查詢靜態(tài)數(shù)據(jù)的方法的流程圖。如圖5所示,該方法包括以下步驟步驟501應(yīng)用系統(tǒng)將查詢指令發(fā)送給DAS。本步驟所述的查詢指令也屬于一種數(shù)據(jù)庫操作指令,在實際應(yīng)用中,還可能需要攜帶數(shù)據(jù)庫名稱、表名或視圖名、查詢條件等參數(shù)。與上述步驟301相似,本步驟也需要利用DASCommand類實現(xiàn)指令的發(fā)送。但與步驟301不同的是,所述DASCommand類需包括一個用于單表查詢的打開表(opentable)方法,向DAS發(fā)送攜帶有上述參數(shù)的查詢指令可以這樣實現(xiàn)先構(gòu)造一個DASCommand類的對象command,并攜帶上述各參數(shù)調(diào)用command對象中的opentable方法,即調(diào)用command.opentable(參數(shù))。步驟502DAS查詢數(shù)據(jù)庫狀態(tài)變量,確定數(shù)據(jù)庫發(fā)生故障。實際應(yīng)用中,當接收到查詢指令時,DAS還需要對查詢指令進行解析。步驟503DAS將數(shù)據(jù)庫發(fā)生故障的信息返回給應(yīng)用系統(tǒng)。本步驟與步驟303相似,如果不需要記錄數(shù)據(jù)庫操作的過程,也可以不返回數(shù)據(jù)發(fā)生故障的信息,即可以省略本步驟。步驟504DAS根據(jù)查詢指令查詢所述單表數(shù)據(jù)文件File2。本步驟中,DAS將根據(jù)表名、查詢條件等查詢File2中的數(shù)據(jù)或記錄。步驟505DAS將查詢結(jié)果返回給應(yīng)用系統(tǒng)。如果查詢成功,DAS需要將查詢到的數(shù)據(jù)或記錄返回給應(yīng)用系統(tǒng);如果查詢失敗,則返回失敗信息。應(yīng)用本實施例方案,可以在數(shù)據(jù)庫發(fā)生故障的情況下,先保存數(shù)據(jù)庫操作指令,等待數(shù)據(jù)庫恢復(fù)正常,一旦恢復(fù)正常,DAS就利用保存的數(shù)據(jù)庫操作指令對數(shù)據(jù)庫進行訪問,實現(xiàn)對數(shù)據(jù)庫的增加、刪除或更新等操作。而如果需要查詢某靜態(tài)數(shù)據(jù),則可以直接在DAS本地進行查詢并返回結(jié)果。這樣,不但可以增強用戶的體驗效果,而且,由于可以由DAS自動對數(shù)據(jù)庫進行重新訪問,無需應(yīng)用系統(tǒng)干預(yù),提高了重新訪問數(shù)據(jù)庫的效率。針對實現(xiàn)數(shù)據(jù)庫訪問的方法,本發(fā)明還提出了一種實現(xiàn)數(shù)據(jù)庫訪問的系統(tǒng)。圖6顯示了實現(xiàn)數(shù)據(jù)庫訪問的系統(tǒng)的基本結(jié)構(gòu)示意圖。如圖6所示,該系統(tǒng)包括應(yīng)用系統(tǒng)601,用于向DAS602發(fā)送數(shù)據(jù)庫操作指令,并接收從DAS602返回的信息;DAS602,用于接收來自應(yīng)用系統(tǒng)601的數(shù)據(jù)庫操作指令,與數(shù)據(jù)庫603進行連接和操作,將數(shù)據(jù)庫操作指令保存在第一存儲模塊604,并向應(yīng)用系統(tǒng)601返回操作成功的信息;數(shù)據(jù)庫603,用于保存數(shù)據(jù);第一存儲模塊604,用于保存數(shù)據(jù)庫操作指令。圖7是DAS的內(nèi)部結(jié)構(gòu)示意圖。如圖7所示,所述DAS602包括DAS指令分析模塊6021,用于分析來自應(yīng)用系統(tǒng)601的數(shù)據(jù)庫操作指令,從連接池模塊6022中獲取連接失敗信息,將數(shù)據(jù)庫操作指令保存到第一存儲模塊604,向應(yīng)用系統(tǒng)返回數(shù)據(jù)庫操作成功得信息;連接池模塊6022,用于檢測與數(shù)據(jù)庫603的連接,將連接失敗信息傳輸給DAS指令分析模塊6021,建立與數(shù)據(jù)庫603的連接并傳輸給業(yè)務(wù)線程池6023;業(yè)務(wù)線程池模塊6023,用于分配線程,從連接池模塊6022中獲取連接,對數(shù)據(jù)庫603進行操作。應(yīng)用系統(tǒng)601將數(shù)據(jù)庫操作指令發(fā)送給DAS指令分析模塊6021,DAS指令分析模塊6021對數(shù)據(jù)庫操作指令進行分析,并從連接池模塊6022獲得連接失敗信息,將數(shù)據(jù)庫操作指令保存到第一存儲模塊604中,再向應(yīng)用系統(tǒng)601返回數(shù)據(jù)庫操作成功的信息;當連接池模塊6022檢測到與數(shù)據(jù)庫603的連接正常時,將通知業(yè)務(wù)線程池模塊6023,業(yè)務(wù)線程池模塊6023分配一個空閑線程,利用連接池模塊6022中的空閑連接,從第一存儲模塊604中提取事先保存的數(shù)據(jù)庫操作指令,提交給數(shù)據(jù)庫603執(zhí)行,即實現(xiàn)數(shù)據(jù)庫訪問。這里所述的第一存儲模塊604可以放置在DAS602,放置在應(yīng)用系統(tǒng)601,或單獨放置。另外,該系統(tǒng)還可以進一步包括用于保存單表數(shù)據(jù)文件的第二存儲模塊,這里所述單表數(shù)據(jù)文件需要定時從數(shù)據(jù)庫603中導(dǎo)出;與第一存儲模塊604相似,所述的第二存儲模塊也可以放置在DAS602,放置在應(yīng)用系統(tǒng)601,或單獨放置。此時,所述應(yīng)用系統(tǒng)601進一步用于向DAS602發(fā)送查詢指令,并接收返回的查詢結(jié)果;所述DAS602進一步用于查詢第二存儲模塊中單表數(shù)據(jù)文件,并返回查詢結(jié)果。綜上所述,以上僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護范圍。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。權(quán)利要求1.一種實現(xiàn)數(shù)據(jù)庫訪問的方法,其特征在于,該方法包括以下步驟A、應(yīng)用系統(tǒng)向數(shù)據(jù)訪問服務(wù)系統(tǒng)DAS發(fā)送數(shù)據(jù)庫操作指令,DAS根據(jù)與數(shù)據(jù)庫進行連接的結(jié)果確定出數(shù)據(jù)庫發(fā)生故障;B、所述DAS保存所述數(shù)據(jù)庫操作指令,并向應(yīng)用系統(tǒng)返回數(shù)據(jù)庫操作成功的信息;C、所述DAS實時檢測數(shù)據(jù)庫是否恢復(fù)正常,如果恢復(fù)正常,則根據(jù)事先保存的數(shù)據(jù)庫操作指令對數(shù)據(jù)庫進行操作。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,步驟A所述確定數(shù)據(jù)庫發(fā)生故障的方法為所述DAS發(fā)起對數(shù)據(jù)庫的連接,如果連接失敗,則確定數(shù)據(jù)庫發(fā)生故障;或者,在所述步驟A之前進一步包括設(shè)置數(shù)據(jù)庫狀態(tài)變量,并定時對數(shù)據(jù)庫進行連接測試,如果連接失敗,則將數(shù)據(jù)庫狀態(tài)變量設(shè)置為表示故障的值,否則設(shè)置為表示正常的值;步驟A所述確定數(shù)據(jù)庫發(fā)生故障的方法為DAS查詢數(shù)據(jù)庫狀態(tài)變量,并根據(jù)數(shù)據(jù)庫狀態(tài)變量確定數(shù)據(jù)庫發(fā)生故障。3.根據(jù)權(quán)利要求1所述的方法,其特征在于,步驟C所述實時檢測數(shù)據(jù)庫是否恢復(fù)正常的方法為所述DAS發(fā)起對數(shù)據(jù)庫的連接,如果連接失敗,則重新發(fā)起對數(shù)據(jù)庫的連接;如果連接成功,則確定數(shù)據(jù)庫恢復(fù)正常;或者,所述步驟A之前進一步包括預(yù)先設(shè)置數(shù)據(jù)庫狀態(tài)變量,并定時對數(shù)據(jù)庫進行連接測試,如果連接失敗,則將數(shù)據(jù)庫狀態(tài)變量設(shè)置為表示故障的值,否則設(shè)置為表示正常的值;步驟C所述實時檢測數(shù)據(jù)庫是否恢復(fù)正常的方法為DAS實時查詢數(shù)據(jù)庫狀態(tài)變量,如果數(shù)據(jù)庫狀態(tài)變量為表示正常的值,則確定數(shù)據(jù)庫恢復(fù)正常。4.根據(jù)權(quán)利要求1所述的方法,其特征在于,預(yù)先建立用于保存操作指令的日志文件,步驟A所述保存數(shù)據(jù)庫操作指令為將數(shù)據(jù)庫操作指令保存在建立的日志文件中。5.根據(jù)權(quán)利要求1至4任一項所述的方法,其特征在于,所述數(shù)據(jù)庫操作指令為增加、刪除或更新。6.根據(jù)權(quán)利要求5所述的方法,其特征在于,預(yù)先在應(yīng)用系統(tǒng)本地建立用于保存靜態(tài)數(shù)據(jù)的單表數(shù)據(jù)文件,并定時將數(shù)據(jù)庫中靜態(tài)數(shù)據(jù)保存到單表數(shù)據(jù)文件中,當應(yīng)用系統(tǒng)需要查詢數(shù)據(jù)庫時,該方法進一步包括X1、所述應(yīng)用系統(tǒng)向DAS發(fā)送查詢指令,DAS根據(jù)與數(shù)據(jù)庫進行連接的結(jié)果確定數(shù)據(jù)庫發(fā)生故障;X2、所述DAS根據(jù)查詢指令查詢本地的單表數(shù)據(jù)文件,并將查詢結(jié)果返回給應(yīng)用系統(tǒng)。7.一種實現(xiàn)數(shù)據(jù)庫訪問的系統(tǒng),其特征在于,該系統(tǒng)包括應(yīng)用系統(tǒng)、DAS、數(shù)據(jù)庫和第一存儲模塊,其中,所述應(yīng)用系統(tǒng),用于向數(shù)據(jù)訪問系統(tǒng)DAS發(fā)送數(shù)據(jù)庫操作指令,并接收從DAS返回的信息;DAS,用于接收來自應(yīng)用系統(tǒng)的數(shù)據(jù)庫操作指令,與數(shù)據(jù)庫進行連接和操作,將數(shù)據(jù)庫操作指令保存在第一存儲模塊中,并向應(yīng)用系統(tǒng)返回操作成功的信息;第一存儲模塊,用于保存數(shù)據(jù)庫操作指令。8.根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于,所述DAS包括DAS指令分析模塊,用于分析來自應(yīng)用系統(tǒng)的數(shù)據(jù)庫操作指令,從連接池模塊中獲取連接失敗信息,保存數(shù)據(jù)庫操作指令,向應(yīng)用系統(tǒng)返回數(shù)據(jù)庫操作成功的信息;連接池模塊,用于檢測與數(shù)據(jù)庫的連接,將連接失敗信息傳輸給DAS指令分析模塊,建立與數(shù)據(jù)庫的連接并傳輸給業(yè)務(wù)線程池;業(yè)務(wù)線程池模塊,用于分配線程,從連接池模塊中獲取連接,對數(shù)據(jù)庫進行操作。9.根據(jù)權(quán)利要求7或8所述的系統(tǒng),其特征在于,該系統(tǒng)進一步包括用于保存單表數(shù)據(jù)文件的第二存儲模塊;所述應(yīng)用系統(tǒng)進一步用于向DAS發(fā)送查詢指令,并接收返回的查詢結(jié)果;所述DAS進一步用于查詢第二存儲模塊中單表數(shù)據(jù)文件,并返回查詢結(jié)果。10.一種實現(xiàn)數(shù)據(jù)庫訪問的裝置,所述裝置為DAS,其特征在于,所述DAS包括DAS指令分析模塊,用于分析來自應(yīng)用系統(tǒng)的數(shù)據(jù)庫操作指令,從連接池模塊中獲取連接失敗信息,并保存數(shù)據(jù)庫操作指令;連接池模塊,用于檢測與數(shù)據(jù)庫的連接,將連接失敗信息傳輸給DAS指令分析模塊,建立與數(shù)據(jù)庫的連接并傳輸給業(yè)務(wù)線程池;業(yè)務(wù)線程池模塊,用于分配線程,從連接池模塊中獲取連接,對數(shù)據(jù)庫進行操作。全文摘要本發(fā)明提供一種實現(xiàn)數(shù)據(jù)庫訪問的方法、系統(tǒng)和裝置,具體為在數(shù)據(jù)庫發(fā)生故障的情況下,應(yīng)用系統(tǒng)向數(shù)據(jù)訪問服務(wù)系統(tǒng)(DAS)發(fā)送數(shù)據(jù)庫操作指令,DAS根據(jù)與數(shù)據(jù)庫進行連接的結(jié)果確定數(shù)據(jù)庫發(fā)生故障;所述DAS保存所述數(shù)據(jù)庫操作指令,并向應(yīng)用系統(tǒng)返回數(shù)據(jù)庫操作成功的信息;所述DAS實時檢測數(shù)據(jù)庫是否恢復(fù)正常,如果恢復(fù)正常,則根據(jù)事先保存的數(shù)據(jù)庫操作指令對數(shù)據(jù)庫進行操作。應(yīng)用本發(fā)明方案,不但可以達到增強用戶體驗效果的目的,進一步地,由于可以由DAS自動對數(shù)據(jù)庫進行重新訪問,無需應(yīng)用系統(tǒng)干預(yù),從而可以提高重新訪問數(shù)據(jù)庫的效率。文檔編號G06F11/00GK1963821SQ20061016187公開日2007年5月16日申請日期2006年12月5日優(yōu)先權(quán)日2006年12月5日發(fā)明者金琦超,朱仲楚申請人:華為技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
枝江市| 磐安县| 建阳市| 城市| 西乌| 安陆市| 宝坻区| 阿拉尔市| 贵港市| 定陶县| 榕江县| 南充市| 苍山县| 垫江县| 婺源县| 东丽区| 清徐县| 桑植县| 扎赉特旗| 偏关县| 荔波县| 小金县| 沅陵县| 南宁市| 修文县| 安顺市| 鞍山市| 宜兰县| 宽甸| 定南县| 海盐县| 呼和浩特市| 敖汉旗| 姚安县| 巴彦县| 朝阳县| 阿荣旗| 木里| 怀柔区| 霸州市| 华亭县|