據(jù)所在的數(shù)據(jù)庫(即,第二數(shù)據(jù)庫)的主庫出現(xiàn)不可用狀況時,業(yè)務請求記錄所在的數(shù)據(jù)庫(即,第一數(shù)據(jù)庫)仍然是可用的,并且,保證利用第一數(shù)據(jù)庫統(tǒng)計出第二數(shù)據(jù)庫的備庫不可處理賬號是可信的。
[0071]當確定了備庫可信時間臨界點,根據(jù)圖4所示的第一數(shù)據(jù)庫就可以統(tǒng)計在備庫可信時間臨界點之后提交的業(yè)務請求以及對應的賬號,統(tǒng)計出的賬號即為備庫不可處理賬號,而除此之外的賬號即為備庫可處理的賬號。
[0072]需要說明的是,第二數(shù)據(jù)庫的備庫可以是既能夠支持讀取操作又能夠支持寫入操作的數(shù)據(jù)庫,也可以是只支持讀取操作的只讀數(shù)據(jù)庫。
[0073]例如,當采用Oracle數(shù)據(jù)庫時,可以通過Active Data Guard技術,可以使備庫只提供查詢服務,即,只支持讀取操作,并且,備庫與主庫之間的數(shù)據(jù)延遲時間約Is。
[0074]在本申請的一個優(yōu)選實施方式中,當?shù)诙?shù)據(jù)庫的備庫為只允許進行讀取操作的數(shù)據(jù)庫時,則步驟204為:根據(jù)當前業(yè)務請求對保存在第二數(shù)據(jù)庫的備庫中的業(yè)務數(shù)據(jù)進行讀取操作。
[0075]如果當前業(yè)務請求需要進行數(shù)據(jù)寫入操作時,在本申請的另一個優(yōu)選實施方式中,根據(jù)當前業(yè)務請求對第三數(shù)據(jù)庫進行業(yè)務數(shù)據(jù)的寫入操作,其中,第三數(shù)據(jù)庫為允許進行寫入操作的數(shù)據(jù)庫。
[0076]另外,還需要說明的是,如果第二數(shù)據(jù)庫只包括一個備庫,當主庫不可用是,一方面,該備庫與主庫進行切換,另一方面,在該備庫與主庫完成切換之前,還為了響應備庫可處理的賬號下的業(yè)務請求,從而保證應用服務在切換過程中仍然可用,還需要根據(jù)該業(yè)務請求對該備庫中的業(yè)務數(shù)據(jù)進行操作。
[0077]如果第二數(shù)據(jù)庫包括多個備庫,例如,包括兩個備庫,其中一個備庫(第一個備庫)在主庫不可用時與主庫進行切換,其中另一個備庫(第二個備庫)用于分擔主庫的工作壓力,處理一些時效性不高的業(yè)務請求。在本申請實施例中,當主庫不可用時,由第一個備庫與主庫完成切換,并且,在第一個備庫與主庫完成切換之前,為了響應備庫可處理的賬號下的業(yè)務請求,根據(jù)該業(yè)務請求對第二個備庫中的業(yè)務數(shù)據(jù)進行操作。
[0078]另外,在某些應用場景,如,金融業(yè)務,如果業(yè)務請求的業(yè)務類型為資金流入類業(yè)務,即使該業(yè)務請求是在備庫可信時間臨界點之后提交的,對于該業(yè)務請求來說,第二數(shù)據(jù)庫的備庫中的數(shù)據(jù)是不可信的,但是,考慮到接受該業(yè)務請求時并不會存在任何資金安全問題,因此,仍然可以接受這種業(yè)務類型的業(yè)務請求,這樣可以進一步減少對業(yè)務的影響。
[0079]例如,A賬號的原本余額為100元,在備庫可信時間臨界點之后又存入50元,即,在第二數(shù)據(jù)庫的主庫中A賬號的總余額為150元,而當?shù)诙?shù)據(jù)庫的主不可用時,第二數(shù)據(jù)庫的備庫有可能沒來得及對A賬號的余額進行同步更新,也有可能已經對A賬號的余額進行同步更新。因此,在第二數(shù)據(jù)庫的備庫中A賬號的余餓可能為150元,也可能為100元。無論是上述哪種情況,直接使用第二數(shù)據(jù)庫的備庫中A賬號的余額都不會產生資金安全上的風險,即,不會導致A賬號透支。
[0080]當然,除了金融業(yè)務中的資金流入類的業(yè)務請求之外,在其它應用場景中也存在另一些業(yè)務請求,也不會引起任何安全問題。
[0081]因此,在本申請的另一個優(yōu)選實施方式中,請參閱圖6,其為本申請?zhí)峁┑囊环N數(shù)據(jù)庫操作方法的另一個實施例的流程圖,其中,第一數(shù)據(jù)庫保存業(yè)務請求記錄,第二數(shù)據(jù)庫保存業(yè)務數(shù)據(jù),所述第二數(shù)據(jù)庫包括一個主庫和至少一個備庫,該方法包括以下步驟:
[0082]步驟601:當主庫不可用時,根據(jù)第一數(shù)據(jù)庫中的業(yè)務請求記錄統(tǒng)計在備庫可信時間臨界點之后提交的業(yè)務請求,將統(tǒng)計的業(yè)務請求所對應的賬號作為備庫不可處理賬號,其中,以主庫不可用的初始時間點為預設時間段的終止點,起始點即為所述備庫可信時間臨界點,所述預設時間段的時長大于或等于備庫與主庫之間的數(shù)據(jù)延遲時間。
[0083]步驟602:判斷當前業(yè)務請求所對應的賬號是否為所述備庫不可處理賬號,如果是,進入步驟603,否則,進入步驟605。
[0084]步驟603:判斷當前業(yè)務請求針對的業(yè)務類型是否為預設業(yè)務類型,如果否,進入步驟604。
[0085]步驟604:拒絕當前業(yè)務請求,結束流程。
[0086]步驟605:接受當前業(yè)務請求,并根據(jù)當前業(yè)務請求對備庫進行操作,結束流程。
[0087]其中,對于備庫不可處理賬號下的業(yè)務請求,如果接受該業(yè)務請求并不會對該賬號產生任何安全問題,該業(yè)務請求的業(yè)務類型即為預設業(yè)務類型。顯然,在不用的應用領域,預設業(yè)務類型是不同。例如,在金融領域,預設業(yè)務類型為資金流入類業(yè)務,如,存款業(yè)務。
[0088]另外,當步驟603的判斷結果為是時,接受當前業(yè)務請求,并根據(jù)當前業(yè)務請求對備庫進行操作。
[0089]由上述實施例可以看出,與現(xiàn)有技術相比,本申請的優(yōu)點在于:
[0090]當業(yè)務數(shù)據(jù)所在的第二數(shù)據(jù)庫的主庫不可用時,在主庫和其備庫的切換過程中,可以先確定備庫不可處理賬號,即,對于備庫不可處理賬號下的業(yè)務請求來說,備庫中的數(shù)據(jù)是不可信的。而除備庫不可處理賬號之外的賬號為備庫可處理的賬號,即,對于備庫可處理賬號下的業(yè)務請求來說,備庫中的數(shù)據(jù)是可信的。因此,對于備庫可處理賬號下的業(yè)務請求,可以根據(jù)該業(yè)務請求直接對備庫進行操作。這樣就可以保證在主庫和備庫的切換過程中,應用服務仍然是可用的,并不會因此而中斷,緩解甚至避免了在主庫和備庫進行切換時而出現(xiàn)的應用服務不可用的問題。
[0091]裝置實施例
[0092]與上述一種數(shù)據(jù)庫操作方法相對應,本申請實施例還提供了一種數(shù)據(jù)庫操作裝置。請參閱圖7,其為本申請?zhí)峁┑囊环N數(shù)據(jù)庫操作裝置的一個實施例的結構圖,其中,第一數(shù)據(jù)庫保存業(yè)務請求記錄,第二數(shù)據(jù)庫保存業(yè)務數(shù)據(jù),所述第二數(shù)據(jù)庫包括一個主庫和至少一個備庫;該裝置包括:統(tǒng)計單元701、第一判斷單元702、請求拒絕單元703和第一操作單元704。下面結合該裝置的工作原理進一步介紹其內部結構以及連接關系。
[0093]統(tǒng)計單元701,用于當主庫不可用時,根據(jù)第一數(shù)據(jù)庫中的業(yè)務請求記錄統(tǒng)計備庫可信時間臨界點之后提交的業(yè)務請求,將統(tǒng)計的業(yè)務請求所對應的賬號作為備庫不可處理賬號,其中,以主庫不可用的初始時間點為預設時間段的終止點,起始點即為所述備庫可信時間臨界點,所述預設時間段的時長大于或等于備庫與主庫之間的數(shù)據(jù)延遲時間;
[0094]第一判斷單元702,用于判斷當前業(yè)務請求所對應的賬號是否為所述備庫不可處理賬號;
[0095]請求拒絕單元703,用于如果當前業(yè)務請求所對應的賬號是所述備庫不可處理賬號,拒絕當前業(yè)務請求。
[0096]第一操作單元704,用于如果當前業(yè)務請求所對應的賬號不是備庫不可處理賬號,接受當前業(yè)務請求,并根據(jù)當前業(yè)務請求對備庫進行操作。
[0097]在本申請的一個優(yōu)選實施方式中,如圖8所示,在圖7所示的結構的基礎上,該裝置還包括:
[0098]第二判斷單元705,用于在所述拒絕請求單元拒絕當前的業(yè)務請求之前,判斷當前業(yè)務請求針對的業(yè)務類型是否為預設業(yè)務類型;
[0099]所述請求拒絕單元703用于,如果當前業(yè)務請求針對的業(yè)務類型不是預設業(yè)務類型,拒絕當前業(yè)務請求。
[0100]在本申請的另一個優(yōu)選實施方式中,所述第一操作單元704還用于,如果當前業(yè)務請求針對的業(yè)務類型是預設業(yè)務類型,接受當前業(yè)務請求,并根據(jù)當前業(yè)務請求對備庫進行操作。
[0101]在本申請的另一個優(yōu)選實施方式中,所述備庫為只允許進行讀取操作的數(shù)據(jù)庫;所述第一