專利名稱:數(shù)據(jù)庫破壞恢復系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及數(shù)據(jù)庫管理系統(tǒng),尤其涉及恢復系統(tǒng)和方法。
北旦 冃足
事務被假定為具有ACID性質(zhì)。更具體地,事務應為原子、 一致、隔離且持 久的。數(shù)據(jù)庫機制實施原子性、隔離性和持久性,即"AID"屬性。用戶編寫的事 務代碼負責一致性(即"C"),這意味著事務應采用之前的一致狀態(tài),并創(chuàng)建新 的一致狀態(tài)來更新它。不幸的是,用戶事務可能有缺陷而導致不一致、無效或破壞 的狀態(tài)。
利用數(shù)據(jù)庫系統(tǒng)的一個強有力的理由在于,它們允諾保衛(wèi)它們所存儲的數(shù)據(jù) 的完整性。數(shù)據(jù)庫系統(tǒng)實現(xiàn)事務來提供原子性,其約定是全部執(zhí)行或全部不執(zhí)行, 從而防止部分事務執(zhí)行,在部分事務執(zhí)行中,例如旨在在帳戶之間轉(zhuǎn)帳的金額僅被 提取(withdrawal)或存入(credit)但不會執(zhí)行兩者。數(shù)據(jù)庫系統(tǒng)實現(xiàn)重做恢復以 及強制的日志記錄,使得一旦數(shù)據(jù)庫響應接受事務更新的責任,這些更新即被保證 被包括在數(shù)據(jù)庫狀態(tài)中。換言之,更新是持久的。這樣的系統(tǒng)也實現(xiàn)隔離性,使得 一個事務的作用不會干擾另一事務的作用,從而提供事務按順序連續(xù)執(zhí)行的假像。
然而,這些公知技術(shù)不能直接處理數(shù)據(jù)破壞的問題。 '
數(shù)據(jù)可因多種方式而被破壞??善茐臄?shù)據(jù)的一種方式是,磁盤或者災難性地 或者因丟失比特的軟故障而出現(xiàn)故障。這被稱為介質(zhì)故障,對其處理被稱為介質(zhì)恢 復。對于數(shù)據(jù)庫系統(tǒng)提供介質(zhì)恢復存在眾多方法。例如,使用鏡像或某種形式的 RAID (獨立磁盤冗余陣列)的復制可提供足以重構(gòu)破壞或壞數(shù)據(jù)的冗余度。更傳 統(tǒng)地,數(shù)據(jù)庫系統(tǒng)生成定期備份,即優(yōu)化用于高速讀寫的特殊形式的副本(例如, 磁帶備份)。由于事務可在備份之間執(zhí)行和提交,因此介質(zhì)恢復涉及加載備份(被 稱為還原)并使用介質(zhì)恢復日志來實施重做恢復。介質(zhì)恢復日志是記錄自進行備份 以來的所有事務更新的特殊日志。介質(zhì)恢復日志可用于使被還原的備份前進。然而, 該過程是費力的且通常導致相當長時間的停止。
4盡管如此,介質(zhì)恢復不直接處理錯誤事務的問題。錯誤事務造成的損害尤其 有害,因為不僅這些事務寫入的數(shù)據(jù)破壞了,而且由隨后讀取該數(shù)據(jù)的所有事務寫 入的數(shù)據(jù)同樣破壞了。
用于消除因錯誤事務導致的數(shù)據(jù)破壞的一種技術(shù)基于上述介質(zhì)恢復技術(shù),其 中備份被還原,且利用介質(zhì)恢復日志使數(shù)據(jù)庫狀態(tài)前進。然而,如果盲目應用,介 質(zhì)恢復將僅重構(gòu)破壞的數(shù)據(jù)。為了防止這種情況的發(fā)生,習慣上使介質(zhì)恢復過程在 恢復數(shù)據(jù)庫的當前狀態(tài)之前暫停。更具體地,直到破壞事務執(zhí)行之后才允許介質(zhì)恢 復繼續(xù)。這被稱為時間點(point in time)恢復,而它的確移除了破壞事務的作用。
不幸的是,時間點恢復系統(tǒng)就使用成本及它對數(shù)據(jù)庫、其用戶以及負責管理
數(shù)據(jù)庫的人員的影響而言是冒險的措施。時間點恢復因其引入當使用備份來還原數(shù)
據(jù)庫并使用介質(zhì)恢復日志來使數(shù)據(jù)庫狀態(tài)前進至剛好在破壞事務之前的所需時間
時的長時間停止而成本高昂。從而,這可嚴重地損害數(shù)據(jù)庫的可用性。而且,在破
壞事務之后提交的所有事務被取消提交。在高性能事務應用中,這可導致數(shù)百甚至
數(shù)千事務被取消提交。這些事務隨后以某種方式被重新提交以便執(zhí)行,以限制破壞
引起的損害。這是非常艱巨的過程,至少部分是因為重新執(zhí)行這些事務中的任一個 可導致與其原始執(zhí)行不同的結(jié)果。
概述
以下呈現(xiàn)了本發(fā)明的簡化概述以提供對本發(fā)明某些方面的基本理解。該概述 不是本發(fā)明的詳盡概觀。它不旨在標識本發(fā)明的重要/關(guān)鍵元素或描繪本發(fā)明的范 圍。其唯一目的在于以簡化的形式提供本發(fā)明的某些概念以作為稍后呈現(xiàn)的更詳細 描述的序言。
簡要描述,本發(fā)明涉及用于對抗破壞的系統(tǒng)和方法。根據(jù)本發(fā)明的一方面, 提供了急劇減少或消除破壞之后有效事務的取消提交或移除的系統(tǒng)和方法。更具體 地,可標識因缺陷或不正確事務導致的初始破壞數(shù)據(jù)項。該初始破壞數(shù)據(jù)項然后可 被用來確定派生的破壞數(shù)據(jù)項,后者因其對初始破壞數(shù)據(jù)項的依賴而是破壞的。根 據(jù)本發(fā)明的一方面,可維護日志來便于標識派生的破壞項。該日志除標識事務所寫 或更新的數(shù)據(jù)項的通常記錄以外,還可包括標識事務所讀取的數(shù)據(jù)項的一個或多個 記錄。然后可在數(shù)據(jù)存儲中將初始和派生或依賴的破壞項標記為無效,以將其與有 效數(shù)據(jù)項區(qū)分開。
根據(jù)本發(fā)明的一方面,所提供的系統(tǒng)和方法允許針對帶有無效數(shù)據(jù)的數(shù)據(jù)存儲進行交互和事務處理。換言之,事務處理可繼續(xù)而幾乎不因生成破壞數(shù)據(jù)的破壞 或缺陷事務中斷。
根據(jù)本發(fā)明的另一方面,可査詢無效數(shù)據(jù)項來允許檢査無效數(shù)據(jù)及對其可能 的更改。例如,可采用帶有標識無效數(shù)據(jù)的特別關(guān)鍵字的SQL查詢。
根據(jù)本發(fā)明的另一方面,可生成改正動作并將其應用于數(shù)據(jù)項及其依賴項以 使無效數(shù)據(jù)再次有效。
根據(jù)本發(fā)明的又一方面,可結(jié)合本發(fā)明的其它方面采用多版本或事務時間數(shù) 據(jù)庫。事務時間數(shù)據(jù)庫消除了在破壞檢測之后對檢索和安裝備份數(shù)據(jù)庫的需求,從 而急劇地增強了數(shù)據(jù)庫系統(tǒng)對付破壞事務及其它方面的能力。
本發(fā)明的各方面提供顯著減少被取消提交的事務的數(shù)目,尤其是在破壞之后 發(fā)生的有效事務的數(shù)目及其它方面的破壞恢復的改進。此外,用于利用事務時間數(shù) 據(jù)庫來處理破壞數(shù)據(jù)的過程導致比當前常規(guī)時間點恢復的情況短得多的停止時間。
為了達到前述和相關(guān)目的,此處結(jié)合以下描述和附圖描述了本發(fā)明的某些說 明性方面。這些方面指示可實現(xiàn)本發(fā)明的各種方式,它們均旨在由本發(fā)明所覆蓋。 在結(jié)合附圖考慮本發(fā)明的以下詳細描述之后,本發(fā)明的其它優(yōu)點和新穎的特征將是 顯而易見的。
附圖簡述
圖1是根據(jù)本發(fā)明的一方面的破壞恢復系統(tǒng)的框圖。
圖2是根據(jù)本發(fā)明的一方面的隔絕(quarantine)組件的框圖。
圖3是根據(jù)本發(fā)明的一方面的事務日志的框圖。
圖4a是與示例性破壞恢復系統(tǒng)相關(guān)聯(lián)的數(shù)據(jù)存儲和日志的圖示。
圖4b是與示例性破壞恢復系統(tǒng)相關(guān)聯(lián)的數(shù)據(jù)存儲和日志的圖示。
圖5是根據(jù)本發(fā)明的一方面的破壞恢復系統(tǒng)的框圖。
圖6是根據(jù)本發(fā)明的一方面的查詢接口系統(tǒng)的框圖。
圖7是根據(jù)本發(fā)明的一方面的破壞恢復系統(tǒng)的框圖。
圖8是根據(jù)本發(fā)明的一方面的破壞恢復系統(tǒng)的框圖。
圖9是根據(jù)本發(fā)明的一方面便于破壞恢復的系統(tǒng)的框圖。
圖IO是根據(jù)本發(fā)明的一方面的破壞方法的流程圖。
圖11是根據(jù)本發(fā)明的一方面用于破壞恢復系統(tǒng)的支持方法的流程圖。
圖12是根據(jù)本發(fā)明的一方面與數(shù)據(jù)存儲交互的方法的流程圖。圖13是根據(jù)本發(fā)明的一方面與破壞數(shù)據(jù)交互的方法的流程圖。 圖14是示出根據(jù)本發(fā)明的一方面的合適操作環(huán)境的示意性框圖。 圖15是本發(fā)明可與之交互的示例計算環(huán)境的示意性框圖。
詳細描述
現(xiàn)在參考附圖描述本發(fā)明,在全部附圖中,相同的參考標號指的是相同或相 應的元素。然而,應該理解,附圖及其詳細描述不旨在將本發(fā)明限制于所公開的具 體形式。相反,意圖是覆蓋落入本發(fā)明的精神和范圍內(nèi)的所有修改、等效方式和替 換方式。
如本申請中所使用的,術(shù)語"組件"和"系統(tǒng)"等指的是計算機相關(guān)的實體, 或者是硬件、硬件和軟件的組合、軟件或者是執(zhí)行中的軟件。例如,組件可以是, 但不限于,運行在處理器上的進程、處理器、對象、實例、可執(zhí)行代碼、執(zhí)行的線 程、程序和/或計算機。作為說明,運行在計算機上的應用程序和該計算機本身均 可以是組件。 一個或多個組件可以駐留在進程和/或執(zhí)行中的線程內(nèi),且組件可以 位于一臺計算機上和/或分布在兩臺或多臺計算機之間。
詞語"示例性"此處被用來指用作示例、實例或說明。此處被描述為"示例 性"的任何方面和設(shè)計不必解釋為較其它方面或設(shè)計更優(yōu)選和有利。
而且,本發(fā)明可被實現(xiàn)為方法、裝置或制品,它們使用標準程序設(shè)計和/或工 程技術(shù)來生產(chǎn)軟件、固件、硬件或其任何組合,來控制計算機實現(xiàn)所公開的發(fā)明。 如此處所用的術(shù)語"制品"旨在包含可從任何計算機可讀設(shè)備、載波或介質(zhì)訪問的 計算機程序。例如,計算機可讀介質(zhì)可包括,但不限于,磁性存儲設(shè)備(例如,硬
盤、軟盤、磁條…)、光盤(例如,緊致盤(CD)、數(shù)字多功能盤(DVD)…)、 智能卡和閃存設(shè)備(例如,卡、棒、鍵驅(qū)動器…)。另外,應該理解,可使用載波 來攜帶計算機可讀電子數(shù)據(jù),諸如在發(fā)送和接收電子郵件或者訪問諸如因特網(wǎng)或局
域網(wǎng)(LAN)等網(wǎng)絡中所使用的那些。當然,本領(lǐng)域的技術(shù)人員可以認識到,可 對此配置進行多種修改,而不背離本發(fā)明的范圍或精神。
一開始轉(zhuǎn)向圖l,根據(jù)本發(fā)明的一方面描述了破壞恢復系統(tǒng)100。破壞恢復系 統(tǒng)100包括破壞檢測組件110、隔絕組件120、事務日志組件130、和數(shù)據(jù)存儲140。 數(shù)據(jù)破壞可以是物理和/或邏輯性的。例如,環(huán)境影響可引起更改一個或多個數(shù)據(jù) 項的軟錯誤。除此以外或替換地,可能會執(zhí)行產(chǎn)生非預期作用的事務。從而,破壞 檢測組件UO可監(jiān)控事務以及數(shù)據(jù)存儲140。基于所接收的輸入,組件110可檢和/或便于檢測一個或多個數(shù)據(jù)項的破壞。關(guān)于所檢測數(shù)據(jù)破壞的身份和其它信息 可被轉(zhuǎn)發(fā)給隔絕組件120。隔絕組件120可接收該初始的破壞數(shù)據(jù)項,并確定相關(guān)
的數(shù)據(jù)項。換言之,隔絕組件120可標識從初始破壞數(shù)據(jù)派生的附加數(shù)據(jù)項,例如
一事務讀取破壞數(shù)據(jù)并利用這樣的數(shù)據(jù)來生成并存儲另一數(shù)據(jù)項。所存儲的數(shù)據(jù)項
因其對破壞項的依賴也被視為破壞的。隔絕組件120可利用事務日志130以便于標 識相關(guān)破壞數(shù)據(jù)。事務日志130可以是駐留在計算機可讀介質(zhì)上的數(shù)據(jù)存儲。日志 130可包括由每一事務讀寫的數(shù)據(jù)項。在標識初始破壞數(shù)據(jù)項和從其派生的破壞數(shù) 據(jù)項之后,隔絕組件120可將這些破壞數(shù)據(jù)項與數(shù)據(jù)存儲140上的其余數(shù)據(jù)隔離。 數(shù)據(jù)存儲140是諸如提供數(shù)據(jù)項的持久存儲的數(shù)據(jù)庫的制品或計算機可讀介質(zhì)。根 據(jù)本發(fā)明的一方面,數(shù)據(jù)存儲140可以是如將在以下更詳細描述的多版本或事務時 間數(shù)據(jù)庫。根據(jù)本發(fā)明的一方面,破壞數(shù)據(jù)可經(jīng)由隔絕組件120將破壞數(shù)據(jù)標記為 無效而與有效數(shù)據(jù)隔離。例如,隔絕組件120可在數(shù)據(jù)項頭部或其它相關(guān)聯(lián)的元數(shù) 據(jù)中將每一破壞數(shù)據(jù)項標記為無效。
轉(zhuǎn)向圖2,根據(jù)本發(fā)明的一方面描述了隔絕組件120。隔絕組件120從檢測組 件110 (圖1)接收對破壞事務的標識,確定依賴的數(shù)據(jù)項,并將破壞數(shù)據(jù)與有效 數(shù)據(jù)隔離。為便于這樣的功能,隔絕組件120可包括閉包組件210和無效器組件 220。閉包組件210計算受破壞數(shù)據(jù)影響的事務所寫入的所有數(shù)據(jù)的閉包。基本上, 這樣的過程涉及計算C(D》,這指示數(shù)據(jù)存儲中破壞的確切數(shù)據(jù)項或其版本。這可 按照初始破壞數(shù)據(jù)項或數(shù)據(jù)版本以及由讀取破壞數(shù)據(jù)的一個或多個事務寫入的項
或數(shù)據(jù)版本來表示。更具體地,這可被表示為c^rj =『0;,其中z;是現(xiàn)在破壞
的事務,而wav表示由?;寫入的確切數(shù)據(jù)項。該計算可經(jīng)由如以下所述的事務日
志來簡化。而且,閉包組件210可考慮由已知破壞的事務寫入然后由另一事務重寫
的數(shù)據(jù)項。該值最初是破壞的,但當其由非已知為破壞的事務重寫時再次變?yōu)橛行А?br>
一旦閉包組件210確定包括初始破壞項及從中派生的項目在內(nèi)的所有破壞數(shù)據(jù)項 之后,這樣的信息可被發(fā)送給無效器組件220。無效器組件220隨后可通過將破壞 數(shù)據(jù)項標記為無效使其與其它項隔絕。例如,頭部信息或與數(shù)據(jù)項相關(guān)聯(lián)的元數(shù)據(jù) 可被標記以指示該數(shù)據(jù)項或其版本無效。這樣的數(shù)據(jù)項因此對常規(guī)事務而言是不可 見的。從而,數(shù)據(jù)存儲140 (圖1)不必被關(guān)閉、加載備份、并前進至剛好在破壞 之前的時刻。而且,完全有效的事務不必被取消提交并隨后重新提交以便執(zhí)行。此 處,僅破壞的事務及相關(guān)聯(lián)的數(shù)據(jù)項被取消提交。此外,數(shù)據(jù)存儲不必被長期關(guān)閉 并使事務處理不可用。圖3示出了根據(jù)本發(fā)明的一方面的事務日志130。事務日志130是包括關(guān)于事
務和數(shù)據(jù)項和/或版本的信息的存儲。日志130可被存儲在數(shù)據(jù)庫或任何其它計算 機可讀介質(zhì)或制品上。如圖3中所例示,事務日志130可包括一個或多個事務條目 310,它包括讀記錄320和/或?qū)懹涗?30。每個提交的事務可被記錄在日志130中。 具體地,由事務讀取的所有數(shù)據(jù)項或版本均被記錄在讀記錄320中。此外,由事務 寫入或更新的所有數(shù)據(jù)項或版本均在寫或更新記錄330中表示。
"ACID"事務中的"C"代表一致性,它是事務代碼的責任。當事務完整執(zhí) 行時,它固有地約定從一個一致的數(shù)據(jù)存儲狀態(tài)轉(zhuǎn)移到另一狀態(tài)。因此,如果事務 是錯誤的并破壞了數(shù)據(jù)存儲的狀態(tài),則該事務的整體作用必然表現(xiàn)為破壞。從而, 事務或者破壞數(shù)據(jù)存儲或者不破壞。
由于事務在整體上或者是破壞或者是一致的,包括其讀寫的事務的活動可被 作為整體對待。因此,不必記錄和/或記住在事務內(nèi)何時進行了讀取。讀取任何破 壞數(shù)據(jù)的事務將產(chǎn)生破壞更新,即使破壞數(shù)據(jù)是在更新進行之后讀取的。試圖區(qū)分 在讀取破壞之前進行的更新與在這樣的讀取之后進行的更新根本不可能產(chǎn)生一致 的結(jié)果。從而,記住事務讀取相對于事務更新何時進行是不重要的。這允許將關(guān)于 事務的所有讀取信息合并到剛好可在事務提交之前寫入的單個日志記錄。如果日志 記錄太大而難以容易地管理,則日志記錄可被分成多個記錄。或者,可利用單個讀 曰志記錄。
應注意到,不是所有的讀取均需被記錄在日志130中。在使用生理日志操作 的恢復方法中,這些操作將改變的數(shù)據(jù)歸檔,但在所有的情況中均假定改變的數(shù)據(jù) 在被寫之前被讀取。因此,不必在讀取日志記錄中包括對更新的數(shù)據(jù)的讀取。僅需 要包括未由事務更新的數(shù)據(jù)的讀取。對更新數(shù)據(jù)的讀取已經(jīng)經(jīng)由其更新或?qū)懭罩居?錄被記入日志。
回到圖1,根據(jù)本發(fā)明的一方面,數(shù)據(jù)存儲組件140可以是事務時間和多版本 數(shù)據(jù)庫。事務時間數(shù)據(jù)庫存儲數(shù)據(jù)庫的所有之前狀態(tài)并使之可訪問。每一事務執(zhí)行 均產(chǎn)生一新的數(shù)據(jù)庫狀態(tài)。因此,要保存大量狀態(tài)。然而,由于事務一般僅改變數(shù) 據(jù)庫狀態(tài)中非常小的一部分,大多數(shù)數(shù)據(jù)可在眾多狀態(tài)之間共享。基本上,每一數(shù) 據(jù)庫更新產(chǎn)生正被改變的數(shù)據(jù)的新版本。每一這樣的版本可隨后用該事務的時間加 上時戳。對這種數(shù)據(jù)庫的一種查詢是要求數(shù)據(jù)庫正值某個所選時間的狀態(tài)的"正值 (as of)"查詢。通過定位具有該(as is)時間前最近時戳的數(shù)據(jù)來答復該查詢。 有可能為該數(shù)據(jù)構(gòu)造一個基于時間的索引,該索引將査詢引導至構(gòu)成數(shù)據(jù)庫狀態(tài)正值所請求的時間的狀態(tài)的確切數(shù)據(jù)。
因為事務時間數(shù)據(jù)庫包含數(shù)據(jù)庫的所有之前的狀態(tài),所以它可提供備份的功 能。換言之,它提供數(shù)據(jù)庫的之前狀態(tài),如常規(guī)所做可利用介質(zhì)恢復日志從該狀態(tài) 起使狀態(tài)前進以便重構(gòu)當前的數(shù)據(jù)庫狀態(tài)。然而,該"備份"無需還原過程,因為 過去的狀態(tài)總是在線。因此,立即避免了長時間地停止可用性。該方法的附加優(yōu)點 在于可利用諸如"正值"査詢和其中要求某個時間段上數(shù)據(jù)庫中某些記錄的歷史的 時間行進査詢等各種時間查詢來査詢"備份"。
應該清楚,與常規(guī)備份一樣,也可使用事務時間數(shù)據(jù)庫備份來提供"時間點" 恢復,從而極大地減少由于數(shù)據(jù)破壞而導致的停止持續(xù)時間。這可通過移除在破壞 發(fā)生之后引入的所有數(shù)據(jù)版本來完成。然而,它本身就減少取消提交事務的數(shù)目而 言沒有任何作用。
此處描述的本發(fā)明的各方面提供了用于通過將事務讀取記入日志等來減少取 消提交的事務的數(shù)目的系統(tǒng)和方法。而且,被破壞的數(shù)據(jù)項可被移除,或至少使其 不為正常查詢可見。這些革新以及將事務時間數(shù)據(jù)庫用作備份的結(jié)果是從破壞提供 恢復的停止時間期限幾乎被消除,且取消提交的事務數(shù)目被減少到讀取被破壞數(shù)據(jù) 的確切數(shù)目,這通常是巨大的減少。
如上所述,事務時間數(shù)據(jù)庫存儲數(shù)據(jù)的多個版本,每一版本由一時戳標識。 當事務執(zhí)行時,為其執(zhí)行向其分配時戳。事務的時戳可與事務的串行化順序一致。 事務的時戳可被存儲在事務所寫的數(shù)據(jù)的各個版本中以確切標識其版本何時成為
當前版本。^r"表示由r寫入的數(shù)據(jù)的確切版本,即以事務時戳標出的具體版本。
對可串行化的事務,該同一時戳標識了由事務讀取的數(shù)據(jù)的版本,換言之,即由事 務時戳表示的當前"正值"時間的版本。
對其它形式的并發(fā)控制,所讀取數(shù)據(jù)版本的時間可有所不同。不必在所有情 況中均確切標識哪一版本是所讀取的版本。例如,在快照隔離中,該時間是事務的
起始時間。對其中讀取不一定可重復的二度(degree two)事務而言,可能存在用 于標識所讀取數(shù)據(jù)版本的若干時戳。在所有情況中,使用i O)來表示由事務r讀 取的數(shù)據(jù)的確切版本。用于表示所讀取的數(shù)據(jù)版本的次數(shù)應小心地記錄以精確定義 R(T)。
回到圖2,記得采用閉包組件210來計算由受到破壞數(shù)據(jù)影響的事務所寫入的 所有數(shù)據(jù)的閉包。該過程涉及計算QD5入它表示數(shù)據(jù)庫中破壞的數(shù)據(jù)的確切版本。 這可借助初始破壞的數(shù)據(jù)版本和由讀取破壞數(shù)據(jù)的事務所寫入的數(shù)據(jù)版本來表示。以下數(shù)學表達式定義了在數(shù)據(jù)庫上執(zhí)行的示例性閉包計算的各方面
qt山=^tj,其中j;是已知破壞的事務。
公式A
c(t;),+1 = c(rc), u |/ (r,+,)門c(rc),),其中7;+,具有時戳ra(z;.+,),且
不存在事務z;使得ra(z;.) < ) < re(7;+1)且^(r」)門c(rc), ^ 。
公式B
c(7;) = c(7;);,使得不存在r川,使rs(r》〈re(r川)且i (7;.+,)nc(7;)j 一
公式c
根據(jù)本發(fā)明的一方面,數(shù)據(jù)存儲140 (圖i)也可以是常規(guī)數(shù)據(jù)庫。應注意到,上述同一計算可用于通過僅移除版本標識來標識常規(guī)數(shù)據(jù)庫中潛在破壞的數(shù)據(jù)。這實質(zhì)上將數(shù)據(jù)項的所有破壞版本折疊成當前數(shù)據(jù)庫中存在的數(shù)據(jù)的單個破壞實例。只要僅考慮的事務是在破壞事務之后執(zhí)行的事務,該計算也將有效。它可用于避免取消提交未受初始破壞影響的事務。
為便于澄清和理解,將參考圖4a和4b討論破壞的示例。作為示例而非限制,如圖4a的示例400a所提供的,假定存在事務時間數(shù)據(jù)庫410,它具有破壞數(shù)據(jù)以及與之相關(guān)聯(lián)的事務日志420。在該示例中,數(shù)據(jù)庫410包括四個數(shù)據(jù)項即變量,W、 X、 Y和Z,以及每一項的多個版本。每一項在時間O具有初始值,即\¥=10,X=20, Y=30,以及《=40。事務日志420包括包含所讀的數(shù)據(jù)項和所寫數(shù)據(jù)項的事務列表。第一事務標識在時間1 (Tl)處,讀取了 X在時間0的版本(XQ),并創(chuàng)建了時間1 (Tl)處的新版本(X,),使得X的新值為21。在時間2 (T2)處,執(zhí)行讀取W的初始值(WQ)和Y的初始值(Yo)并寫入W的新版本(W2)的事務。日志繼續(xù)直到時間6 (T6)。假定時間Tl處的第一事務被確定為破壞的。從而,其寫設(shè)置(X,)是破壞的,并經(jīng)由陰影示出。隔絕組件120 (圖1和2)的閉包組件210 (圖2)進行的分析可指示,時間3 (T3)處的事務3也是破壞的,因為它讀取X,并寫入新值X3。如以水平帶狀線所示,這可由無效器組件220 (圖2)標記為破壞的。此外,時間5 (T5)處的事務5讀取事務3所寫的X3,因此它的寫Z5也是破壞的并在此處以帶狀線標記。最后,時間6 (T6)處的事務6讀取Z5,并寫入W6,從而,W在時間6 (T6)處的版本也是破壞的,并以帶狀線標記。
在數(shù)據(jù)被破壞的版本被標記為無效之后,系統(tǒng)允許事務處理恢復。這樣的執(zhí)行的效果應如寫入無效數(shù)據(jù)的事務從未執(zhí)行一樣。即,意圖是"取消提交"產(chǎn)生無效項的事務,并移除其效果。因此,當讀取數(shù)據(jù)項^的無效版本[/^刀時,系統(tǒng)忽視該版本,并在時間上向后掃描^的版本,查找有效的前一個版本。這即是所返回的^值。
概念上,d之前未被破壞的版本的時間范圍延及包括連續(xù)跟隨d被破壞版本之
后的所有時間的范圍。這在圖4b中使用以上圖4a的示例示出以便澄清。當被破壞
的數(shù)據(jù)被標記時,作用是邏輯上移除這些版本。這意味著,實際上,前進的數(shù)據(jù)項
即變量的值為W二12、 X = 20、 Y=34以及Z二40。以此理解,可利用數(shù)據(jù)庫狀態(tài),在原位留下標記為無效的數(shù)據(jù)版本以便歸檔該破壞,這將是非常有用的能力。
當更新被執(zhí)行時,引入并寫入每一數(shù)據(jù)項的新的且有效的版本。該版本可用作為例如在事務提交時分配給事務的時間的起始時間加上時戳。當讀取更新事務時,它們可讀取未被破壞的前任,從而被更新的是未破壞的前任。
轉(zhuǎn)向圖5,示出了根據(jù)本發(fā)明的一方面的破壞恢復系統(tǒng)500。類似于圖l的系統(tǒng)100,系統(tǒng)500可包括破壞檢測組件110、隔絕組件120、事務日志130和數(shù)據(jù)存儲140。如前所述,破壞檢測組件110可檢測和/或便于檢測初始破壞事務和/或數(shù)據(jù)項,并將標識信息傳輸給隔絕組件120。隔絕組件120接收該信息,并利用其以及來自事務日志130的數(shù)據(jù)來確定是否存在因其對初始破壞的依賴也被破壞的任何數(shù)據(jù)項。此外,隔絕組件120隨后可通過在數(shù)據(jù)存儲140中將破壞數(shù)據(jù)標記為無效而將破壞數(shù)據(jù)與有效數(shù)據(jù)隔絕。除這些組件以外,恢復系統(tǒng)500可包括查詢組件510。查詢組件510用于接收和執(zhí)行關(guān)于有效以及無效數(shù)據(jù)項的查詢。允許對破壞數(shù)據(jù)的顯式查詢將是非常有用的。例如,這樣的數(shù)據(jù)可被檢查,甚至有可能對其更改使其再次有效??赏ㄟ^使查詢組件進行諸如特別指定破壞數(shù)據(jù)等的SQL查詢的查詢來讀取破壞數(shù)據(jù)。例如,SQL選擇語句可包括特殊的"無效"屬性,它指定僅滿足其它查詢約束的無效數(shù)據(jù)應被返回,或者為查詢的目的,無效數(shù)據(jù)應如其有效一般被對待。利用查詢組件510對數(shù)據(jù)存儲140執(zhí)行查詢當然是有用的,尤其當目的在于理解數(shù)據(jù)庫所進行的所有活動,如審計員或管理員通常需要做的那樣。
圖6示出了根據(jù)本發(fā)明的一方面的查詢接口系統(tǒng)600。查詢接口系統(tǒng)600可以是用戶或應用程序與圖5的查詢執(zhí)行組件510之間的接口。從而,系統(tǒng)600可對應于應用程序編程接口 (API)。接口系統(tǒng)600可包括兩個組件,即査詢接口組件610和數(shù)據(jù)存儲接口組件620。査詢接口組件610用于從用戶、應用程序或其它實體處接收查詢。此外,應注意和理解,査詢接口組件610可接收涉及無效或破壞數(shù)據(jù)的查詢。例如,它可接收特別指定應返回無效數(shù)據(jù)的SQL查詢,或者査詢可指定基于有效和無效數(shù)據(jù)或單獨由有效數(shù)據(jù)生成結(jié)果。數(shù)據(jù)存儲接口 620從查詢接口組件610接收査詢,并隨后將查詢結(jié)果提供回查詢接口組件610。數(shù)據(jù)存儲接口 620可與查詢組件或査詢執(zhí)行引擎交互以檢索提供回查詢接口組件610的結(jié)果。
圖7示出了根據(jù)本發(fā)明的一方面的破壞恢復系統(tǒng)700?;謴拖到y(tǒng)700可包括破壞檢測組件IIO、隔絕組件120、事務日志130、數(shù)據(jù)存儲140、補償組件710。如關(guān)于系統(tǒng)100 (圖1)和500 (圖5)所述的,破壞檢測組件IIO可檢測初始事務和/或相關(guān)聯(lián)的數(shù)據(jù)破壞,并將標識破壞的信息提供給隔絕組件120。隔絕組件120在事務日志130中所存儲的信息的幫助下可確定因?qū)Τ跏计茐牡囊蕾嚩缮母郊悠茐?。此外,隔絕組件120隨后可通過標記數(shù)據(jù)存儲140中的無效或破壞數(shù)據(jù)來隔離破壞與有效的數(shù)據(jù)。補償組件710單獨或與用戶輸入結(jié)合可提供用于分析所標記的被破壞數(shù)據(jù)、生成并應用補償動作以彌補破壞的機制。以此方式,可使無效數(shù)據(jù)有效。而且,應理解,補償組件710可利用包括但不限于神經(jīng)網(wǎng)絡、貝葉斯網(wǎng)絡、專家或知識系統(tǒng)的智能和/或自適應系統(tǒng)和方法來推斷改正的動作。作為示例,銀行帳戶可因記入了錯誤的提取而被破壞。這可導致帳戶平衡變?yōu)樨?,且在向銀行帳戶所有者發(fā)送的報告中估算了費用。補償組件710可為該被破壞的項目創(chuàng)建并應用改正動作,包括但不限于,重新執(zhí)行隨后的事務,從而避免帳戶負平衡以及對費用的估算的兩者,并生成示出該問題已被改正的新報告。
圖8示出了根據(jù)本發(fā)明的一方面的破壞恢復系統(tǒng)800。類似于系統(tǒng)100、 500和700,系統(tǒng)800可包括存儲數(shù)據(jù)項的數(shù)據(jù)存儲140、檢測初始破壞的破壞檢測組件IIO、以及存儲事務信息的日志組件130。此外,系統(tǒng)800可包括隔絕組件120,它從檢測組件IIO和事務日志130接收或檢索輸入,標識與初始破壞有關(guān)的所有被破壞的項,并在數(shù)據(jù)存儲140上將它們標記或隔絕為無效。而且,系統(tǒng)800也包括執(zhí)行組件810。執(zhí)行組件810可在數(shù)據(jù)存儲140上執(zhí)行或處理事務。此外,執(zhí)行組件810可例如利用一個或多個鎖定(例如,經(jīng)由鎖定管理器(未示出))和時戳來實現(xiàn)并發(fā)控制系統(tǒng)和方法,以確保遵循被稱為可串行性的事務處理的基本性質(zhì)。執(zhí)行組件810也可便于在包括一個或多個無效數(shù)據(jù)項或其版本的數(shù)據(jù)庫上執(zhí)行事務。根據(jù)本發(fā)明的一個方面,執(zhí)行組件810可如寫入無效數(shù)據(jù)的事務從未執(zhí)行那樣地處理事務。使用事務時間數(shù)據(jù)庫,設(shè)法在無效數(shù)據(jù)上執(zhí)行的事務將在數(shù)據(jù)之前的有效版本上執(zhí)行。根據(jù)本發(fā)明的另一方面,執(zhí)行組件810可重新執(zhí)行被取消提交的事務以改正無效數(shù)據(jù)。因此, 一個或多個破壞事務及相關(guān)聯(lián)的數(shù)據(jù)項無需暫停執(zhí)行組件810進行的事務處理。
圖9示出了根據(jù)本發(fā)明的一方面便于破壞恢復的系統(tǒng)900。系統(tǒng)900可通過維
13護事務日志130來為前述恢復系統(tǒng)提供支持機制。系統(tǒng)900可包括事務分析組件910、日志組件920和事務日志130。事務分析組件910可評估事務及其影響的數(shù)據(jù)項。更具體地,分析組件910可例如在提交時確定,事務讀了哪些數(shù)據(jù)項,事務入了哪些數(shù)據(jù)項。該信息然后可被提供給日志組件920。日志組件920通信耦合于事務分析組件910,并維護事務日志130。事務日志130可以是數(shù)據(jù)存儲或其它計算機可讀介質(zhì)。日志130可記錄事務事件。對每一事務,可存在歸檔由事務讀取的數(shù)據(jù)項的讀日志記錄以及歸檔所寫數(shù)據(jù)項的寫或更新日志記錄。在從事務分析組件910接收信息之后,日志組件920可將事務信息寫入事務日志130。
應理解,某些數(shù)據(jù)存儲應用程序(例如,事務應用程序)將在改變數(shù)據(jù)庫狀態(tài)的小部分之前進行大得多的廣泛讀取。這可導致讀日志記錄的大小變得非常大。此外,在事務執(zhí)行直到讀日志被寫入的提交時刻之前期間記住該信息所需的數(shù)據(jù)結(jié)構(gòu)的大小同樣可能非常大。 一般難以處理大量資源。每一資源應被明確標識。維護這樣的數(shù)據(jù)結(jié)構(gòu)并不困難,但它可能會對數(shù)據(jù)存儲和數(shù)據(jù)存儲管理器施加壓力,這增加了所涉及的成本。
前述問題,即非常大量的資源的問題,不是本發(fā)明將讀取記入日志所獨有的。當事務需要鎖定資源以提供事務隔離時,也會發(fā)生該問題。從而,本發(fā)明可按照類似方式處理這樣的問題,即通過引入多粒度資源。本發(fā)明可利用如為鎖定所使用的用于標識資源的相同或相似的分層結(jié)構(gòu)。使用鎖定資源分層結(jié)構(gòu)的一個明顯的優(yōu)點在于,可立即了解資源牽制(containment)如何被定義的,且擁有確定何時資源使用發(fā)生沖突或交叉的方式。因此,本發(fā)明可確定何時事務讀取了破壞數(shù)據(jù),甚至何時資源以不同的粒度級別描述。
傳統(tǒng)的鎖定資源分層結(jié)構(gòu)通常至少包括表、頁和記錄。當事務利用了過多小粒度資源時,粒度從精細粒度改變成較大粒度。該方案可適于本發(fā)明將事務讀取的數(shù)據(jù)項的身份記入日志的技術(shù)。可在該過程中采用鎖定管理器,鎖定管理器可以作為如此處所定義的該術(shù)語的組件。例如,當保持讀鎖定直到事務結(jié)束時,所讀取的所有數(shù)據(jù)項均被鎖定管理器有效地記住。在提交時,當從這些資源釋放讀鎖定時,本發(fā)明可同時在日志中記錄這些資源標識符。
有時,讀鎖定不被保持到事務結(jié)束,例如當執(zhí)行二度事務時。在這種情況中,鎖定管理器資源"鎖定阻塞"可被留在鎖定管理器沖突表中,將鎖定模式從"讀"(共享)改為"已讀",只要涉及沖突它就如根本不存在鎖定一般被對待。這允許
這樣的事務采用相同策略以便用該事務所讀取的所有資源的標識符來填充事志。
關(guān)于若干組件之間的交互描述了前述系統(tǒng)。此外,為清楚和簡明起見,提供并描述了多個系統(tǒng)以強調(diào)本發(fā)明的一方面。應理解,這樣的系統(tǒng)可包括其中指定的那些組件、指定組件中的某些、和/或在其它系統(tǒng)中指定的附加組件。例如,破壞恢復系統(tǒng)可包括查詢組件、補償組件、以及執(zhí)行組件或其任何組合。此外,應注意到, 一個或多個組件可被組合成單個組件以提供聚集的功能,或可被分成若干子組件。組件也可與此處未特定描述但為本領(lǐng)域的技術(shù)人員所知的一個或多個其它組件交互。
此外,如本領(lǐng)域的技術(shù)人員所理解的,以上公開的系統(tǒng)和以下公開的方法的各個部分可包括基于人工智能或知識的組件、子組件、進程、裝置或機制(例如,支持向量機、神經(jīng)網(wǎng)絡、專家系統(tǒng)、貝葉斯置信網(wǎng)絡、模糊邏輯、數(shù)據(jù)融合引擎、分類器...)或由其組成。這樣的組件及其它可自動化所執(zhí)行的某些機制或進程,從而使系統(tǒng)和方法的部分更適應且更高效。例如,可采用基于人工智能的組件來便于檢測數(shù)據(jù)破壞??衫眠@樣的組件來單獨檢測數(shù)據(jù)破壞,或補充例如由管理員進行的對數(shù)據(jù)破壞的手動標識。除此以外或?qū)Υ颂鎿Q,可釆用基于人工智能的系統(tǒng)、方法等來便于在檢測數(shù)據(jù)破壞之后生成和/或應用補償動作。
考慮上述示例性系統(tǒng),參考圖10-13的流程圖將更好地理解根據(jù)本發(fā)明實現(xiàn)的方法。為說明的簡明性起見,方法被示為并描述為一連串的塊,可以理解和領(lǐng)會,本發(fā)明不受塊順序的限制,如根據(jù)本發(fā)明,某些塊可按照不同的順序出現(xiàn)和/或與此處所示和所述的其它塊并發(fā)。而且,不是所有示出的塊均是實現(xiàn)根據(jù)本發(fā)明的方法所必需的。
此外,還應理解,后文中以及本說明書全文中公開的方法能夠被存儲在制品上,以便于將這樣的方法傳輸和傳送給計算機。如此處所使用的,術(shù)語制品旨在包括可從任何計算機可讀設(shè)備、載波或介質(zhì)訪問的計算機程序。
轉(zhuǎn)向圖10,根據(jù)本發(fā)明的一方面描述了破壞方法1000。方法1000提供用于對付破壞的過程。在1010處,標識初始破壞的數(shù)據(jù)項。用戶或管理員可手動、利用基于人工智能、知識的系統(tǒng)和方法或其某種組合來自動標識破壞數(shù)據(jù)項。作為示例,當作出事務是破壞的諸如不正確地向帳戶借記的判斷之后,數(shù)據(jù)項可被標識為破壞的。在1020處,確定從初始破壞的數(shù)據(jù)項派生的數(shù)據(jù)項。例如,如果事務讀取破壞的數(shù)據(jù)項,并基于該讀取寫入或更新第二數(shù)據(jù)項,則第二數(shù)據(jù)項也因其對初始破壞項的依賴而是破壞的。為便于標識這些派生的破壞項,可査閱事務日志,事
15務日志為每一事務標識所讀取和更新的數(shù)據(jù)項。在1030處,初始和派生的破壞數(shù)據(jù)項均可被標記為無效的。例如,數(shù)據(jù)項頭部或元數(shù)據(jù)可被如此標記。例如,它們
可具有或為真或為假的布爾變量"valid (有效)"。如果它為假,則該數(shù)據(jù)無效。
圖11是根據(jù)本發(fā)明的一方面的破壞恢復系統(tǒng)的支持方法1100。在1110處,接收或標識事務,其中該事務包括對一個或多個數(shù)據(jù)項的操作。在1120處,將操作記入計算機可讀介質(zhì)中。例如,事務讀操作可被記入在標識由事務所讀取的數(shù)據(jù)項的讀記錄中。類似地,事務的寫或更新操作可被記入在特別標識由該事務所寫入的數(shù)據(jù)項的寫或更新記錄中。該事務日志隨后可被用來標識依賴于破壞事務或數(shù)據(jù)項的各個數(shù)據(jù)項。
圖12示出了根據(jù)本發(fā)明的一方面與數(shù)據(jù)存儲交互的方法1200。在1210處,接收查詢。查詢可指定要檢索的無效數(shù)據(jù)。例如,查詢可以是帶有指示應考慮無效數(shù)據(jù)的特別關(guān)鍵字的SQL Select (選擇)查詢。在1220處,根據(jù)所指定的査詢返回所選無效數(shù)據(jù)。方法1200因此允許探測無效數(shù)據(jù)。這對便于檢查這樣的數(shù)據(jù)并可能更改它以使其再次有效而極其有用。
圖13是示出與破壞數(shù)據(jù)交互的方法1300的流程圖。如上所述,能夠標識和最終改正無效數(shù)據(jù)是非常有用的。方法1300指定一個這樣的過程。在1310處,標識破壞數(shù)據(jù)項。這樣的項可例如通過在數(shù)據(jù)存儲中查詢標記為無效的數(shù)據(jù)項來被標識。例如,數(shù)據(jù)項可根據(jù)不正確向帳戶借記的破壞事務而被識別為無效。在1320處,可對數(shù)據(jù)項應用改正動作以改正該項或使其有效化。在以上呈現(xiàn)的示例中,這樣的改正動作可以是執(zhí)行向帳戶存入不正確借記的金額的事務。應理解,這是簡化的示例,取決于破壞的嚴重性和范圍,本發(fā)明可提供復雜得多的改正動作。此外,可采用基于人工智能和知識的系統(tǒng)和方法以及其它自適應系統(tǒng)和方法來自動生成和應用改正動作。
為了提供本發(fā)明的各方面的上下文,圖14和15以及以下討論旨在提供對可在其中實現(xiàn)本發(fā)明的各個方面的合適的計算環(huán)境的簡要、 一般的描述。盡管在運行
在一臺或多臺計算機上的計算機程序的計算機可執(zhí)行指令的一般上下文中描述了本發(fā)明,但本領(lǐng)域的技術(shù)人員可以認識到,本發(fā)明也可結(jié)合其它程序模塊實現(xiàn)。一般而言,程序模塊包括例程、程序、組件、數(shù)據(jù)結(jié)構(gòu)等,它們執(zhí)行特定任務和/或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型。而且,本領(lǐng)域的技術(shù)人員可以理解,本發(fā)明的方法可以使用其它計算機系統(tǒng)配置來實現(xiàn),包括單處理器、多處理器計算機系統(tǒng)、小型計算設(shè)備、大型計算機、以及個人計算機、手持式計算設(shè)備、基于微處理器或可編程消費者電子產(chǎn)品等。本發(fā)明的所示方面也可以在分布式計算環(huán)境中實現(xiàn),其中任務由通過通信網(wǎng)絡連接的遠程處理設(shè)備來執(zhí)行。然而,即使不是本發(fā)明的全部方面,也有某些方面可在單機計算機上實現(xiàn)。在分布式計算環(huán)境中,程序模塊可以位于本地和遠程存儲器存儲設(shè)備中。
參考圖14,用于實現(xiàn)本發(fā)明各方面的示例性環(huán)境1400包括計算機1412。計算機1412包括處理單元1414、系統(tǒng)存儲器1416和系統(tǒng)總線1418。系統(tǒng)總線1418將包括但不限于系統(tǒng)存儲器1416的系統(tǒng)組件耦合至處理單元1414。處理單元1414
可以是任何各種可用的處理器。也可以使用雙微處理器和其它多處理器體系結(jié)構(gòu)作為處理單元1414。
系統(tǒng)總線1418可以是若干類型的總線結(jié)構(gòu)中的任一種,包括存儲器總線或存儲器控制器、外圍總線或外部總線、和/或使用各種可用的總線體系結(jié)構(gòu)中的任一種的局部總線,可用的總線體系結(jié)構(gòu)包括,但不限于,11位總線、工業(yè)標準體系結(jié)構(gòu)(ISA)、微通道體系結(jié)構(gòu)(MCA)、擴展的ISA (EISA)、智能驅(qū)動器電子接口 (IDE) 、 VESA局部總線(VLB)、外圍部件互連(PCI)、通用串行總線(USB)、高級圖形接口 (AGP)、個人計算機存儲卡國際協(xié)會總線(PCMCIA)以及小型計算機系統(tǒng)接口 (SCSI)。
系統(tǒng)存儲器1416包括易失性存儲器1420和非易失性存儲器1422?;据斎?輸出系統(tǒng)(BIOS)包含有助于諸如啟動時在計算機1412中元件之間傳遞信息的基本例程,它通常存儲在非易失性存儲器1422中。作為說明,而非限制,非易失性存儲器1422可以包括只讀存儲器(ROM)、可編程ROM (PROM)、電可編程ROM (EPROM)、電可擦除ROM (EEPROM)或閃存。易失性存儲器1420可以包括用作外部高速緩存的隨機存取存儲器(RAM)。作為說明,而非限制,RAM以多種形式可用,諸如同步RAM (SRAM)、動態(tài)RAM (DRAM)、同步DRAM(SDRAM)、雙倍數(shù)據(jù)速率SDRAM(DDR SDRAM)、增強型SDRAM(ESDRAM)、同步鏈路DRAM (SLDRAM)以及直接Rambus RAM (DRRAM)。
計算機1412也包括可移動/不可以移動、易失性/非易失性計算機存儲介質(zhì)。例如,圖14例如示出磁盤存儲1424。磁盤存儲1424包括,但不限于,如磁盤驅(qū)動器、軟盤驅(qū)動器、磁帶驅(qū)動器、Jaz驅(qū)動器、Zip驅(qū)動器、Ls-100驅(qū)動器、閃存卡或記憶棒的設(shè)備。另外,磁盤存儲1424可以包括獨立或與其它存儲介質(zhì)結(jié)合的存儲介質(zhì),包括但不限于,諸如光盤ROM設(shè)備(CD-ROM) 、 CD可記錄驅(qū)動器(CD-R驅(qū)動器)、CD可重寫驅(qū)動器(CD-RW驅(qū)動器)或數(shù)字多功能盤ROM驅(qū)
17動器(DVD-ROM)等的光盤驅(qū)動器。為了便于將磁盤存儲設(shè)備1424連接至系統(tǒng) 總線1418, 一般使用諸如接口 1426等可移動或不可移動接口。可以理解,圖14描述了作為用戶和在合適的操作環(huán)境1410中描述的基本計 算機資源之間的中介的軟件。這樣的軟件包括操作系統(tǒng)1428。可被存儲在磁盤存 儲1424上的操作系統(tǒng)1428用來控制和分配計算機系統(tǒng)1412的資源。系統(tǒng)應用程 序1430通過存儲在系統(tǒng)存儲器1416或者磁盤存儲1414上的程序模塊1432和程序 數(shù)據(jù)1434利用了操作系統(tǒng)1428執(zhí)行的資源管理??梢岳斫猓景l(fā)明可以使用各種 操作系統(tǒng)或操作系統(tǒng)的組合來實現(xiàn)。用戶通過輸入設(shè)備1436向計算機1412輸入命令或信息。輸入設(shè)備1436包括, 但不限于,諸如鼠標、跟蹤球、指示筆等定點設(shè)備、觸摸墊、鍵盤、麥克風、操縱 桿、游戲手柄、圓盤式衛(wèi)星天線、掃描儀、TV調(diào)諧器卡、數(shù)碼相機、數(shù)碼攝像機、 網(wǎng)絡攝像頭等。這些和其它輸入設(shè)備經(jīng)由接口端口 1438通過系統(tǒng)總線1418連接至 處理單元1414。接口端口 1438包括,例如串行端口、并行端口、游戲端口和通用 串行總線(USB)。輸出設(shè)備1440使用某些與輸入設(shè)備1436相同類型的端口。從 而,例如,USB端口可以用于向計算機1412提供輸入,并向輸出設(shè)備1440輸出 來自計算機1412的信息。提供輸出適配器1442來示出,存在如顯示器(例如,平 板和CRT)、揚聲器和打印機以及其它需要專用適配器的輸出設(shè)備1440的某些輸 出設(shè)備1440。作為說明而非限制,輸出適配器1442包括提供輸出設(shè)備1440和系 統(tǒng)總線1418之間的連接手段的顯卡和聲卡。應該注意,諸如遠程計算機1444等其 它設(shè)備和/或設(shè)備系統(tǒng)同時提供輸入和輸出能力兩者。計算機1412可使用至一臺或多臺遠程計算機,諸如遠程計算機1444的邏輯 連接在網(wǎng)絡化環(huán)境中操作。遠程計算機1444可以是個人計算機、服務器、路由器、 網(wǎng)絡PC、工作站、基于微處理器的裝置、對等設(shè)備或其它常見網(wǎng)絡節(jié)點等,且通 常包括上文相對于計算機1412描述的許多或所有元件。為簡明起見,對于遠程計 算機1444僅示出存儲器存儲設(shè)備1446。遠程計算機1444通過網(wǎng)絡接口 1448被邏 輯連接至計算機1412,并且然后通過通信連接1450被物理地連接。網(wǎng)絡接口 1448 包括諸如局域網(wǎng)(LAN)和廣域網(wǎng)(WAN)的通信網(wǎng)絡。LAN技術(shù)包括光纖分布 式數(shù)據(jù)接口 (FDDI)、銅線分布式數(shù)據(jù)接口 (CDDI)、以太網(wǎng)/IEEE 802.3、令牌 環(huán)/正EE 802.5等。WAN技術(shù)包括,但不限于,點對點鏈路、如綜合業(yè)務數(shù)字網(wǎng) (ISDN)及其變型的電路交換網(wǎng)絡、分組交換網(wǎng)絡和數(shù)字用戶線(DSL)。通信連接1450指的是用來將網(wǎng)絡接口 1448連接至總線1418的硬件/軟件。盡管為說明清楚,將通信連接1450示為位于計算機1412內(nèi),然而通信連接1450也 可以在計算機1412外部。僅為示例的目的,連接至網(wǎng)絡接口 1448所必需的硬件/ 軟件包括內(nèi)部和外部技術(shù),諸如包括常規(guī)電話級調(diào)制解調(diào)器、線纜調(diào)制解調(diào)器和 DSL調(diào)制解調(diào)器等的調(diào)制解調(diào)器、ISDN適配器以及以太網(wǎng)卡。圖15是本發(fā)明可與之交互的示例計算環(huán)境1500的示意性框圖。系統(tǒng)1500包 括一個或多個客戶機1510。客戶機1510可以是硬件和/或軟件(例如,線程、進程、 計算設(shè)備)。系統(tǒng)1500也包括一個或多個服務器1530。服務器1530也可以是硬 件和/或軟件(例如,線程、進程、計算設(shè)備)。例如,服務器1530可以容納例如 通過使用本發(fā)明來執(zhí)行轉(zhuǎn)換的線程??蛻魴C1510和服務器1530之間的一種可能的 通信可以是適于在兩個或多個計算機進程之間傳輸?shù)臄?shù)據(jù)包的形式。系統(tǒng)1500包 括可以被用來便于客戶機1510和服務器1530之間通信的通信架構(gòu)1550??蛻魴C 1510可操作地連接至可用來存儲對客戶機1510本地的信息的一個或多個客戶機數(shù) 據(jù)存儲1560。類似地,服務器1530可操作地連接至可被用來存儲對服務器1530 本地的信息的一個或多個服務器數(shù)據(jù)存儲1540。以上描述的包括本發(fā)明的示例。當然,不可能為描述本發(fā)明而描述每個可想象 的組件或方法的組合,但是本領(lǐng)域的普通技術(shù)人員可以認識到,本發(fā)明的眾多其它 組合和排列是可能的。從而,本發(fā)明旨在包括落入所附權(quán)利要求書精神和范圍內(nèi)的 所有這樣的變更、修改和變型。而且,就在詳細描述或權(quán)利要求書中使用的術(shù)語"包 括"、"具有"和"含有"而言,當被用作權(quán)利要求書中的過渡詞時,這樣的術(shù)語旨在類似于解釋術(shù)語"包含"的方式是包含性的。
權(quán)利要求
1. 一種數(shù)據(jù)存儲破壞恢復系統(tǒng),包括破壞檢測組件,便于在數(shù)據(jù)存儲中標識初始破壞數(shù)據(jù)項;以及隔絕組件,接收所述破壞項,從日志標識依賴數(shù)據(jù)項,并在所述數(shù)據(jù)存儲中隔絕所述初始破壞數(shù)據(jù)項和從所述破壞項中派生的數(shù)據(jù)項。
2. 如權(quán)利要求l所述的系統(tǒng),其特征在于,所述隔絕組件包括計算由受到所 述破壞數(shù)據(jù)影響的事務所寫入的所有數(shù)據(jù)的閉包的閉包組件。
3. 如權(quán)利要求2所述的系統(tǒng),其特征在于,所述隔絕組件包括將破壞數(shù)據(jù)項 標記為無效的無效器組件。
4. 如權(quán)利要求3所述的系統(tǒng),其特征在于,所述無效數(shù)據(jù)項對事務而言不可見。
5. 如權(quán)利要求4所述的系統(tǒng),其特征在于,還包括便于檢索和/或查看破壞數(shù) 據(jù)的查詢組件。
6. 如權(quán)利要求3所述的系統(tǒng),其特征在于,所述無效數(shù)據(jù)項被從所述數(shù)據(jù)存 儲中移除。
7. 如權(quán)利要求l所述的系統(tǒng),其特征在于,所述日志為每一事務標識所讀取 和/或?qū)懭氲臄?shù)據(jù)項
8. 如權(quán)利要求7所述的系統(tǒng),其特征在于,所述由事務讀取的數(shù)據(jù)項被合并 到事務在提交之前剛寫入的單個日志記錄中。
9. 如權(quán)利要求7所述的系統(tǒng),其特征在于,數(shù)據(jù)項是由在鎖定管理器中所使 用的資源標識符所標識的并以這些標識符記錄在所述日志上的多粒度項目,所述隔 絕組件標識其中具有讀寫沖突的事務中的讀鎖定涉及先前事務中的破壞數(shù)據(jù)的破 壞依賴項,因為這樣的事務讀取了破壞數(shù)據(jù)而且隨后又寫入破壞數(shù)據(jù)。
10. 如權(quán)利要求l所述的系統(tǒng),其特征在于,還包括 事務分析組件,接收事務并確定所述事務與之交互的數(shù)據(jù)項;以及 日志組件,從所述分析組件接收關(guān)于所述事務與之交互的所述數(shù)據(jù)項的信息,并將所述信息存儲到計算機可讀介質(zhì)。
11. 如權(quán)利要求10所述的系統(tǒng),其特征在于,所述日志組件將不與更新操作 相關(guān)聯(lián)的讀取記入日志,只要更新包括對數(shù)據(jù)項的讀和寫兩個操作時,即可從更新曰志確定自更新操作的讀取。
12. —種數(shù)據(jù)破壞恢復系統(tǒng),包括 用于標識初始破壞數(shù)據(jù)項的裝置;用于標識從所述初始破壞數(shù)據(jù)項派生的破壞數(shù)據(jù)項的裝置;以及 用于在事務時間數(shù)據(jù)庫中將所述被破壞的數(shù)據(jù)項版本標識為無效的裝置。
13. 如權(quán)利要求12所述的系統(tǒng),其特征在于,還包括用于針對具有無效版本 的所述數(shù)據(jù)庫處理事務的裝置以及用于査詢無效數(shù)據(jù)項版本的裝置的至少其中之
14. 一種計算機實現(xiàn)的數(shù)據(jù)破壞方法,包括 標識初始破壞數(shù)據(jù)項;標識從所述初始破壞數(shù)據(jù)項派生的破壞項;以及 在多版本數(shù)據(jù)存儲上將所述破壞數(shù)據(jù)項標記為無效的。
15. 如權(quán)利要求14所述的方法,其特征在于,還包括在日志中為事務記錄數(shù) 據(jù)項讀取和寫入。
16. 如權(quán)利要求15所述的方法,其特征在于,標識派生的破壞數(shù)據(jù)項包括計 算由受所述初始破壞數(shù)據(jù)影響的事務所寫入的所有數(shù)據(jù)項的閉包。
17. 如權(quán)利要求14所述的方法,其特征在于,還包括在所述數(shù)據(jù)存儲上查詢無效數(shù)據(jù)d
18. 如權(quán)利要求14所述的方法,其特征在于,還包括在包括已被無效且被忽 視的破壞數(shù)據(jù)的所述數(shù)據(jù)存儲上執(zhí)行事務。
19. 如權(quán)利要求18所述的方法,其特征在于,在無效項版本上執(zhí)行事務包括 采用所述項的之前有效的版本。
20. 如權(quán)利要求14所述的方法,其特征在于,還包括在所述數(shù)據(jù)存儲上執(zhí)行補償所述破壞或無效數(shù)據(jù)的事務。
全文摘要
本發(fā)明關(guān)于數(shù)據(jù)存儲破壞恢復。更具體地,本發(fā)明涉及用于以防止從數(shù)據(jù)庫中取消提交或移除有效或一致事務的方式來標識破壞數(shù)據(jù)的系統(tǒng)和方法。這可至少部分地通過將事務讀取的數(shù)據(jù)項的身份記入日志來實現(xiàn)。此外,本發(fā)明允許采用多版本(或事務時間)數(shù)據(jù)庫來顯著減少因破壞事務及相關(guān)聯(lián)的破壞數(shù)據(jù)項引起的任何停工時間或數(shù)據(jù)庫不可用。從而,無需安裝備份,且僅由原始破壞事務和讀取破壞數(shù)據(jù)的事務進行的更新需要被取消提交或移除。
文檔編號G06F12/00GK101506766SQ200680015361
公開日2009年8月12日 申請日期2006年4月14日 優(yōu)先權(quán)日2005年5月10日
發(fā)明者D·B·洛美特, R·S·巴佳 申請人:微軟公司