專利名稱:用于數據模型中實體的自動維護與修復的系統和方法
技術領域:
本發明一般涉及文件系統管理,并且尤其涉及確保對于一種數據模型的數據可靠性和一致性的自動化的文件系統維護與修復。本發明的各個方面屬于在一種數據實體級別上響應于并且校正邏輯數據誤差,而不丟失其它向下級別(子)數據實體。尤其是,本發明的各個方面特別屬于在一個基于項目(item)的硬件/軟件接口系統中邏輯型數據的維護。
背景雖然客戶端數據庫平臺(即家庭和商業臺式計算機)使用一種比服務器平臺上質量低得多的硬件,即使服務器類別硬件(控制器、驅動器、磁盤等等)也可以導致“物理”上的數據損壞,以至讀出操作不返回數據庫應用程序寫入數據存儲器中的內容。當然,對于各種理由的具有客戶端數據庫平臺(相對于服務器數據庫平臺)這顯然是一個更加豐富問題,所述理由包括但不局限于在寫操作當中由于意外的電源斷電(其依次導致損害的頁面和潛在的數據庫損壞)而導致的任意地斷電的客戶端機器增加的可能性,然而對于服務器數據庫系統更加普遍的是利用非中斷電源以緩和斷電問題。媒體衰退是另一個“物理”數據損壞的來源,其中物理存儲器媒體超時就會幾乎磨損。然而涉及可靠性的另一個來源是來自“邏輯”損壞的檢測和恢復,其由偶然的(例如程序錯誤)或致命的(例如病毒)的軟件錯誤所引起。
傳統地數據庫(以及數據庫文件系統)的維護與修復已經落到數據庫管理者等等具有良好開發技能以及具有數據庫系統高深知識者的身上,或者至少落到熟悉并且經常使用數據庫系統的個人以及相對熟練數據庫技術的許多人身上。另外一個方面,操作系統以及應用程序的普通消費者和業務最終用戶很少利用數據庫,并且對于數據庫維護以及修復問題的處理基本上未受過好的培訓。
雖然過去不相干的這兩組之間的技能水平大不相同,然而硬件/軟件接口系統的數據庫實施的文件系統創建了一種方案,其中這些較少經驗的最終用戶將面對他們基本上不能解決的數據庫維護和修復問題。因此一個業務/消費者數據庫實施的操作系統文件系統、或簡稱“數據庫文件系統”(DBFS)必須能夠檢測出損壞并且恢復它的數據庫到一種相互影響的一致狀態,在不可恢復的數據丟失的情況下,DBFS則必須保證在該級別原子變化單元中的邏輯型數據和維護的數據的一致性(即,在對于一個基于項目DBFS中的“項目”級別)。此外,對于遲鈍提交模式(lazy commit mode)下所缺省的DBFSs運行,恰好在不正常的關閉前所提交的事務持久性是不被保證的并且必須被說明和校正。
此外,雖然業務/消費者最終用戶將大大地受益于自動化DBFS的維護和恢復,但是數據庫管理者以及那些數據庫技能大師同樣受益于解決一般的數據庫維護與修復的方案。在本領域對于數據庫管理員來說使用數據庫工具(例如SQLServer 2000提供的數據庫協調顧問)是常事,但是這些工具不直接處理可靠性,相反而是提供一個管理數據庫備份的裝置,并且不以幾乎自動化的方式,而是需要包含實在的數據庫管理員,尤其當數據庫備份不可靠或出現其它修復問題。因此處理數據庫可靠性的自動化解決辦法將同樣有益于數據庫管理員及其他熟練的數據庫用戶。
DBFS的數據可靠性系統(DRS)包括一個主機(framework)以及一組用于自動地執行數據庫管理(DBA)任務的策略并且幾乎不涉及或不直接涉及最終用戶(以及因此基本上對于所述最終用戶是透明的)。對于若干實施例,DRS主機實施用于向DRS插入誤差以及事件報告、策略以及誤差/事件處理算法的機制。尤其是,對于這些實施例DRS是一個負責后臺DBFS維護以及修復的后臺線程,以及因此在高級別上DRS保護并且維護DBFS的總體完好。對于某些實施例,DRS包括對于物理數據損壞的以下特征(1)對于所有頁面類型,在一個頁面級別上響應并且校正數據損壞;以及(2)試圖對于索引頁面損壞(簇和非簇)、數據頁面損壞以及日志文件中的頁面損壞的第二級別恢復(重構或重新存儲)。因此,對于某些實施例,DRS包括以下功能(i)處理修復/恢復數據損壞情況;(ii)改善本系統的可靠性以及有效性;以及(iii)必要時為熟練的第三方保持一個DRS誤差/事件歷史表以調試數據庫或存儲器引擎問題。
雖然實施例可以處理物理數據損壞(即校正存儲在物理存儲器媒體上的數據庫中的損壞數據),但是一個穩固的DRS同時將處理實體(例如項目、擴展和/或關系)的邏輯型數據損壞,其一般保存在數據存儲器中,以便保證所述數據存儲器中所有這些實體都是一致的并且符合數據模型規則。
概述本發明各種實施例涉及一種DBFS的數據可靠性系統(DRS),所述DBFS包括一種保存在一種數據庫(物理數據)中的文件系統(邏輯型數據)或換言之,包括表示一種文件系統(邏輯型數據)的數據庫(物理數據)。DRS可以包括一個主機(framework)以及一組用于自動地執行數據庫管理(DBA)任務的策略并且幾乎不涉及或不直接涉及最終用戶(以及因此基本上對于所述最終用戶是透明的)。DRS主機實施用于向DRS插入誤差以及事件報告、策略以及誤差/事件處理算法的機制。尤其是,對于這些實施例DRS是一個負責后臺DBFS維護以及修復的后臺線程,以及因此在高級別上DRS保護并且維護DBFS的總體完好。
對于本發明各種實施例,DRS包括以下特征·物理數據校正對于所有頁面類型,在頁面級別上響應并且校正物理數據損壞,其中可以包括試圖改造或修復索引頁面損壞(簇和非簇)、數據頁面損壞以及日志文件中的頁面損壞的操作。
·邏輯數據校正在一個基于項目的操作系統中響應以及校正“實體”的邏輯型數據損壞,例如項目、擴展和/或關系(一個基于項目的操作系統是一個基于項目的硬件/軟件接口系統的一個實例)。
對于第二個核心,本發明的幾個實施例特別涉及一種邏輯一致性檢驗器(LCC),其分析以及校正典型地保存在數據存儲器中的實體(例如項目、擴展和/或關系)的邏輯“損壞”,以便保證所述數據存儲器中的所有這些實體都是一致的并且符合數據模型規則。對于某些實施例LCC可以是自治的,而對于其它實施例它也可以耦合到一個物理一致性檢驗器(PCC),其用于檢測并且校正物理數據損壞,和/或對于另外其它實施例LCC可以包含DRS的一個組件。
附圖簡述當結合附圖來閱讀時,更能理解上述概述以及以下優選實施例的詳細說明。為了說明本發明,附圖示出本發明示例性設計;然而本發明不局限于公開的這些具體方法和工具。在這些附圖中附
圖1是表示本發明的一些方面可以被包括在其中的一個計算機系統的方框圖;附圖2是說明表示本發明若干實施例的數據庫文件系統(DBFS)中的數據可靠性系統(DRS)的結構的框圖;附圖3是說明對于本發明某些實施例,邏輯上確定損壞實體的方法的處理流程圖;附圖4是一個處理流程圖,其說明對于本發明某些實施例的用于解決實體中的邏輯錯誤的LCC的三股(three-prong)方法。
附圖5A和5B是說明對于本發明某些實施例的涉及項目實體的替換方法的方框圖;以及附圖6A和6B是說明對于本發明某些實施例的涉及關系實體的替換方法的方框圖。
詳細說明本主題以滿足法定要求的特性加以描述。然而,說明書本身不想限制本專利的范圍。更確切的說,發明人已經想到所要求的主題可以以其它的方式來實施,即,通過包括和本文的描述相似的不同的步驟或步驟的組合,或結合其它現有的或者將來的技術。此外,盡管術語“步驟”這里可以用來暗示所使用的方法的不同單元,但是該術語不應該被解釋為暗示這里公開的各個步驟當中或之間任意的具體的順序,除非以及除了當明確地描述單個步驟的順序的時候。
上述概述提供本發明特征的一個概述。本發明一個實施例的詳細說明如下。對于如下所述各個實施例,本發明的特征被描述為單獨在MICROSOFT SQLSERVER數據庫系統(有時相當于這里簡寫的“SQL”)中實施或結合入下一代個人電腦操作系統(通常稱為“Windows Longhom”或簡稱“Longhom”)的MICROSOFT WinFS文件系統。如上所述,SQL SERVER包括MICROSOFT.NET公共語言運行時間(CLR)以允許管理的代碼寫入并且執行以在SQL SERVER數據庫的數據存儲器上操作。雖然如下所述實施例在這種環境中操作,可以理解的是本發明并不局限于SQL SERVER產品的實施。相反地,本發明可以以支持執行面向對象的編程代碼以在數據庫存儲器上操作的任何數據庫系統來實施,諸如面向對象的數據庫系統以及具有目標關系擴展的關系數據庫系統。因此,很清楚本發明不局限于如下所述具體的實施例,而是試圖覆蓋如附加權利要求定義的本發明的精神以及范圍內所有的修改。
計算機環境本發明的大量實施例可以在一個計算機上執行。附圖1及以下的討論用來提供一個本發明可以實施的一個合適的計算環境的簡短的一般說明。盡管不需要,但是本發明可以在計算機可執行指令的一般環境中描述,諸如通過一個計算機執行的程序模塊,所述計算機例如一個客戶工作站或一個服務器。一般地程序模塊包括執行具體的任務或實施具體的抽象數據類型的例程、程序、目標、組件、數據結構等等。此外,本領域的技術人員將會理解本發明可以由其他的計算機系統配置來實施,包括手持裝置、多處理器系統、基于微處理器或者可編程的消費者電子設備、網絡PC、小型計算機、大型計算機等等。本發明還可以在分布式計算環境中實施,其中所述任務由通過通信網絡連接的遠程處理裝置執行。在一個分布計算環境中,程序模塊可以位于本地以及遠程存儲器存儲設備上。
如附圖1所示,一個示例性通用計算機系統包括一個傳統的個人電腦20等等,包括處理裝置21、系統存儲器22以及系統總線23,所述系統總線23用于將包括系統存儲器的各個系統組成部分耦合到處理部件21。系統總線23可以是任何幾種類型的總線結構,包括存儲器總線或存儲控制器、外圍總線以及使用任何總線體系結構的本地總線。系統存儲器包括只讀存儲器(ROM)24以及隨機存取存儲器(RAM)25。基本輸入/輸出系統26(BIOS)保存在ROM 24中,其包括有助于在個人電腦20的組件之間傳遞信息的基本例程,例如在啟動期間。個人電腦20更進一步的包括用于從/向一個未示出的硬盤讀取以及寫入的硬盤驅動器27、用于從/向一個可移動的磁盤29讀取/寫入的磁盤驅動器28,以及用于從/向一個可移動的光盤31例如CD ROM或其它光學介質讀取/寫入的光盤驅動器30。硬盤驅動器27、磁盤驅動器28以及光盤驅動器30分別通過一個硬盤驅動器接口32、磁盤驅動器接口33以及一個光驅接口34連接到系統總線23。驅動器以及它們相關的計算機可讀取媒體提供計算機可讀指令、數據結構、程序模塊及其它個人電腦20的數據的非易失性存儲器。盡管這里描述的示例性環境使用了一個硬盤、一個可移動的磁盤29以及一個可移除的光盤31,本領域的技術人員應該理解本示例性操作環境中還可以使用由一個計算機訪問、可以存儲數據的其他的類型的計算機可讀媒體,例如磁帶盒、快擦寫存儲卡、數字視頻磁盤、Bemoulli盒式磁盤[帶]、隨機存取存儲器(RAMs)、只讀存儲器(ROMs)等等。
大量程序模塊可以存儲在硬盤、磁盤29、光盤31、ROM24或RAM25上,包括操作系統35、一或多個應用程序36、其它程序模塊37以及程序數據38。用戶可以通過輸入裝置例如鍵盤40以及指示器42向個人電腦20鍵入命令以及信息。其它的輸入裝置(未顯示)可以包括麥克風、操縱桿、游戲襯墊、衛星磁盤、掃描儀等等。這些及其它輸入裝置經常通過耦合到系統總線的串行端口接口46連接到處理部件21,但是還可以通過其它接口連接,例如并行端口、游戲端口或通用串行總線(USB)。監視器47或其它類型顯示設備同樣經過一個接口連接到系統總線23,所述接口例如一個視頻適配器48。除了監視器47,個人電腦一般包括其它外圍輸出設備(未顯示),例如揚聲器以及打印機。附圖1的示例性系統同樣包括一個主機適配器55、小型計算機系統接口(SCSI)總線56以及一個連接到SCSI總線56的外部存儲器裝置62。
個人計算機20可以通過使用與一個或多個遠程計算機(例如一個遠程計算機49)的邏輯連接而在運行在一個網絡環境中。遠程計算機49可以是另一個個人計算機、一個服務器、一個路由器、一個網絡PC、一個節點裝置或其它公用網絡節點,并且一般地包括相對于個人計算機20的如上所述的許多或所有的元件,盡管在附圖1中僅僅示出了一個存儲裝置裝置50。附圖1示出的邏輯連接包括一個局域網(LAN)51和一個廣域網(WAN)52。這種網絡環境在辦公室、企業的廣域計算機網絡、內部網以及互聯網中是常見的。
當用于一個局域網網絡環境中,個人計算機20通過網絡接口或適配器53連接到局域網51。當用于一個WAN網絡環境中,個人計算機20一般地包括一個調制解調器54或用于通過廣域網52例如互聯網建立通信的其它裝置。調制解調器54可以是內部或者外部的,經過串行端口接口46連接到系統總線23。在一個網絡環境中,相對于個人計算機20示出的程序模塊或其中部分可以保存在遠程存儲器存儲裝置中。可以理解的是顯示的網絡連接是示例性的,還可以使用建立計算機間通信連接的其它裝置。
雖然可以想象本發明的大量實施例尤其適合于計算機化的系統,但是本文獻不想用本發明來限制這些實施例。相反地,這里使用的術語“計算機系統”試圖包括能夠存儲和處理信息和/或能夠使用存儲信息以控制裝置本身的性能或運行的任何以及所有的裝置,而不管這種裝置本質上是電子的、機械的、邏輯的或虛擬的。
數據可靠性系統(DRS)的概述對于本發明的若干實施例,數據可靠性系統(DRS)是一個在后臺維護以及修復數據庫的線程,并且從而保護數據庫文件系統(DBFS)的全面完好。附圖2是一個說明DBFS中DRS結構的方框圖。在該附圖中,向大量應用程序212、214以及216提供操作系統級服務的操作系統202包括連接到持久數據存儲器232的DBFS 222。操作系統202進一步包括一個DRS 242,每當例如發現來自持久數據存儲器232中的大量頁面234、236以及238中的頁面誤差240時,其通過DBFS 222請求244,并且DRS 242然后根據頁面誤差240執行修復操作。
本發明的某些實施例提供DRS是可擴充的以便恢復策略以及檢測機制在DBFS釋放以后可被更新。若干實施例涉及當DBFS數據庫保持聯機時DRS運行修復。然而其它實施例涉及對DBFS存儲器的完全訪問(即sysadmin權限)。而其它實施例將具有對故障實時地作出檢測和反應的能力。
對于若干實施例,對所維護的數據而言,DRS修復將在級別變換單元中相互影響(即在基于項目的DBFS的“項目”級別)。對于各個實施例,修復要么完全地恢復一個項目要么取消它的更改(以及因此從不部分地校正錯誤),并且即使在處理過程中途中發生重新啟動DRS也可以繼續恢復/復位工作。對于本發明的若干實施例,DRS將會支持SQL事件以便如果SQL激發了一個一般的事件,DRS可以截取它并且作出反應(包括但不局限于823/824事件)。另外,本發明的某些實施例涉及數據庫引擎,該數據庫引擎可被修改以發送將由DRS特定處理的錯誤條件的DRS-特定事件。
對于本發明的各個實施例,每當DBFS從磁盤讀取或寫入頁面時,就會檢測出物理和/或邏輯損壞,而在這種情況下SQL則根據損壞的類型產生大量誤差中的一個,并且也將會激發特定的DRS事件以通知它的具體誤差條件,并且DRS將接收那些誤差并且將它們放在一個輸入隊列中以便處理。
對于本發明的若干實施例,確定一個頁面是否是物理損壞可以通過各種裝置完成,包括但不不局限于(a)檢查對于一個頁面的校驗和并且如果校驗和是無效的,則認為該頁面損壞或(b)通過檢驗日志序號(LSN)來查看它是否超過日志文件的結尾(其中LSN是一個整數,其隨每次處理遞增,以便如果日志文件中的最后處理是LSN 432并且找到一個具有更大的LSN的頁面那么就可定發生了一個無序的寫入錯誤)。關于這一點,存在四個主要類型的頁面損壞可以影響DBFS的操作(除了例如程序錯誤等等的其它原因),而這四個類型包括頁面損壞、媒體衰退、硬件故障以及無序寫入。當數據的一個頁面沒有被正確的原始寫入就發生了頁面損壞,并且因此頁面的任何部分可能被損壞,這是因為在寫入期間僅僅一個頁面的一些扇區在事件故障之前寫入到磁盤,所述故障事件例如電源故障或扇區寫入錯誤。當一個數據頁面位被物理媒介衰退損壞時就會發生媒體衰退。硬件故障可以以各種理由產生,其涉及總線、控制器或硬盤裝置。至于無序寫入,這些誤差產生于這樣一個事實,即IDE驅動器不能保證寫入磁盤的順序,特別是IDE驅動器具有寫入高速緩存使能(打開),并且因此對數據存儲器的寫入可能會無序地發生。如果發生部分連續的無序寫入但是通過電源故障而中斷,例如然后發生若干誤差,例如在相關的日志實體被寫入之前數據頁面被寫入磁盤。當通過檢測數據頁面上的日志序號(LSN)檢測出無序錯誤時,還沒有便利的方式來處理這種對每一個頁面的讀取的缺乏。
邏輯一致性檢驗器本發明的各種實施例特別地涉及一種邏輯一致性檢驗器(LCC),其分析并且校正實體的邏輯“損害”(例如項目、擴展和/或關系),所述實體表示保存在數據存儲器中以便確保所述數據存儲器中的所有實體都是一致的并且符合數據模型規則。對于某些實施例LCC可以是自治的,而對于其它實施例它也可以連接到一個物理一致性檢驗器(PCC),其用于檢測并且校正物理數據損壞,和/或對于另外其它實施例LCC可以包含DRS的一個組件。
對于通過數據庫技術(數據庫文件系統)而創建的文件系統,邏輯一致性和物理一致性是不同并且分開的,在這種意義上來說后者(物理一致性)指的是數據庫結構本身以及存儲介質上數據庫的物理存儲,然而前者(邏輯一致性)指的是由在所述數據庫中存儲的數據表示的邏輯型數據模式并且表示硬件/軟件接口系統的文件系統。
盡管在某些觀點上(如這里以下所討論的)物理一致性與邏輯一致性是有關的,本發明的某些實施例主要地涉及確保邏輯一致性。當然,導致物理不一致性的物理損壞(例如磁盤扇區損壞,所述磁盤扇區包括所述數據庫結構的一部分)同時可能導致邏輯一致性的破壞(例如,對于存儲在所述壞的磁盤扇區中的所述數據庫中的實體的數據丟失),然而并非所有邏輯損害一定表示物理損壞(例如由一個軟件錯誤引起的邏輯錯誤違反了數據模型規則)。因此,邏輯不一致性可以分成兩種類型(i)由于物理損壞的邏輯不一致性,以及(ii)由于至少一個數據模型規則的破壞而引起的邏輯不一致性(例如,所有實體屬性值必須在一個規則特定范圍之內,一個實體必須具有所有的組成的部分,以及項目必須具有至少一個保留的關系等等)。
一般說來,“修復”一個邏輯錯誤本質上次于“恢復”其中有錯誤發生的數據,因為數據的備份可能是一個破壞或丟失的數據的很好的復制(或可用于重新產生一個很好的復制)。因此,恢復技術優于修復技術。
對于本發明的若干實施例,可以使用附圖3所示的方法來確定頁面上任何實體是否存在邏輯損壞。對于這種方法,步驟302 LCC檢查數據庫表存在于DBFS的實體的參照完整性(“實體外部”)然后,在步驟304 LCC檢查每個實體的結構完整性(該“實體內部”,例如約束條件與關系)以確保不違背數據模型規則。(對于某些實施例,LCC檢查該數據庫中的每個實體。)在步驟306,對于某些實施例LCC可以同時檢查周期數(例如,其中實體A具有對實體B的一個占有關系以及實體B具有對實體A的一個占有關系)。在完成上述檢查以后,在步驟308 LCC然后解決識別的邏輯不一致性。
對于本發明的若干實施例,LCC使用如附圖4示出的三股方法解決邏輯錯誤。首先,在步驟402,LCC試圖使用頁面以及事務記錄的最近快照(snapshot)執行一個頁面級別恢復(PLR),以完美地修復具有錯誤的頁面。然而,如果PLR在步驟404不可能或不能改正錯誤,LCC然后在步驟406試圖通過首先確定該具體的損害的實體進行實體級別恢復(ELR),然后修復那些來自另一個原因的實體(例如備份或同步的復制品)。如果在步驟408PLR以及ELR都不可能或不能校正錯誤,那么在步驟410 LCC將會用一個偽實體(DE)替換存儲器中損害的實體,以便保證如以下論述的文件系統存儲器的一致性視圖。
通過用DE替換損壞的實體,LCC保證所述損壞實體的消除不破壞所述損壞實體的子實體,就是說LCC防止了從損壞實體到它的從屬的向下級別損壞。為了達到這個,DE主要替換損壞的實體但是盡可能保持來自損壞實體的盡可能多的信息。如果損壞實體是一個項目,例如替換DE將會保持同樣多的屬性數據,以及其它項目的所有關系。另一方面,如果損壞實體是一個關系,替換DE將會繼續連接它一起從屬的項目。同時該損壞實體移到(對于項目)或注冊在(對于關系)一個壞的項目文件夾(BIF)。當該損壞實體是一個項目,該BIF將會和該損壞實體具有一種關系(例如一個保持關系)。
附圖5A和5B是用于說明關于本發明某些實施例的項目的替換方法的方框圖。在附圖5A中,其示出一組項目與關系,I1是一個父項目,I2是一個經過關系R12的I1的子項目,I3是一個經過關系I23的I2的子項目,而I4和I5分別是經過關系R34以及R35的I3的子項目。在這個實施例中,項目I2例如被一個錯誤的應用程序所破壞,結果項目I2現在違反數據模型規則。在附圖5B,識別出I2為破壞項目的LCC首先創建DE 12′,并且在DE 12′和它的父I1間建立第一關系R12′以及在DE 12′和它的子I3間建立第二關系R23′。對于某些實施例,DE給出和損壞項目相同的項目識別號(ItemID)。損壞項目I2然后移到BIF中以及具有BIF項目和損壞項目I2間的保持關系Rh。
對于某些實施例,新的關系R12′以及R23′事實上可以是原始關系R12以及R23,其更新為與I2′代替I2有關。對于其它實施例,R12′以及R23′可以完全是新的關系并且,對于某些這種實施例,R12和R23可以保持為具有在BIF中損壞項目I2的懸擺關系(dangling relationships)。無論如何,DE有效地為數據集保存父/子結構并且從而防止I2的錯誤級聯I3、I4和I5中的錯誤,否則其不能從I1得到。
附圖6A和6B是用于說明對于本發明某些實施例的關系的替換方法的方框圖。在附圖6A中,其說明部分組的項目與關系,I1是一個父項目,而I2是經過關系R12的I1的一個子項目。在這個實施例中,關系R12例如通過病毒破壞,結果導致關系R12具有一屬性值,例如一安全屬性值,超出數據模型中一些預先決定的允許范圍。在附圖6B中,將R12識別為破壞關系的LCC首先創建I2和它的父I1間的DE R12′,并且淘汰破壞的關系R12(由于關系不能單獨存在該BIF中而不移到該BIF中),而擁有關系R12的項目I1存入該BIF中(BIF為此目的而具有專門的日志且在這里示出,例如作為日志項目)。
對于同步,而為了避免從伙伴到伙伴的錯誤地同步的破壞實體的可能性(從而擴展該損壞),本發明的某些實施例通過利用特定的“非授權”標記來標記(例如,一個單獨的位)DE從而劃分識別的和/或破壞的損壞,其有效地通知具有這個實體很好的復制的任何同步的復制品以改寫這個實體(在這一點上非授權位被清除)。同樣,如果DE隨后被修改(例如通過一個最終用戶),某些實施例也將會將DE標記為“非授權而且修改”以保證在修改的DE和復制品上原始項目的很好的復制間使用沖突解決方法,并且該非授權并且修改標記在沖突已經解決時移除。
附加的功能·如這里描述的,項目擴展認為是自己項目的部分,并且因此任何擴展損壞都被認為項目損壞。然而,在某些備選方案實施例中,擴展可以當做和他們自己的項目是不同的并且分開的。
·對于本發明的某些實施例,LCC在實體上運行,其遵循所執行的恢復操作以校正物理損壞。
·對于某些實施例,在試圖校正破壞的關系之前LCC首先試圖修復破壞的項目以避免“假想的”損壞的檢測,如果在依賴于校正的關系之前項目沒有被校正,則該“假想的”損壞便可能產生。
·對于某些實施例,如果一個BIF并不已存在于該DBFS中,則BIF是由LCC創建的文件夾項目。這個文件夾可以保留DBFS中任何類型的項目(然而對于某些實施例并非關系),并且該文件夾位于遠離默認數據庫存儲器的根目錄(為了易于訪問和定位)。
·對于某些實施例,沒有備用文件的任何項目將被插入該BIF中,同時無對應項目的任何文件也將會處于該BIF中。
·對于某些實施例,當損壞項目移到該BIF,該BIF可以同時存儲關于損壞項目為什么被移到該BIF的信息。
結論這里描述的各種系統、方法和技術可以以硬件或軟件或適當的兩者的結合來實施。因此,本發明的方法和裝置,或某些方面或其中的部分可以采取體現在在有形的媒體里的程序代碼(即指令)的形式,例如軟磁盤、CD-ROM、硬盤或任何其它機器可讀的存儲介質,其中,當程序代碼載入并且由機器執行時,例如計算機,該機器成為一個用于實踐本發明的裝置。在程序代碼運行在可編程計算機上的情況下,計算機將一般包括處理器、由處理器可讀取的存儲介質(包括易失的和非易失性存儲器和/或存儲元件)、至少一個輸入裝置以及至少一個輸出裝置。最好在一個較高級別的過程的或面向對象編程語言中實施一或多個程序以和一個計算機系統進行通信。然而,如果需要,程序可以以匯編或機器語言來實現。在任何情況下,語言可以是編譯的或解釋的語言,以及結合硬件實現。
本發明的方法和裝置還可以體現在程序代碼的形式中,所述程序代碼經過一些傳輸介質傳輸,例如通過電線或電纜,通過光纖或經過任何其他的傳輸的形式,其中,當接收程序代碼并且載入以及由機器執行時,例如一個EPROM、門陣列、可編程邏輯器件(PLD)、客戶端計算機、電視錄象機等等,該機器就成為用于實踐本發明的裝置。當實施在通用處理機上時,該程序代碼結合該處理器,以提供一種唯一的裝置,其用來執行本發明的索引功能。
雖然結合各種附圖的優選實施例已經描述了本發明,但是可以理解的是,在不背離其范圍的情況下,可以使用其它相似的實施例,或者可以對描述的實施例做出修改和添加,以用于執行和本發明相同的功能。例如,雖然本發明的示例性實施例是在仿真個人計算機功能的數字裝置的環境中描述的,但是本領域的技術人員應該認識到本發明不局限于這種數字裝置,如上所述本發明的應用程序可以適用于許多現有的或者涌現的計算裝置或環境,例如一種游戲控制臺、手持式計算機、便攜式計算機等等。無論有線或者無線,并且可以應用于經過通信網絡連接并和該網絡相互作用的許多這種計算裝置。此外,需要強調的是各種計算機平臺,這里想到了包括手持裝置操作系統及其他應用程序特定硬件/軟件接口系統,尤其是繼續激增的大量無線網絡裝置。因此,本發明不應該限于任何單一的實施例,而是根據附加權利要求的寬度和范圍來解釋。
權利要求
1.一種用于數據庫文件系統(DBFS)的邏輯一致性檢驗器(LCC),所述LCC包括至少一個系統用于檢驗對應于所述DBFS的數據庫中的一組表格的參照完整性的至少一個邏輯不一致性;以及檢驗所述DBFS表示的一組實體的結構完整性的至少一個邏輯不一致性。
2.權利要求1的系統,進一步包括至少一個子系統,用于檢驗組成邏輯不一致性的至少一個周期。
3.權利要求1的系統,進一步包括至少一個子系統,用于解決至少一個邏輯不一致性。
4.權利要求3的系統,其中用于解決至少一個邏輯不一致性的所述至少一個子系統試圖從以下解決辦法的組中選擇至少一個解決辦法頁面級別恢復、實體級別恢復以及用偽實體替換損壞實體。
5.權利要求4的系統,其中用于解決至少一個邏輯不一致性的所述至少一個子系統首先試圖進行頁面級別恢復以及,如果沒有成功,然后試圖進行實體級別恢復以及,如果沒有成功,然后用一種偽實體替換對應于所述至少一個邏輯不一致性的至少一個損壞實體。
6.權利要求4的系統,其中如果所述實體是一個項目,所述用一種偽實體替換損壞實體的解決辦法包括創建所述偽實體并且用所述偽實體重定向屬于所述損壞實體的至少一個關系;以及將所述損壞實體移到一個壞的項目文件夾。
7.權利要求4的系統,其中如果所述實體是一種關系,所述用一種偽實體替換損壞實體的解決辦法包括創建所述偽實體作為對應于損壞項目關系的關系;并且將所述損壞實體存入一個壞的項目文件夾。
8.一種用于數據庫文件系統(DBFS)的自動化數據可靠性系統(DRS),所述DRS包括一組用于執行數據庫管理(DBA)任務的策略;一種用于在一種頁面級別上解決一組物理數據損壞的子系統;以及一種用于在一個實體級別上解決一組邏輯型數據損壞的子系統。
9.權利要求8的系統,其中所述DBFS是一種基于項目的硬件/軟件接口系統的組件。
10.權利要求8的系統,進一步包括一個接口,用于從以下功能組中添加、刪除并且修改至少一個功能錯誤以及事件報告、策略、以及誤差/事件處理算法。
11.權利要求8的系統,其中所述DRS作為一種后臺線程進行操作。
12.權利要求8的系統,其中當執行用于在一個頁面級別上解決一組物理數據損壞的所述子系統之后,執行用于一個實體級別上解決一組邏輯型數據損壞的所述子系統。
13.權利要求8的系統,其中用于在一個實體級別上解決一組邏輯型數據損壞的子系統在試圖校正對應于所述破壞項目的破壞關系之前試圖修復一種破壞項目。
14.一種用于處理實體級別上邏輯不一致性的一種數據庫文件系統(DBFS)的一種邏輯一致性檢驗器(LCC)的方法,所述方法包括檢驗對應于所述DBFS的數據庫中的一組表格的參照完整性的至少一個邏輯不一致性;以及檢查所述DBFS表示的一組實體的結構完整性的至少一個邏輯不一致性。
15.權利要求14的方法,進一步包括檢驗組成一種邏輯不一致性的至少一個周期。
16.權利要求14的方法,進一步包括解決至少一個邏輯不一致性。
17.權利要求16的方法,其中所述解決至少一個邏輯不一致性的要素包括試圖從以下解決辦法的組中選擇一個解決辦法頁面級別恢復、實體級別恢復以及用偽實體替換損壞實體。
18.權利要求17的方法,其中所述解決至少一個邏輯不一致性的要素包括試圖頁面級別恢復;如果所述試圖頁面級別恢復沒有成功,則試圖實體級別恢復;以及如果所述試圖實體級別恢復沒有成功,則用一種偽實體替換對應于所述至少一個邏輯不一致性的至少一個損壞的實體。
19.權利要求17的方法,其中如果所述實體是一個項目,所述用一種偽實體替換損壞實體的解決辦法進一步包括創建所述偽實體并且用所述偽實體重定向屬于所述損壞實體的至少一個關系;以及將所述損壞實體移動到一個壞的項目文件夾。
20.權利要求17的方法,其中如果所述損壞實體是一種關系,所述用一種偽實體替換損壞實體的解決辦法包括創建所述偽實體作為對應于損壞項目關系的關系;并且將所述損壞實體存入一個壞的項目文件夾。
21.一種用于處理實體級別上邏輯不一致性的一種數據庫文件系統(DBFS)的一種自動化數據可靠性系統(DRS)的方法,所述方法包括使用一組用于執行數據庫管理(DBA)任務的策略;在一種頁面級別上解決一組物理數據損壞;以及在一個實體級別上解決一組邏輯型數據損壞。
22.權利要求21的方法,其中所述DBFS是一種基于項目的硬件/軟件接口系統的組件。
23.權利要求21的方法,進一步包括一個接口,用于從以下功能的組中添加、刪除并且修改至少一個功能錯誤以及事件報告、策略、以及誤差/事件處理算法。
24.權利要求21的方法,其中所述DRS作為一種后臺線程進行操作。
25.權利要求21的方法,其中當執行用于在一個頁面級別上解決一組物理數據損壞的所述子系統之后,執行用于一個實體級別上解決一組邏輯型數據損壞的所述要素。
26.權利要求21的方法,其中在一個實體級別上解決一組邏輯型數據損壞的要素包括在試圖校正對應于所述破壞項目的破壞關系之前試圖修復一種破壞的項目。
27.一種計算機可讀取媒體,包括計算機可讀指令,其用于處理實體級別上邏輯不一致性的一種數據庫文件系統(DBFS)的一種邏輯一致性檢驗器(LCC),,所述計算機可讀指令包括用于執行以下操作的指令檢驗對應于所述DBFS的數據庫中的一組表格的參照完整性的至少一個邏輯不一致性;以及檢查所述DBFS表示的一組實體的結構完整性的至少一個邏輯不一致性。
28.權利要求27的計算機讀指令,進一步包括指令用于檢驗組成一種邏輯不一致性的至少一個周期。
29.權利要求27的計算機可讀指令,進一步包括指令用于解決至少一個邏輯不一致性。
30.權利要求29的計算機可讀指令進一步包括的指令使所述解決至少一個邏輯不一致性的要素包括試圖從以下解決辦法的組中選擇一個解決辦法頁面級別恢復、實體級別恢復以及用偽實體替換損壞實體。
31.權利要求30的計算機可讀指令進一步包括的指令使解決至少一個邏輯不一致性的所述要素包括試圖頁面級別恢復;如果所述試圖頁面級別恢復沒有成功,則試圖實體級別恢復;以及如果所述試圖實體級別恢復沒有成功,則用一種偽實體替換對應于所述至少一個邏輯不一致性的至少一個損壞的實體。
32.權利要求30的計算機可讀指令進一步包括的指令使得,如果所述實體是一個項目,則所述用偽實體替換損壞實體進一步包括創建所述偽實體并且用所述偽實體重定向屬于所述損壞實體的至少一個關系;以及將所述損壞實體移動到一個壞的項目文件夾。
33.權利要求30的計算機可讀指令進一步包括的指令使得,如果所述實體是一種關系,則所述用一種偽實體替換損壞實體的解決辦法包括創建所述偽實體作為對應于損壞項目關系的關系;并且將所述損壞實體存入一個壞的項目文件夾。
34.一種計算機可讀取媒體,包括計算機可讀指令,其用于處理實體級別上邏輯不一致性的一種數據庫文件系統(DBFS)的一種自動化數據可靠性系統(DRS),所述計算機可讀指令包括用于執行以下功能的指令使用一組用于執行數據庫管理(DBA)任務的策略;在一種頁面級別上解決一組物理數據損壞;以及在一個實體級別上解決一組邏輯型數據損壞。
35.權利要求34的計算機可讀指令進一步包括的指令使所述DBFS是一種基于項目的硬件/軟件接口系統的組件。
36.權利要求34的計算機可讀指令進一步包括的指令使得,用于從以下功能的組中添加、刪除并且修改至少一個功能錯誤以及事件報告、策略、以及誤差/事件處理算法。
37.權利要求34的計算機可讀指令進一步包括的指令使所述DRS以一種后臺線程操作。
38.權利要求34的計算機可讀指令進一步包括的指令使得,當執行用于在一個頁面級別上解決一組物理數據損壞的所述子系統之后,執行用于在一個實體級別上解決一組邏輯型數據損壞的所述要素。
39.權利要求34的計算機可讀指令進一步包括的指令使得,在一個實體級別上解決一組邏輯型數據損壞的要素進一步包括在試圖校正一種對應于所述破壞項目的破壞關系之前試圖修復一種破壞項目。
40.一種用于處理實體級別上邏輯不一致性的一種數據庫文件系統(DBFS)的一種自動化數據可靠性系統(DRS)的硬件控制裝置,所述裝置包括裝置用于利用一組用于執行數據庫管理(DBA)任務的策略;在一個頁面級別上解決一組物理數據損壞;以及在一個實體級別上解決一組邏輯型數據損壞檢驗對應于所述DBFS的數據庫中的一組表格的參照完整性的至少一個邏輯不一致性;以及檢查所述DBFS表示的一組實體的結構完整性的至少一個邏輯不一致性。
全文摘要
本發明涉及一種邏輯一致性檢驗器(LCC),其單獨工作或者與一種硬件/軟件接口系統的數據庫文件系統的一種物理一致性檢驗器(PCC)和/或一種數據可靠性系統(DRS)結合工作。邏輯型數據校正適合于實體的邏輯型數據損壞(例如,在一個基于項目的操作系統中的項目、擴展和/或關系,其中基于項目的操作系統是基于項目的硬件/軟件接口系統的一個實例)。關于這一點,LCC分析并且校正對于典型地保存在數據存儲器中的實體的邏輯損害,以便保證所述數據存儲器中的所有這些實體都是一致的并且符合數據模型規則。
文檔編號G06F17/30GK1707481SQ200510087840
公開日2005年12月14日 申請日期2005年5月8日 優先權日2004年5月3日
發明者A·A·歐克斯, H·R·科達瓦拉, M·J·斯利曼, N·R·艾利斯 申請人:微軟公司