專利名稱:出錯時用于數(shù)據(jù)庫的關系恢復的系統(tǒng)的制作方法
技術領域:
本發(fā)明涉及出錯時用于關系恢復的系統(tǒng)。
在數(shù)據(jù)庫系統(tǒng)中有許多措施可被用來防止信息的丟失。通常使用副本和記錄來保證數(shù)據(jù)庫有備用的拷貝。這些拷貝在系統(tǒng)損壞或出現(xiàn)硬件差錯的情況下被用來恢復數(shù)據(jù)庫。
數(shù)據(jù)庫通常具有根據(jù)存儲在數(shù)據(jù)庫一致性的中的即對于不同的修改以及它們的分組具有可預期的狀態(tài)的數(shù)據(jù)進行恢復的功能。
為了使能夠從錯誤寫數(shù)據(jù)庫而導致的損壞中恢復過來,必須安全地存儲備份版本。備份包含了為了能夠將數(shù)據(jù)庫再建立到與產(chǎn)生備份時占優(yōu)勢的狀態(tài)相同的一致狀態(tài)所必須的所有信息。
用于恢復數(shù)據(jù)庫的典型策略可概括如下如果數(shù)據(jù)庫由于出現(xiàn)突發(fā)錯誤而變成不一致,恢復功能再啟動,將數(shù)據(jù)庫再寫入到最后的備份版本。為了能夠回復到最近做的狀態(tài),數(shù)據(jù)庫然后被用已存儲在記錄上的信息來修改,即該信息存儲在存儲器中的先前操作的記載,這些記載被恢復功能用來恢復最后允許的事務處理,即對目標操作或數(shù)據(jù)庫中的記錄。目標概念在此具有在數(shù)據(jù)處理領域中通常的意義。簡言之,目標就是具有如何管理其信息的相關描述的信息包。目標也如數(shù)據(jù)記錄一樣在它們使用領域被劃分為類并被利用鍵來區(qū)分。目標的概念的更詳細描述可以參看例如Yourdon出版社計算系列中Peter和EdwardYourclon的“OBJECT-ORENTEDANALYSIS”(面向目標的分析)。
恢復數(shù)據(jù)庫所需的信息和機制由修改數(shù)據(jù)庫所用的方法來確定。在修改目標的情況下,產(chǎn)生原始目標的拷貝,加鎖以便防止其它用戶修改數(shù)據(jù)庫,在沒有得到同意,即程序或操作員使用的表示當前事務處理已結束之前,它的作用保持當采用修改的拷貝引入時并取消加鎖。
在數(shù)據(jù)庫的錯誤不能被立即檢測的情形中,數(shù)據(jù)庫拷貝是不夠用的。在銀行寄存器中,操作者可例如由于出錯而消除了客戶記錄,盡管還有相關的帳戶輸入,或者他可能碰巧消除了全部的支付申訴。
在第一種情形中,有熟知的方法保證數(shù)據(jù)的完整性。這些方法被稱為完整性條件。這樣的條件可以例如是帳戶輸入必須與客戶寄存器相結合。還可以有建立的恢復機制規(guī)定如果完整性條件被違反將出現(xiàn)什么情況。在上述例子中可迫使客戶記錄的消除以前存在著是連續(xù)的清算步驟,它導致帳戶輸入也和客戶記錄一道被消除。
在第二種情形中,由于全部的支付申訴被消除,必須能夠根據(jù)副本恢復被消除的記錄。另一方面,不是數(shù)據(jù)庫中的所有數(shù)據(jù)都被恢復,例如超過12小時的銀行交易項目。即使在更新數(shù)據(jù)庫的其余部分為最新狀態(tài)的同時能夠只發(fā)現(xiàn)和恢復關于支付申訴的記錄,但也必須能夠發(fā)現(xiàn)對完整性條件的全部違反情況并且采取恢復數(shù)據(jù)庫的完整性所需的相應恢復措施。但是,保證不是更重要的數(shù)據(jù)由于這些措施例如銀行交易而被損壞可能是困難的。
在通常的數(shù)據(jù)庫管理系統(tǒng)中,恢復部分系統(tǒng)的功能是通過使用完全不同的數(shù)據(jù)庫來實現(xiàn)的。這就沒有保證不同的恢復部分系統(tǒng)之間的一致性,在不同的數(shù)據(jù)庫和部分系統(tǒng)中的目標之間沒有滿足完整性條件(例如存在依賴性)。
通過US4933848我們得知一數(shù)據(jù)庫管理系統(tǒng),在該系統(tǒng)中,數(shù)據(jù)被要求應當是有引用約束。該數(shù)據(jù)庫是一關系數(shù)據(jù)庫,數(shù)據(jù)被存儲在具有行和列的表中。裝入新的行并提取和分類關于裝入的信息和約束、對于新的行進行是否違反約束的檢查,并改正該違反以便恢復引用完整性。
GB2252853總的來說涉及在關系數(shù)據(jù)庫中存儲的恢復數(shù)據(jù)。
本發(fā)明的目的就是在允許瞬時連續(xù)存取數(shù)據(jù)庫的同時建立在數(shù)據(jù)庫中的關系恢復系統(tǒng),保證數(shù)據(jù)總是處于一致的狀態(tài)并最大可能在減輕數(shù)據(jù)損壞的后果。
根據(jù)本發(fā)明,在出錯的情況下,在數(shù)據(jù)庫中進行關系恢復的系統(tǒng)包括被計算機執(zhí)行的功能度并且保證數(shù)據(jù)庫中的數(shù)據(jù)被作為在若干個恢復子系統(tǒng)中的數(shù)據(jù)項來建立,每個數(shù)據(jù)項屬于一個子系統(tǒng)。
如果一個系統(tǒng)包含依賴于在另一子系統(tǒng)中的一個或多個數(shù)據(jù)項的一個或多個數(shù)據(jù)項,最先提到的子系統(tǒng)就被標記為依賴于第二次提到的子系統(tǒng)。
如果第一子系統(tǒng)被標記為依賴于第二子系統(tǒng)而第二子系統(tǒng)又被標記為依賴于第三子系統(tǒng),所述第一子系統(tǒng)就被遞歸地標記為依賴于所述第三子系統(tǒng)。
沒有兩個子系統(tǒng)被標記為相互依賴。
只要這些子系統(tǒng)之一被標記為依賴于另一子系統(tǒng),一個子系統(tǒng)中的數(shù)據(jù)項和另一子系統(tǒng)中的數(shù)據(jù)項之間的完整性約束就被承認,以及在子系統(tǒng)上執(zhí)行恢復動作以便只引起該子系統(tǒng)和被標記為依賴于該子系統(tǒng)的其它子系統(tǒng)中的數(shù)據(jù)項的改變。
以下是本發(fā)明的一些優(yōu)越的實施例,就象在緊接著的描述中所揭示的那樣。
第一實施例在對一個子系統(tǒng)進行備份的同時還始終如一地對被標記為依賴于這一被備份的子系統(tǒng)的所有子系統(tǒng)進行一致性備份。
第二實施例在根據(jù)副本恢復子系統(tǒng)時還恢復被標記為依賴于這一子系統(tǒng)的子系統(tǒng)。
第三實施例在子系統(tǒng)的恢復操作方面只執(zhí)行導致所述子系統(tǒng)重新達到一致狀態(tài)的操作。
第四實施例在子系統(tǒng)的恢復操作方面只采取不影響被被標記為依賴于這一子系統(tǒng)的那些子系統(tǒng)不同的子系統(tǒng)的措施。
本發(fā)明的系統(tǒng)可以是在上述引言中所指的那種類型,在該系統(tǒng)中,數(shù)據(jù)根據(jù)通向目標的系統(tǒng)語言來描述和排列,在該面向目標的語言中,概念目標指的是具有如何管理其信息的相關描述的信息包。根據(jù)以下參看附圖對實施例的更詳細描述這也將會更一清二楚。
對于這樣的系統(tǒng)也有以下本發(fā)明的一些優(yōu)越的實施例,就象在緊接著的描述中所揭示的那樣。
一個這樣的實施例是如果在關系恢復時,不一致值在兩個不同的恢復子系統(tǒng)中的目標之間出現(xiàn),就使用用滿足所有有效性約束的值來代替不一致值的重新設備方法。
為此,目標的屬性通過簡單的指定可被重新設置為與環(huán)境兼容的值,以便不從其它對象建立任何依賴性,并且不失效。
在另一實施例中,如果在關系恢復時不一致值在兩個不同的恢復子系統(tǒng)中的目標之間出現(xiàn)就改變目標的狀態(tài)。
為此,引用或一個或兩個目標可以被消除。
在另一個實施例中,本發(fā)明的系統(tǒng)包含檢測關系。通過請求檢驗位于在所涉及的依賴關系另一端的所有目標,使此目標依賴于所檢驗的關系,在出錯情況下,運行關系的控制將在此是危險的。
在另一實施例中,可以對目標進行關系檢測以便在出錯的情況下重新設置該目標,并且告訴對于該目標具有依賴性關系的目標,這些關系依賴于已被改變的該目標。
在涉及出現(xiàn)在其中包括一目標恢復操作的情形的另一實施例中,不是重新設置目標的屬性、從該目標中消除關系,就是消除目標,隨因其關系被規(guī)定為恢復動作的目標而定。
根據(jù)另一實施例,在所有其它目標已被檢驗之間允許對被檢驗的目標執(zhí)行數(shù)據(jù)庫操作。
在另一實施例中,恢復處理程序通過用表明目標位于關系恢復系統(tǒng)中,該目標已被反繞、其關系尚未被完全恢復以及自反繞以來該目標尚未被檢驗的特征位來標記所有受影響的目標,通過啟動關系恢復處理程序和通過允許數(shù)據(jù)庫操作來開始關系恢復。
關系恢復處理程序最好是可以檢查被反繞的恢復系統(tǒng)以便消除已有的關系問題,并由此在某些應用程序打開涉及的目標之前消除大部分這些關系問題。
現(xiàn)在參看附圖詳細地描述本發(fā)明的實施例,其中
圖1示意性地說明導致本發(fā)明的問題之一,圖2表示與圖1類似的說明與第一恢復實例有關的事件的進程的圖示,圖3是與圖2相關的流程圖,圖4表示與圖2類似的說明與第二恢復實例有關的事件的進程的圖示,圖5是與圖4相關的流程圖。
在以下的描述中,一些不同的作用物、功能和操作將被描述。在這里應當指出,除非另有所指,它是被計算機執(zhí)行的軟件功能性的問題,沒有被表示出來。這樣的計算機和其執(zhí)行方式對閱讀以下描述的本領域的技術人員可以是顯而易見的,因此不必在此描述。在描述中使用的代碼是C++語言的偽代碼,對本領域的技術人員也是熟知的。
根據(jù)本發(fā)明的特征之一,本發(fā)明是基于恢復子系統(tǒng)的使用,在子系統(tǒng)之間可以有某些依賴性關系,這些依賴性關系將在下面詳述。這些恢復子系統(tǒng)被用來將問題局限于產(chǎn)生該問題的應用。在數(shù)據(jù)庫中,這就涉及到在沒有再裝入記錄的情況下反繞部分數(shù)據(jù)庫而不是反繞整個數(shù)據(jù)庫的功能。以下描述的實例基于在恢復子系統(tǒng)的分層中有幾個等級的假定。
在圖1的圖示中,水平軸是時間軸。交叉的垂直軸表示最后備份的時刻。上面和下面的區(qū)域2和4分別用來表示在“上面”和“下面”的恢復子系統(tǒng)中的事件的進程。在各自的“事件的進程”中的圓形無陰影響小區(qū)域6和8表示在它們之間存在依賴性關系的目標。在上面的恢復子系統(tǒng)中的事件2的進程的末端出現(xiàn)了需要反繞這一恢復部分系統(tǒng)的錯誤狀態(tài),如箭頭10所示。
箭頭12表示的問題現(xiàn)在就是在反繞之后不存在的目標6和目標8之間的關系將如何?參看圖1進行的以上描述被用來說明已被本發(fā)明解決了的問題之一。特別是這一問題將保證給予一個以上的數(shù)據(jù)庫記錄和一個以上的恢復子系統(tǒng)的完整性的約束在對子系統(tǒng)之一備份之后仍然是有效的。
部分的解將確定指定給目標的一些屬性,以及各種情形的關系恢復方法。
一些屬性的實例如下所述。以下在屬性的名稱中使用的縮寫DOL來自于DataObjectLogic(數(shù)據(jù)目標邏輯),其意義是顯而易見的。
屬性DOL.ForeignDependency這是被包括在事務處理協(xié)議、事務處理記錄和備份中的一位特征位。如果設置的話,該特征位就表示該目標對于在另一較低恢復部分系統(tǒng)中的目標具有直接的依賴性關系。該特性位在最初的直接依賴性已被建立時被關系邏輯設置,在最后的直接依賴性已被消除時被消除。只有直接依賴性是相關的,因此沒有間接依賴性。
該特征位被關系恢復媒介用來找出可以是問題層的“根”的對象。因此它可以作為一位被恰當?shù)匕ㄔ谀繕说哪夸浿小?br>
DOL.NotOK這是不必被包括在事務處理記錄中和不必被反繞的一位特征位。但是,零設置必須被包括在事務處理協(xié)議中。如果設置的話,該特征位就表示該目標被包括在-恢復子系統(tǒng)中,該恢復子系統(tǒng)已被反繞并且其關系沒有被完全恢復,還表示該目標自反繞以來尚未被檢查。
在反繞的情況下對所有目標設置該特征位當檢查時每一目標都不設置該特征位。當關系恢復媒介已經(jīng)檢查設置了特征位外部依賴性的所有目標時,所有Not_OK特征位都可不設置這一特征位也可作為一位被恰當?shù)匕ㄔ谀繕四夸浿小?br>
DOL.DependOnMe這是被包括在事務處理協(xié)議、事務處理記錄和備份中的引用清單。該清單包括對具有對自對象(Self_object)的直接依賴性的所有對象的引用,它被DOL關系邏輯保持。
它被用來提醒非獨立對象自對象是否已崩潰以及是否已被關系恢復功能恢復。
DOL.DependingOn這是被包括在事務處理協(xié)議、事務處理記錄和備份中的引用清單。該清單包括對自目標具有直接依賴性的目標的引用,它被DOL的關系邏輯保持。
它被用來產(chǎn)生那些在自目標可被保證為正確之前(利用核實的方法,該方法將在下面描述)必須被檢查的目標的知識。該特征位適合于用枚舉目標的引用來實現(xiàn),使得那些具有依賴性的引用是已知的。
只在關系恢復期間用于打開的目標,不必被存儲、自目標是否被包括在正被核實(Verifying-Self)以便避免迂回的相關樹中,在進行核實(Must-check)自目標時必須被檢查,當它已經(jīng)被重新設置時(Reset),不必再被重新設置;或者如果沒有什么特別就是可應用的(Normal)。
DOL.RecStatus被關系恢復功能度保持和使用。
以上在括弧中表示的名稱在下面對恢復方法的描述中將使用。
RecDBRewindTimestamp
被包括在名稱中的RecDB(恢復數(shù)據(jù)庫)是指關系恢復數(shù)據(jù)庫。它是表示恢復子系統(tǒng)以及恢復數(shù)據(jù)庫什么時候被最后反繞的加時間章的問題。
它被恢復功能度用來產(chǎn)生沒有被反繞、因此可以具有不兼容數(shù)據(jù)的目標的知識。它在反繞的情況下被恢復處理程序設置。
關系恢復方法為簡化描述起見,稍微不正確地認定目標可以打開它們自己并且它們可以對它們不存在或者其它的東西已鎖住它們時作出響應。與以下詳細描述的實施例作比較。
在以下的描述中,方法的定義被稱為type-of-object.name-of-method(type-of-argumentformalmname)。這應當被作如此的解釋,圖為對于type-of-object類型的目標,定義了name-of-method方法,該方法使用type-of-argument類型的自變量。在定義中自變量用指定formal_name來表述。
根據(jù)name-of-method(自變量)調用方法應當被解釋為用在括弧內(nèi)所述自變量的值調用帶有name-of-method名稱的方法。
對方法調用的響應被稱為響應代碼或響應代碼(定義),其中的響應代碼表示具有在括弧內(nèi)的(如果有的話)定義的響應。
Dol.Venfy(事務處理TR)如果目標被另一事務處理鎖定就應使用LOCKED(鎖定)響應。
如果目標不使NOT-OK特征位設定或者如果它已經(jīng)在事務處理TR中被打開,V-Ready響應就應與部分系統(tǒng)的最后反饒時刻被作為一自變量。
如果目標沒有被打開并且如果它使NOT-OK特征位設定,它就得被用在TR中的寫鎖定來打開。
屬性Rec-Status被設置以便Verifyiug-Self。核實(TR)被進一步(遞歸地)傳送給自目標依賴的目標。如果任一目標被鎖住就放棄這一企圖并應當使用響應V-locked。如果所有目標以正確的反饒時間進行響應并且如果自目標的Alert方法沒有被調用(即Rec.Status已被設置到Must-check),就應當使用V-readmy應答(反饒時刻)并將Rec.Status置為Normal。否則就調用自目標的Check(TR)方法。如果被滿足的話應答就是V-ready(反饒時刻)。
Dol.Check(事務處理TK)開始目標的關系檢查。如果它們被滿足,屬性Rec.Status就被置為Normal。
如果出錯,就執(zhí)行Reset(TR)并且對依賴于自目標的所有目標調用Alert(TR)(參看下面描述)。
Dol.Reset(事務處理TR)根據(jù)被規(guī)定為關系恢復作用的目標的不同,對象的屬性得到它們零設置值,否則目標被消除。
屬性Rec.Status被設置為Reset。
有四種作為恢復方法的操作能夠組合的作用屬性設置。目標的狀態(tài)被重新設置為與環(huán)境兼容的狀態(tài)是相當簡單的。由于屬性設置一方面必須不依賴于其它目標-它們是造成問題的對象,另一方面因為設有“過去值”可以返回,所以必須不失敗,所以屬性設置必須是簡單的指定。
引用消除。這是對于不存在的目標的引用通常采取的方式。在任選的已消失的引用的情形下這是合適的,但在基數(shù)錯誤,甚至狀態(tài)錯誤的情況下也可以是有用的。
目標消除。這可以適合于存在依賴性的場合,或者可能適合于基數(shù)性的依賴性的場合。如果目標被消除,就沒有理由再使用上述兩種作用中的任何一種。
傳送通知給某一媒介。例如如果需要通知操作員等等就可以使用這一作用。
Dol.Alert(事務處理TR)如果目標被某一其它事務處理鎖定就將LDCKED返回。
如果目標沒有打開,就用在TR中的寫鎖定來打開,如果它使NOT_OK特征位設定,它就使Verify(TR)對自己有效??纱嬖诘拇a被返回,否則調用自目標的Check(TR)并返回錯誤代碼或A-Ready。
如果目標被打開正在自我核實,即Rec.Status是Verifyiny-Self或Must-Check.Rec-Status就被設置為Must-Check。返回A-Ready。
如果目標已經(jīng)被重新設置,即Rec.Status是Reset.就返回A-Ready,這是由于不可能再將目標設置為零。
在余下的情形中調用Check(TR),并返回其錯誤代碼或A-Ready。
對打開數(shù)據(jù)庫目標的補充這是對打開正常功能的目標的通常方法的補充,如果NotmOK特征位不被設置的話。在這樣的情形下,就開始新的事務處理并調用自目標的Verify。
如果在在返回中獲得LOCKED(或者某些其它錯誤代碼),事務處理TR就被中斷并且應答將是“關系沒有完全恢復”。打開失敗了。
如果在返回中獲得V-Ready(TK),事務處理就被確認并且象通常一樣完成打開。
對確認協(xié)議的補充每當目標作為事務處理的一部分被寫入,由于關系邏輯被滿足,如果設置該特征位,NotmOK特征就不再被設置,位就不必設置。
對關系邏輯的補充一旦給在另一關系恢復數(shù)據(jù)庫中的目標設置依賴性關系,F(xiàn)oreign-Dependency特征位應被設置。
如果對在另一關系恢復數(shù)據(jù)庫中的目標的最后依賴性被消除,F(xiàn)oreign_Depndency特征位就不被設置。
Foreign_Dependency特征位被包括在事務處理協(xié)議中。
下面概括描述在關系恢復情況下使用的算法。
恢復情況下的算法關系恢復數(shù)據(jù)庫的恢復處理程序通過以下步驟開始關系恢復用Not_OK標記所有目標。這最適合在目標目錄被重建時進行。
啟動關系恢復處理程序(參看以下描述)。此后可以啟動信息通信。當不是恢復數(shù)據(jù)庫的全部事務處理記錄都已經(jīng)被讀出時,在所有情況下都需要這樣做。
關系恢復處理程序這一媒介檢查在背景中的被反繞恢復子系統(tǒng)。對于數(shù)據(jù)庫的一致性不是必須的,但消除了存在的關系問題以便在目標被某些應用打開之前已經(jīng)消除了大部分的問題。
算法基于不反繞“來自底層”的問題鏈。這是通過檢查目標目錄尋找具有Not_OK特征位和Foreign_Dependency特征位的目標而實現(xiàn)的。當發(fā)現(xiàn)這樣的目標時,就啟動事務處理TR并將Verify(TR)傳送給該目標。如果事務處理順利結束,它將被確認,如果出現(xiàn)鎖定就進行異常中止并繼續(xù)搜索。
當沒有剩下具有Not_OK特征位和Foreign_Dependency特征位的目標時,所有具有對另一子系統(tǒng)的直接依賴性的目標就已經(jīng)被重新設置,由于傳遞作用,所有具有間接依賴性的目標也一樣。因此,所有Not_ok特征后都可以不被設置。
在以上所述的實施方案中,對每類目標只有一種恢復方法-即對每一有效性約束不是一種方法。原因在于性能的要求,但本質上在不同的有效性違反和它們的恢復之間將是非常復雜的關系。例如,一個違反能夠產(chǎn)生一種恢復,這一恢復產(chǎn)生的-新的違反,這新的違反產(chǎn)生-恢復,這一恢復又產(chǎn)生第一個違反。但是,可以設想對每類目標允許多種恢復方法的實施方案。
圖2表示由于錯于事件20的進程在“上面”恢復數(shù)據(jù)庫中的時刻BD2已被中斷并且后者根據(jù)箭頭22已被反繞到最后的備份日期BD1的情形。該數(shù)據(jù)庫包含目標B1和B2,它們具有相互依賴性,B1還具有對被包手在“下面”恢復數(shù)據(jù)庫中的事件24的進程中的目標A1的依賴性。除目標沒有被檢查外任何變化沒有發(fā)生。
如果現(xiàn)在某人打開B2,事務處理TRI,參看圖3將發(fā)生以下變化在打開調用時,B2的邏輯發(fā)現(xiàn)B2具有被設置的Not_OK特征位。因此新的事務處理被啟動,它對B2進行Verify調用。
在這一調用中,B2被用寫鎖定來打開并且依賴性被檢查。對B1依賴性被發(fā)現(xiàn)并且對B1進行Verify調用。
由于B1也是Not_OK,所以它在TR2中被用寫鎖定來打開并檢查它的依賴性清單。對A1的依賴性被發(fā)現(xiàn)并對A1進行Verify調用。
A1是完好的并且以其最后的反繞日期(BD2)來正確地應答。
由于B1已經(jīng)從A1接收了時間標記BD1,A1可以是不兼容的。因此B1必須通過運行其關系邏輯來檢查自己(Check)。
這就發(fā)現(xiàn)了一切都整齊有序并且B1對B2沒有理由改變其狀態(tài),或者即使運行關系邏輯。
由于這一原因,B2和B1的Not_OK特征位(以及已經(jīng)被發(fā)現(xiàn)為完好的A1)就不被設置。
對于事務處理TR1,現(xiàn)在可以象通常一樣打開B2。
在圖4所示的第二實施例中,事件30的進程在“上面”恢復數(shù)據(jù)庫中的時刻BD2已被中斷并且后者根據(jù)箭頭32被反繞到最后的備份日期BD1。它包括具有相互依賴性的目標B1和B2,B1還具有對被包括在“下面”恢復數(shù)據(jù)庫中的事件34的進程中的目標A1的依賴性。由于備份,全部三個目標已被消除并且A1尚未出現(xiàn)。
如果現(xiàn)在某人打開B2,事務處理TR1,參看圖5將發(fā)生以下變化在打開調用時,B2的邏輯發(fā)現(xiàn)B2的Not_OK特征位被設置。因此新的事務處理被啟動,并對B2進行Verify調用。
由于這一調用,B2被用寫鎖定來打開關依賴性被檢查。B1的依賴性被發(fā)現(xiàn)并對B1進行Verify。
由于B1也是Not_OK,所以它在TR2中用寫鎖定來打開并且檢查其依賴性清單。A1的依賴性被發(fā)現(xiàn)并且Verify調用返回Not_Found。且Verify調用返回Not_Found。
B1將其對A1的引用設置為零,繼續(xù)其依賴性清單,發(fā)現(xiàn)對B2的依賴性并傳送Verify調用。
由于它做好保持Verify的準備,所以B2應答Verify-Rcady。
由于B1已接收應答Not_Found,所以它必須通過運行關系邏輯進行自我檢查(Check)。
這就發(fā)現(xiàn)由于不一致性所以B1必須被“設置為零”(Reset)。當這樣做時,所有對B1的依賴性必須被告知并必須對B2進行Alert調用。
當B2接收Alert調用時,它知道它必須運行關系邏輯,但由于不是全部Verify清單已經(jīng)被檢查,所以不是馬上運行。它返回Alert_Ready。
B1現(xiàn)在已準備好并返回V-Ready(BD2)。
B2除運行關系邏輯外(Check)沒有更多目標需要核實。
由于B1已被改變并且必須被重新設置(Resef),這就引起了問題。此后所有相關目標必須被告知并且Alert調用必須被傳送給B1。
B1知道它已經(jīng)被設置為零,因此立即應答Alert-Rrady。
事務處理TR2被確認。
由于這一緣故,B2和B1的Not-OK特征位被設置為零。
對于事務處理TR1,現(xiàn)在可以象通常一樣打開B2-但它被設置為零。
權利要求
1.在出錯的情況下在數(shù)據(jù)庫中進行關系恢復的系統(tǒng),其特征在于被計算機執(zhí)行的功能度并且保證數(shù)據(jù)庫中的數(shù)據(jù)被作為在若干個恢復子系統(tǒng)中的數(shù)據(jù)項來建立,每個數(shù)據(jù)項只屬于一個子系統(tǒng),如果一子系統(tǒng)包含依賴于在另一子系統(tǒng)中的一個或多個數(shù)據(jù)項的一個或多個數(shù)據(jù)項,最先提到的子系統(tǒng)就被標記為依賴于第二次提到的子系統(tǒng),如果第一子系統(tǒng)被標記為依賴于第二子系統(tǒng)而第二子系統(tǒng)又被標記為依賴于第三子系統(tǒng),所述第一子系統(tǒng)就被遞歸地標記為依賴于所述第三子系統(tǒng),沒有兩個子系統(tǒng)被標記為相互依賴,只要這些子系統(tǒng)之一被標記為依賴于另一子系統(tǒng),一個子系統(tǒng)中的數(shù)據(jù)項和另一個子系統(tǒng)中的數(shù)據(jù)項之間的完整性約束就被承認,以及在子系統(tǒng)上執(zhí)行恢復動作以便只引起該子系統(tǒng)和被標記為依賴于該子系統(tǒng)的其它子系統(tǒng)中的數(shù)據(jù)項的改變。
2.根據(jù)權利要求1的系統(tǒng),其特征在于在對一個子系統(tǒng)進行備份的同時還始終和一地對被標記為依賴于這一被備份的子系統(tǒng)的所有子系統(tǒng)進行備份。
3.根據(jù)權利要求2的系統(tǒng),其特征在于在根據(jù)副本恢復子系統(tǒng)時還恢復被標記為依賴于這一子系統(tǒng)的所有子系統(tǒng)。
4.根據(jù)前述任一權利要求的系統(tǒng),其特征在于在子系統(tǒng)的恢復操作方面只執(zhí)行導致所述子系統(tǒng)重新達到一致狀態(tài)的操作。
5.根據(jù)前述任一權利要求的系統(tǒng),其特征在于在子系統(tǒng)的恢復操作方面只采取不影響與被標記為依賴于這一子系統(tǒng)的那些子系統(tǒng)不同的子系統(tǒng)的措施。
6.根據(jù)前述任一權利要求的系統(tǒng),在該系統(tǒng)中,數(shù)據(jù)根據(jù)面向目標的語言來描述和排列,在該面向目標的語言中,概念目標指的是具有如何管理其信息的相關描述的信息包,其特征在于如果在關系恢復時,不一致值在兩個不同的恢復子系統(tǒng)中的目標之間出現(xiàn),就使用用滿足所有有效性約束的值來代替不一致值的重新設置方法。
7.根據(jù)權利要求6的系統(tǒng),其特征在于對目標的屬性通過簡單的賦值被重新設置為與兼容的值,以便不從其它目標建立任何依賴性并且不失敗。
8.根據(jù)權利要求1-5中任一權利要求的系統(tǒng),在該系統(tǒng)中,數(shù)據(jù)根據(jù)面向目標的語言來描述和排列,在該面向目標的語言中,概念目標指的是具有如何管理其信息的相關描述的信息包其特征在于如果在關系恢復時不一致值在兩個不同的恢復子系統(tǒng)中的目標之間出現(xiàn)就改變目標的狀態(tài)。
9.根據(jù)權利要求8的系統(tǒng),其特征在于消除引用。
10.根據(jù)權利要求8的系統(tǒng),其特征在于消除一個或兩個目標。
11.根據(jù)前述任一權利要求的系統(tǒng),在該系統(tǒng)中,數(shù)據(jù)根據(jù)面向目標的語言來描述和排列,在該面向目標的語言中,概念目標指的是具有如何管理其信息的相關描述的信息包,其特征在于通過從位于所涉及的依賴性關系的另一端的所有目標請求核實而檢驗目標依賴的關系,運行關系控制將冒出錯的危險。
12.根據(jù)前述任一權利要求的系統(tǒng),在該系統(tǒng)中,數(shù)據(jù)根據(jù)面向目標的語言來描述的排列,在該面向目標的語言中,概念目標指的是具有如何管理其信息的相關描述的信息包,其特征在于對一目標進行關系檢測以便在出錯的情況下重新設置該目標,并且告訴對于該目標具有依賴性關系的目標這些關系依賴于已被改變的目標。
13.根據(jù)前述任一權利要求的系統(tǒng),在該系統(tǒng)中,數(shù)據(jù)根據(jù)面向目標的語言來描述和排列,在該面向目標的語言中,概念目標指的是具有如何管理其信息的相關描述的信息包,其特征在于在其中包括一目標的恢復操作的情況下,不是重新設置目標的屬性,從目標中消除關系就是消除目標隨因其關系被規(guī)定為恢復動作的目標而定。
14.根據(jù)前述任一權利要求的系統(tǒng),在該系統(tǒng)中,數(shù)據(jù)根據(jù)面向目標的語言來描述和排列,在該面向目標的語言中,概念目標指的是具有如何管理其信息的相關描述的信息包,其特征在于在所有其它目標已被檢驗之前允許對被檢驗的目標執(zhí)行數(shù)據(jù)庫操作。
15.根據(jù)前述任一權利要求的系統(tǒng),在該系統(tǒng)中,數(shù)據(jù)根據(jù)面向目標的語言來描述和排列,在該面向目標的語言中,概念目標指的是具有如果管理其信息的相關描述的信息包,其特征在于恢復處理程序通過用表明目標位于關系恢復系統(tǒng)中,該目標已被反繞,其關系尚未被完全恢復以及自反繞以來,該目標尚未被檢驗的特征位,標記所有受影響的目標,通過啟動關系恢復處理程序和通過允許數(shù)據(jù)庫操作來開始關系恢復。
16.根據(jù)權利要求15的系統(tǒng),其特征在于關系恢復處理程序檢查被反繞的恢復系統(tǒng)以便消除已有的關系問題,并由此在某些應用程序打開涉及的目標之前消除大部分這些關系問題。
全文摘要
在出錯的情況下在數(shù)據(jù)庫中進行關系恢復的系統(tǒng),包括被計算機執(zhí)行的功能度且保證數(shù)據(jù)庫中的數(shù)據(jù)被作為在若干恢復子系統(tǒng)中的數(shù)據(jù)項來建立,各數(shù)據(jù)項只屬于一個子系統(tǒng)。如一子系統(tǒng)包含依賴于在另一子系統(tǒng)中的一個或多個數(shù)據(jù)項的一個或多個數(shù)據(jù)項,最先的子系統(tǒng)被標記為依賴于第二次提到的子系統(tǒng)。如第一子系統(tǒng)被標記為依賴于第二子系統(tǒng)而后者又被標記為依賴于第三子系統(tǒng),該第一子系統(tǒng)就被遞歸地標記為依賴于該第三子系統(tǒng)。
文檔編號G06F11/14GK1091846SQ9312113
公開日1994年9月7日 申請日期1993年12月8日 優(yōu)先權日1992年12月8日
發(fā)明者B·E·S·拉松, M·S·伊萬, H·J·辛托恩 申請人:艾利森電話股份有限公司