專利名稱:用于重新組織數(shù)據(jù)庫(kù)中表格空間的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本公開內(nèi)容涉及數(shù)據(jù)庫(kù),尤其涉及一種用于重新組織數(shù)據(jù)庫(kù)中表格空間的方法和系統(tǒng)。
背景技術(shù):
數(shù)據(jù)庫(kù)中的數(shù)據(jù)可以以數(shù)據(jù)的列和行的形式作為表格存在,如圖1中所示。在該實(shí)例中,“產(chǎn)品”表格包括多個(gè)列(產(chǎn)品名,零件號(hào)碼,終止日期),用于存儲(chǔ)與不同產(chǎn)品(產(chǎn)品1,產(chǎn)品2,產(chǎn)品3等)相關(guān)的數(shù)據(jù)行。包括多個(gè)與數(shù)據(jù)庫(kù)中的行相關(guān)的索引關(guān)鍵字的索引可以被提供,以允許快速存取數(shù)據(jù)庫(kù)中的數(shù)據(jù)。索引關(guān)鍵字是唯一地標(biāo)識(shí)數(shù)據(jù)庫(kù)中的每行的屬性的最小集。例如,在圖1所示的數(shù)據(jù)庫(kù)中,“產(chǎn)品名”可以是關(guān)鍵字,假設(shè)為了簡(jiǎn)單,每個(gè)產(chǎn)品具有唯一的產(chǎn)品名。換句話說(shuō),產(chǎn)品名可以用來(lái)唯一地標(biāo)識(shí)行,其中關(guān)于該產(chǎn)品的數(shù)據(jù)存儲(chǔ)于數(shù)據(jù)庫(kù)中的該行中。
數(shù)據(jù)庫(kù)或關(guān)系的每行中的數(shù)據(jù)應(yīng)當(dāng)被分析,以確保數(shù)據(jù)滿足某些檢查約束并保持引用完整性。約束是限制數(shù)據(jù)庫(kù)或表格中的值的規(guī)則。例如,在圖1中所示的數(shù)據(jù)庫(kù)中,約束的實(shí)例可以是終止日期<2001年5月16日。也就是,在終止日期列中列出的每個(gè)值應(yīng)當(dāng)小于2001年5月16日。
引用完整性要求所有非空外來(lái)關(guān)鍵字對(duì)應(yīng)于某個(gè)關(guān)系中的實(shí)際關(guān)鍵字。外來(lái)關(guān)鍵字可以是一個(gè)表格中的屬性或?qū)傩约錁?gòu)成某個(gè)其他表格中的關(guān)鍵字。外來(lái)關(guān)鍵字用來(lái)表明關(guān)系之間的邏輯鏈接。例如,在圖1中所示的數(shù)據(jù)庫(kù)中,零件號(hào)碼外來(lái)關(guān)鍵字(零件號(hào)碼)可以將產(chǎn)品表格與零件表格(沒有顯示)相關(guān)。引用完整性確保零件號(hào)碼屬性保持為零件表格中的關(guān)鍵字,使得產(chǎn)品表格與零件表格(沒有顯示)之間的關(guān)系保持有效。通常,檢查約束和引用完整性的要求由數(shù)據(jù)庫(kù)管理員預(yù)先確定,并且可以依賴于使用數(shù)據(jù)庫(kù)中數(shù)據(jù)的應(yīng)用而改變。
當(dāng)數(shù)據(jù)庫(kù)或關(guān)系的一行中的數(shù)據(jù)不滿足約束或不保持引用完整性時(shí),數(shù)據(jù)可以刪除。另外,與數(shù)據(jù)從中刪除的行相對(duì)應(yīng)的索引關(guān)鍵字可以從索引中刪除。刪除之后,數(shù)據(jù)庫(kù)和索引可能具有包括不具有數(shù)據(jù)的行的“洞”和/或關(guān)鍵字被刪除的空間。為了使數(shù)據(jù)庫(kù)和索引中空間的有效使用達(dá)到最大,這些洞應(yīng)當(dāng)被去除。
目前,檢查實(shí)用程序可以執(zhí)行檢查以及不符合約束或引用完整性的數(shù)據(jù)的刪除。然后,單獨(dú)的重新組織實(shí)用程序可以用來(lái)重新組織數(shù)據(jù)的剩余行以重新組合數(shù)據(jù)庫(kù),同時(shí)刪去沒有數(shù)據(jù)的行。另外,重新組織實(shí)用程序可以重建與重新組織的表格相關(guān)的索引,以刪去由已刪除關(guān)鍵字留下的空間。
用于執(zhí)行檢查數(shù)據(jù)以檢查與約束的符合和引用完整性的方法的檢查實(shí)用程序的操作在圖2中說(shuō)明。在步驟S20中,檢查實(shí)用程序從數(shù)據(jù)庫(kù)中讀出一行數(shù)據(jù)。在步驟S22中,分析從數(shù)據(jù)庫(kù)中讀出的數(shù)據(jù),以確保數(shù)據(jù)符合預(yù)先確定的檢查約束并保持引用完整性。如果來(lái)自一行的數(shù)據(jù)不滿足這些要求,檢查實(shí)用程序可以刪除該行中的數(shù)據(jù)。在步驟S24中,與已刪除的行相對(duì)應(yīng)的索引關(guān)鍵字也可以從與數(shù)據(jù)庫(kù)相關(guān)的索引中刪除。在步驟S26中,數(shù)據(jù)庫(kù)和索引用由已刪除數(shù)據(jù)和已刪除關(guān)鍵字留下的空間來(lái)重寫。
然后,可以調(diào)用重新組織實(shí)用程序來(lái)以圖3中說(shuō)明的方式刪去數(shù)據(jù)庫(kù)和索引中的洞(例如由已刪除數(shù)據(jù)和關(guān)鍵字留下的空間)。在步驟S30中,重新組織實(shí)用程序讀取數(shù)據(jù)庫(kù)的一行。在步驟S32中,如果該行中的數(shù)據(jù)沒有被檢查實(shí)用程序刪除,該行重新裝入到數(shù)據(jù)庫(kù)中。在步驟S34中,索引空間被重建,以包括僅與在步驟S32中由重新組織實(shí)用程序重新裝入到數(shù)據(jù)庫(kù)中的行相對(duì)應(yīng)的索引關(guān)鍵字。
當(dāng)檢查和重新組織數(shù)據(jù)庫(kù)中的數(shù)據(jù)的這些方法工作時(shí),這些方法的一些運(yùn)行特征可以改進(jìn)。例如,幾個(gè)輸入/輸出操作用來(lái)執(zhí)行這些方法。每行由檢查實(shí)用程序讀出,然后數(shù)據(jù)庫(kù)和索引的每頁(yè)在非一致性數(shù)據(jù)刪除之后重寫。然后,重新組織實(shí)用程序再次讀出數(shù)據(jù)庫(kù)的每行,并且將數(shù)據(jù)沒有從中刪除的行重新裝入到數(shù)據(jù)庫(kù)中。然后,重新組織實(shí)用程序重建索引空間,以對(duì)應(yīng)于重新裝入的數(shù)據(jù)庫(kù)。輸入/輸出操作不必要地重復(fù)并且增加了錯(cuò)誤引入到表格中的數(shù)據(jù)中的概率。
這些方法的重復(fù)特性也是耗時(shí)的。首先,檢查實(shí)用程序完全地運(yùn)行,以讀出和重寫數(shù)據(jù)庫(kù)和索引中的數(shù)據(jù)。然后,重新組織實(shí)用程序讀出數(shù)據(jù)庫(kù)的每行和索引中的相應(yīng)索引關(guān)鍵字,并且重新裝入到數(shù)據(jù)庫(kù)并重建索引空間。當(dāng)這些實(shí)用程序正在運(yùn)行時(shí),表格中的數(shù)據(jù)對(duì)于用戶應(yīng)用程序或?qū)τ诼?lián)機(jī)事務(wù)處理是不可用的。
因此,期望提供一種方法和系統(tǒng),其用于以更有效的方式來(lái)檢查和重新組織數(shù)據(jù)庫(kù)或關(guān)系中的數(shù)據(jù),使得表格中的數(shù)據(jù)將僅在相對(duì)短的時(shí)間段上不可用。
發(fā)明內(nèi)容
一種重新組織數(shù)據(jù)庫(kù)中表格空間的方法,可以包括從數(shù)據(jù)庫(kù)中讀取一行數(shù)據(jù),分析從數(shù)據(jù)庫(kù)中讀出的該行數(shù)據(jù),基于至少一個(gè)預(yù)先確定的規(guī)則來(lái)確定是刪去還是保留該行數(shù)據(jù),當(dāng)確定該行數(shù)據(jù)符合該至少一個(gè)預(yù)先確定的規(guī)則時(shí)將該行數(shù)據(jù)重新裝入到數(shù)據(jù)庫(kù)中,當(dāng)確定該行數(shù)據(jù)不符合該至少一個(gè)預(yù)先確定的規(guī)則時(shí)刪去該行數(shù)據(jù),重建與數(shù)據(jù)庫(kù)相關(guān)的索引以包括與重新裝入的該行數(shù)據(jù)相對(duì)應(yīng)的關(guān)鍵字,以及對(duì)于數(shù)據(jù)庫(kù)中的每行數(shù)據(jù)重復(fù)確定,重新裝入,刪去和重建。
一種用于重新組織數(shù)據(jù)庫(kù)中表格空間的系統(tǒng),可以包括用于從數(shù)據(jù)庫(kù)中讀出一行數(shù)據(jù)的讀取設(shè)備,用于分析該行數(shù)據(jù)以基于至少一個(gè)預(yù)先確定的規(guī)則來(lái)確定是刪去還是保留該行數(shù)據(jù)的分析設(shè)備,用于當(dāng)確定該行數(shù)據(jù)滿足該至少一個(gè)預(yù)先確定的規(guī)則時(shí)重新裝入該行數(shù)據(jù)的重新裝入設(shè)備,用于當(dāng)確定該行數(shù)據(jù)不符合該至少一個(gè)預(yù)先確定的規(guī)則時(shí)刪去該行數(shù)據(jù)的刪去設(shè)備,以及用于重建與數(shù)據(jù)庫(kù)相關(guān)的索引以包括與重新裝入的該行數(shù)據(jù)相對(duì)應(yīng)的關(guān)鍵字的重建設(shè)備,其中數(shù)據(jù)庫(kù)中的每行數(shù)據(jù)均從數(shù)據(jù)庫(kù)中讀出并分析。
一種包括用于重新組織數(shù)據(jù)庫(kù)中表格空間的計(jì)算機(jī)可執(zhí)行代碼的計(jì)算機(jī)記錄介質(zhì),其中計(jì)算機(jī)可執(zhí)行代碼,可以包括用于從數(shù)據(jù)庫(kù)中讀出一行數(shù)據(jù)的讀取代碼,用于分析從數(shù)據(jù)庫(kù)中讀出的該行數(shù)據(jù)的分析代碼,用于基于至少一個(gè)預(yù)先確定的規(guī)則來(lái)確定是刪去還是保留一行數(shù)據(jù)的確定代碼,用于當(dāng)確定該行數(shù)據(jù)符合該至少一個(gè)預(yù)先確定的規(guī)則時(shí)重新裝入該行數(shù)據(jù)的重新裝入代碼,用于當(dāng)確定該行數(shù)據(jù)不符合該至少一個(gè)預(yù)先確定的規(guī)則時(shí)刪去該行數(shù)據(jù)的刪去代碼,用于重建與數(shù)據(jù)庫(kù)相關(guān)的索引以包括與重新裝入的該行數(shù)據(jù)相對(duì)應(yīng)的關(guān)鍵字的重建代碼,以及用于對(duì)于數(shù)據(jù)庫(kù)中的每行數(shù)據(jù)重復(fù)確定,重新裝入,刪去和重建的重復(fù)代碼。
一種重新組織數(shù)據(jù)庫(kù)中表格空間的方法,可以包括將數(shù)據(jù)庫(kù)和相關(guān)索引劃分成多個(gè)部分,選擇數(shù)據(jù)庫(kù)的多個(gè)部分中的一個(gè)部分以及相關(guān)索引的相關(guān)部分,從數(shù)據(jù)庫(kù)的所選一個(gè)部分中讀出一行數(shù)據(jù),分析從所選一個(gè)部分中讀出的該行數(shù)據(jù),基于至少一個(gè)預(yù)先確定的規(guī)則來(lái)確定是刪去還是保留該行數(shù)據(jù),當(dāng)確定該行數(shù)據(jù)符合該至少一個(gè)預(yù)先確定的規(guī)則時(shí)將該行數(shù)據(jù)重新裝入到數(shù)據(jù)庫(kù)的所選一個(gè)部分中,當(dāng)確定該行數(shù)據(jù)不符合該至少一個(gè)預(yù)先確定的規(guī)則時(shí)刪去該行數(shù)據(jù),重建相關(guān)索引的相關(guān)部分以包括與重新裝入的該行數(shù)據(jù)相對(duì)應(yīng)的關(guān)鍵字,對(duì)于數(shù)據(jù)庫(kù)的所選一個(gè)部分中的每行重復(fù)確定、重新裝入、刪去和重建,以及對(duì)于數(shù)據(jù)庫(kù)中的每個(gè)部分重復(fù)選擇、讀取、分析、確定、重新裝入、刪去和重建。
一種用于重新組織數(shù)據(jù)庫(kù)中表格空間的系統(tǒng),可以包括用于將數(shù)據(jù)庫(kù)和相關(guān)索引劃分成多個(gè)部分的劃分設(shè)備,用于選擇數(shù)據(jù)庫(kù)的多個(gè)部分中的一個(gè)部分以及相關(guān)索引的相關(guān)部分的部分選擇設(shè)備,用于從數(shù)據(jù)庫(kù)的所選一個(gè)部分中讀出一行數(shù)據(jù)的讀取設(shè)備,用于分析從所選一個(gè)部分中讀出的該行數(shù)據(jù)并且基于至少一個(gè)預(yù)先確定的規(guī)則來(lái)確定是刪去還是保留該行數(shù)據(jù)的分析設(shè)備,用于當(dāng)確定該行數(shù)據(jù)符合該至少一個(gè)預(yù)先確定的規(guī)則時(shí)將該行數(shù)據(jù)重新裝入到數(shù)據(jù)庫(kù)的所選一個(gè)部分中的重新裝入設(shè)備,用于當(dāng)確定該行數(shù)據(jù)不符合該至少一個(gè)預(yù)先確定的規(guī)則時(shí)刪去該行數(shù)據(jù)的刪去設(shè)備,以及用于重建相關(guān)索引的相關(guān)部分以包括與重新裝入的該行數(shù)據(jù)相對(duì)應(yīng)的關(guān)鍵字的重建設(shè)備,其中數(shù)據(jù)庫(kù)的所選一個(gè)部分中的每行以及數(shù)據(jù)庫(kù)的多個(gè)部分中的每個(gè)部分由該系統(tǒng)來(lái)分析。
一種包括用于重新組織數(shù)據(jù)庫(kù)中表格空間的計(jì)算機(jī)可執(zhí)行代碼的計(jì)算機(jī)記錄介質(zhì),其中計(jì)算機(jī)可執(zhí)行代碼可以包括用于將數(shù)據(jù)庫(kù)和相關(guān)索引劃分成多個(gè)部分的劃分代碼,用于選擇數(shù)據(jù)庫(kù)的多個(gè)部分中的一個(gè)部分以及相關(guān)索引的相關(guān)部分的部分選擇代碼,用于從所選一個(gè)部分中讀出一行數(shù)據(jù)的讀取代碼,用于分析從所選一個(gè)部分中讀出的該行數(shù)據(jù)的分析代碼,用于基于至少一個(gè)預(yù)先確定的規(guī)則來(lái)確定是刪去還是保留該行數(shù)據(jù)的確定代碼,用于當(dāng)確定該行數(shù)據(jù)符合該至少一個(gè)預(yù)先確定的規(guī)則時(shí)將該行數(shù)據(jù)重新裝入到數(shù)據(jù)庫(kù)的所選一個(gè)部分中的重新裝入代碼,用于當(dāng)確定該行數(shù)據(jù)不符合該至少一個(gè)預(yù)先確定的規(guī)則時(shí)刪去該行數(shù)據(jù)的刪去代碼,用于重建相關(guān)索引的相關(guān)部分以包括與重新裝入的該行數(shù)據(jù)相對(duì)應(yīng)的關(guān)鍵字的重建代碼,用于對(duì)于數(shù)據(jù)庫(kù)的所選一個(gè)部分中的每行重復(fù)確定,重新裝入,刪去和重建的行重復(fù)代碼,以及用于對(duì)于數(shù)據(jù)庫(kù)中的每個(gè)部分重復(fù)選擇,讀取,分析,確定,重新裝入,刪去和重建的部分重復(fù)代碼。
一種重新組織數(shù)據(jù)庫(kù)中表格空間的兩步方法,該兩步方法對(duì)于數(shù)據(jù)庫(kù)中的每行來(lái)重復(fù),可以包括第一步,第一步包括從數(shù)據(jù)庫(kù)中讀取一行數(shù)據(jù),分析從數(shù)據(jù)庫(kù)中讀出的該行數(shù)據(jù),基于至少一個(gè)預(yù)先確定的規(guī)則來(lái)確定是刪去還是保留該行數(shù)據(jù)。第二步可以包括當(dāng)確定該行數(shù)據(jù)符合該至少一個(gè)預(yù)先確定的規(guī)則時(shí)將該行數(shù)據(jù)重新裝入到數(shù)據(jù)庫(kù)中,當(dāng)確定該行數(shù)據(jù)不符合該至少一個(gè)預(yù)先確定的規(guī)則時(shí)刪去該行數(shù)據(jù),以及重建與數(shù)據(jù)庫(kù)相關(guān)的索引以包括與重新裝入的該行數(shù)據(jù)相對(duì)應(yīng)的關(guān)鍵字。
一種執(zhí)行重新組織數(shù)據(jù)庫(kù)中表格空間的兩步法的系統(tǒng),該兩步法對(duì)于數(shù)據(jù)庫(kù)中的每行來(lái)重復(fù),可以包括第一步,第一步包括從數(shù)據(jù)庫(kù)中讀取一行數(shù)據(jù),分析從數(shù)據(jù)庫(kù)中讀出的該行數(shù)據(jù),以及基于至少一個(gè)預(yù)先確定的規(guī)則來(lái)確定是刪去還是保留該行數(shù)據(jù)。第二步可以包括當(dāng)確定該行數(shù)據(jù)符合該至少一個(gè)預(yù)先確定的規(guī)則時(shí)將該行數(shù)據(jù)重新裝入到數(shù)據(jù)庫(kù)中,當(dāng)確定該行數(shù)據(jù)不符合該至少一個(gè)預(yù)先確定的規(guī)則時(shí)刪去該行數(shù)據(jù),以及重建與數(shù)據(jù)庫(kù)相關(guān)的索引以包括與重新裝入的該行數(shù)據(jù)相對(duì)應(yīng)的關(guān)鍵字。
一種包括用于以兩步重新組織數(shù)據(jù)庫(kù)中表格空間的計(jì)算機(jī)可執(zhí)行代碼的計(jì)算機(jī)記錄介質(zhì),該兩步對(duì)于數(shù)據(jù)庫(kù)中的每行數(shù)據(jù)來(lái)重復(fù),可以包括第一步代碼,第一步代碼包括用于從數(shù)據(jù)庫(kù)中讀出一行數(shù)據(jù)的讀取代碼,用于分析從數(shù)據(jù)庫(kù)中讀出的該行數(shù)據(jù)的分析代碼,以及用于基于至少一個(gè)預(yù)先確定的規(guī)則來(lái)確定是刪去還是保留一行數(shù)據(jù)的確定代碼。第二步代碼可以包括用于當(dāng)確定該行數(shù)據(jù)符合該至少一個(gè)預(yù)先確定的規(guī)則時(shí)重新裝入該行數(shù)據(jù)的重新裝入代碼,用于當(dāng)確定該行數(shù)據(jù)不符合該至少一個(gè)預(yù)先確定的規(guī)則時(shí)刪去該行數(shù)據(jù)的刪去代碼,以及用于重建與數(shù)據(jù)庫(kù)相關(guān)的索引以包括與重新裝入的該行數(shù)據(jù)相對(duì)應(yīng)的關(guān)鍵字的重建代碼。
一種重新組織數(shù)據(jù)庫(kù)中表格空間的兩步方法,該兩步方法對(duì)于數(shù)據(jù)庫(kù)的一個(gè)部分中的每行以及數(shù)據(jù)庫(kù)的多個(gè)部分中的每個(gè)部分來(lái)重復(fù),可以包括第一步,第一步包括將數(shù)據(jù)庫(kù)和相關(guān)索引劃分成多個(gè)部分,選擇數(shù)據(jù)庫(kù)的多個(gè)部分中的一個(gè)部分以及相關(guān)索引的相關(guān)部分,從數(shù)據(jù)庫(kù)的所選一個(gè)部分中讀出一行數(shù)據(jù),分析從所選一個(gè)部分中讀出的該行數(shù)據(jù),基于至少一個(gè)預(yù)先確定的規(guī)則來(lái)確定是刪去還是保留該行數(shù)據(jù)。第二步可以包括當(dāng)確定該行數(shù)據(jù)符合該至少一個(gè)預(yù)先確定的規(guī)則時(shí)將該行數(shù)據(jù)重新裝入到數(shù)據(jù)庫(kù)的所選一個(gè)部分中,當(dāng)確定該行數(shù)據(jù)不符合該至少一個(gè)預(yù)先確定的規(guī)則時(shí)刪去該行數(shù)據(jù),以及重建相關(guān)索引的相關(guān)部分以包括與重新裝入的該行數(shù)據(jù)相對(duì)應(yīng)的關(guān)鍵字。
一種執(zhí)行重新組織數(shù)據(jù)庫(kù)的表格空間的兩步法的系統(tǒng),該兩步法對(duì)于數(shù)據(jù)庫(kù)的一個(gè)部分中的每行以及數(shù)據(jù)庫(kù)的多個(gè)部分中的每個(gè)部分來(lái)重復(fù),可以包括第一步,第一步包括將數(shù)據(jù)庫(kù)和相關(guān)索引劃分成多個(gè)部分,選擇數(shù)據(jù)庫(kù)的多個(gè)部分中的一個(gè)部分以及相關(guān)索引的相關(guān)部分,從數(shù)據(jù)庫(kù)的所選一個(gè)部分中讀出一行數(shù)據(jù),分析從所選一個(gè)部分中讀出的該行數(shù)據(jù),基于至少一個(gè)預(yù)先確定的規(guī)則來(lái)確定是刪去還是保留該行數(shù)據(jù)。第二步可以包括當(dāng)確定該行數(shù)據(jù)符合該至少一個(gè)預(yù)先確定的規(guī)則時(shí)將該行數(shù)據(jù)重新裝入到數(shù)據(jù)庫(kù)的所選一個(gè)部分中,當(dāng)確定該行數(shù)據(jù)不符合該至少一個(gè)預(yù)先確定的規(guī)則時(shí)刪去該行數(shù)據(jù),以及重建相關(guān)索引的相關(guān)部分以包括與重新裝入的該行數(shù)據(jù)相對(duì)應(yīng)的關(guān)鍵字。
一種包括用于以兩步重新組織數(shù)據(jù)庫(kù)的表格空間的計(jì)算機(jī)可執(zhí)行代碼的計(jì)算機(jī)記錄介質(zhì),該兩步對(duì)于數(shù)據(jù)庫(kù)的一個(gè)部分中的每行數(shù)據(jù)以及數(shù)據(jù)庫(kù)的多個(gè)部分中的每個(gè)部分來(lái)重復(fù),該計(jì)算機(jī)可執(zhí)行代碼可以包括第一步代碼,第一步代碼包括用于將數(shù)據(jù)庫(kù)和相關(guān)索引劃分成多個(gè)部分的劃分代碼,用于選擇數(shù)據(jù)庫(kù)的多個(gè)部分中的一個(gè)部分以及相關(guān)索引的相關(guān)部分的部分選擇代碼,用于從所選一個(gè)部分中讀出一行數(shù)據(jù)的讀取代碼,用于分析從所選一個(gè)部分中讀出的該行數(shù)據(jù)的分析代碼,以及用于基于至少一個(gè)預(yù)先確定的規(guī)則來(lái)確定是刪去還是保留該行數(shù)據(jù)的確定代碼。第二步代碼可以包括用于當(dāng)確定該行數(shù)據(jù)符合該至少一個(gè)預(yù)先確定的規(guī)則時(shí)將該行數(shù)據(jù)重新裝入到數(shù)據(jù)庫(kù)的所選一個(gè)部分中的重新裝入代碼,用于當(dāng)確定該行數(shù)據(jù)不符合該至少一個(gè)預(yù)先確定的規(guī)則時(shí)刪去該行數(shù)據(jù)的刪去代碼,以及用于重建相關(guān)索引的相關(guān)部分以包括與重新裝入的該行數(shù)據(jù)相對(duì)應(yīng)的關(guān)鍵字的重建代碼。
本公開內(nèi)容的更完全理解及其許多伴隨優(yōu)點(diǎn)將通過當(dāng)連同附隨附圖一起考慮時(shí)參考下面的詳細(xì)描述而容易獲得,以及同樣變得更好理解,其中
圖1是數(shù)據(jù)存儲(chǔ)于其中的數(shù)據(jù)庫(kù)的例示。
圖2是說(shuō)明檢查實(shí)用程序的操作的流程圖。
圖3是說(shuō)明重新組織實(shí)用程序的操作的流程圖。
圖4是說(shuō)明用于實(shí)現(xiàn)根據(jù)本公開內(nèi)容的方法和系統(tǒng)的計(jì)算機(jī)系統(tǒng)的框圖。
圖5是數(shù)據(jù)存儲(chǔ)于其中的數(shù)據(jù)庫(kù)的例示。
圖6是說(shuō)明根據(jù)本公開內(nèi)容的一種實(shí)施方案用于重新組織數(shù)據(jù)庫(kù)的方法的流程圖。
圖7是說(shuō)明根據(jù)本公開內(nèi)容的另一種實(shí)施方案、組織數(shù)據(jù)庫(kù)的方法的流程圖。
具體實(shí)施例方式
在描述附圖中說(shuō)明的本公開內(nèi)容優(yōu)選實(shí)施方案的過程中,為了清楚而使用具體的術(shù)語(yǔ)。但是,本公開內(nèi)容并不旨在限制于如此選擇的具體術(shù)語(yǔ),并且應(yīng)當(dāng)理解,每個(gè)具體要素包括以類似方式操作的所有技術(shù)等價(jià)物。
本方法和系統(tǒng)提出,讀出數(shù)據(jù)庫(kù)的一行并且檢查該行中的數(shù)據(jù)以檢查與約束的符合和引用完整性。如果該行中的數(shù)據(jù)滿足這些要求,該行數(shù)據(jù)重新裝入到數(shù)據(jù)庫(kù)中,否則,刪去該行數(shù)據(jù)。然后,重建與數(shù)據(jù)庫(kù)相關(guān)的索引,以僅包括與重新裝入到數(shù)據(jù)庫(kù)中的數(shù)據(jù)行相關(guān)的關(guān)鍵字。在單個(gè)無(wú)縫過程中,數(shù)據(jù)行被讀出,分析和重新裝入或刪去,并且與數(shù)據(jù)庫(kù)相關(guān)的索引被重建。
該系統(tǒng)和方法可以以在計(jì)算機(jī)系統(tǒng)例如大型機(jī)例如OS/390,個(gè)人計(jì)算機(jī)(PC),便攜計(jì)算機(jī),服務(wù)器等上運(yùn)行的軟件應(yīng)用程序的形式來(lái)實(shí)現(xiàn)。計(jì)算機(jī)可以鏈接到數(shù)據(jù)庫(kù)。該鏈接可以是,例如經(jīng)由直接鏈路例如直接硬線或無(wú)線連接,經(jīng)由網(wǎng)絡(luò)連接例如局域網(wǎng),或者經(jīng)由因特網(wǎng)。
能夠?qū)崿F(xiàn)本系統(tǒng)和方法的計(jì)算機(jī)系統(tǒng)的實(shí)例在圖4中顯示。通常稱作系統(tǒng)400的計(jì)算機(jī)系統(tǒng)可以包括中央處理器(CPU)402,存儲(chǔ)器404,打印機(jī)接口406,顯示裝置408,LAN(局域網(wǎng))數(shù)據(jù)傳輸控制器410,LAN接口412,網(wǎng)絡(luò)控制器414,內(nèi)部總線416,以及一個(gè)或多個(gè)輸入設(shè)備418例如鍵盤,鼠標(biāo)等。如所示,系統(tǒng)400可以經(jīng)由鏈接422連接到數(shù)據(jù)庫(kù)420。
圖5說(shuō)明稱作零件號(hào)碼表格的數(shù)據(jù)庫(kù)或關(guān)系,其包括代表零件號(hào)碼(零件號(hào)碼),產(chǎn)品名(產(chǎn)品名),和終止日期(終止日期)的列。數(shù)據(jù)庫(kù)中的數(shù)據(jù)應(yīng)當(dāng)滿足某些約束并且應(yīng)當(dāng)保持引用完整性,如上所述。當(dāng)一行數(shù)據(jù)不滿足這些要求時(shí),該行數(shù)據(jù)中的數(shù)據(jù)應(yīng)當(dāng)刪除,并且與該行數(shù)據(jù)相關(guān)的關(guān)鍵字從與數(shù)據(jù)庫(kù)相關(guān)的索引中刪除。
本申請(qǐng)目的在于提供一種重新組織數(shù)據(jù)庫(kù)的方法,其提出檢查數(shù)據(jù)庫(kù)的每行中的數(shù)據(jù)符合預(yù)先確定的約束和引用完整性的要求,同時(shí)也提出重新組織數(shù)據(jù)庫(kù)和與數(shù)據(jù)庫(kù)相關(guān)的索引,以刪去可能由在檢查操作過程中數(shù)據(jù)的刪除而留下的任何洞。
該方法提出,讀出數(shù)據(jù)庫(kù)中的每行數(shù)據(jù)并且根據(jù)預(yù)先確定的規(guī)則分析數(shù)據(jù)。該行數(shù)據(jù)根據(jù)預(yù)先確定的規(guī)則或者保留或者刪除。保留的數(shù)據(jù)行重新裝入到數(shù)據(jù)庫(kù)中。與數(shù)據(jù)庫(kù)相關(guān)的索引被重建,以包括與保留的數(shù)據(jù)行相對(duì)應(yīng)的關(guān)鍵字。該方法對(duì)于數(shù)據(jù)庫(kù)中的每行數(shù)據(jù)來(lái)重復(fù)。
一種根據(jù)本公開內(nèi)容一種實(shí)施方案、用于重新組織數(shù)據(jù)庫(kù)的方法參考圖6來(lái)說(shuō)明。在步驟S60中,一行數(shù)據(jù)從數(shù)據(jù)庫(kù)中讀出。在步驟S62,該行數(shù)據(jù)根據(jù)預(yù)先確定的規(guī)則來(lái)分析。該行數(shù)據(jù)根據(jù)預(yù)先確定的規(guī)則刪去或保留。預(yù)先確定的規(guī)則可以包括檢查約束,或者引用完整性的約束和要求。這些規(guī)則可以由數(shù)據(jù)庫(kù)管理員預(yù)先確定。這些規(guī)則可以由數(shù)據(jù)庫(kù)管理員在適當(dāng)?shù)臅r(shí)候修改。如果一行數(shù)據(jù)不將被保留(否,步驟S63),刪去該行數(shù)據(jù)(步驟S65)。如果該行數(shù)據(jù)將被保留(是,步驟S63),該行數(shù)據(jù)重新裝入到數(shù)據(jù)庫(kù)中。在步驟S66中,與數(shù)據(jù)庫(kù)相關(guān)的索引使用與保留的數(shù)據(jù)行相對(duì)應(yīng)的索引關(guān)鍵字或關(guān)鍵字來(lái)重建,如果在步驟S64中該行數(shù)據(jù)已經(jīng)重新裝入到數(shù)據(jù)庫(kù)中。在步驟S68,做關(guān)于另一行,或下一行是否存在于索引中的確定。如果沒有下一行(否,步驟S68),該方法結(jié)束。如果有下一行(是,步驟S68),過程返回到步驟S60,在那里下一行從數(shù)據(jù)庫(kù)中讀出。該方法對(duì)于數(shù)據(jù)庫(kù)中的每行來(lái)重復(fù)。
如上所述,當(dāng)一行中的數(shù)據(jù)不滿足約束或不滿足引用完整性的要求時(shí),該數(shù)據(jù)從數(shù)據(jù)庫(kù)中刪去。該數(shù)據(jù)可以在刪除步驟中刪去或者可以簡(jiǎn)單地不重新裝入到數(shù)據(jù)庫(kù)中。當(dāng)一行中的數(shù)據(jù)滿足約束和引用完整性的要求時(shí),該數(shù)據(jù)可以保留并重新裝入到數(shù)據(jù)庫(kù)中裝入到數(shù)據(jù)庫(kù)的下一個(gè)空行中??招惺钱?dāng)前沒有存儲(chǔ)數(shù)據(jù)的行。作為選擇,保留的數(shù)據(jù)行可以裝入到新的數(shù)據(jù)庫(kù)中裝入到新的數(shù)據(jù)庫(kù)的下一個(gè)空白行中。這樣,沒有空白空間留在數(shù)據(jù)庫(kù)中。作為結(jié)果的重新裝入的數(shù)據(jù)庫(kù)或新的數(shù)據(jù)庫(kù)僅包括符合約束和引用完整性要求的數(shù)據(jù)行。另外,與數(shù)據(jù)庫(kù)相關(guān)的索引可以快速重建,并且包括與重新裝入的數(shù)據(jù)庫(kù)中存在的行相關(guān)的關(guān)鍵字。
使用本公開內(nèi)容的方法,數(shù)據(jù)的每行可以讀出和重寫僅一次,使得在方法的輸入和輸出階段中錯(cuò)誤發(fā)生的概率可以減小。另外,僅一個(gè)實(shí)用程序需要運(yùn)行,以檢查和重新組織表格的數(shù)據(jù)行,減少用于重新組織數(shù)據(jù)庫(kù)中表格空間的時(shí)間。因此,表格對(duì)于用戶應(yīng)用和聯(lián)機(jī)商務(wù)不可用的故障時(shí)間可以減少。
根據(jù)本公開內(nèi)容的另一種實(shí)施方案,提供一種重新組織數(shù)據(jù)庫(kù)的方法,其中數(shù)據(jù)庫(kù)劃分成多個(gè)部分。
該方法包括將數(shù)據(jù)庫(kù)和相關(guān)索引分割成多個(gè)部分的步驟。數(shù)據(jù)庫(kù)的多個(gè)部分中的一個(gè)連同相關(guān)索引的相關(guān)部分一起來(lái)選擇,并且所選一個(gè)部分的一行數(shù)據(jù)從該部分中讀出。根據(jù)預(yù)先確定的規(guī)則來(lái)分析的該行數(shù)據(jù),根據(jù)預(yù)先確定的規(guī)則或者保留或者刪去。保留的數(shù)據(jù)行重新裝入到所選一個(gè)部分中。相關(guān)索引的相關(guān)部分被重建,以包括與重新裝入到數(shù)據(jù)庫(kù)的所選一個(gè)部分中的保留數(shù)據(jù)行相對(duì)應(yīng)的關(guān)鍵字。讀出該部分中的每行數(shù)據(jù)并且分析每個(gè)部分。一次僅分析多個(gè)部分中的一個(gè)部分。
如上所述,當(dāng)重新組織方法運(yùn)行時(shí),數(shù)據(jù)庫(kù)中的數(shù)據(jù)對(duì)于應(yīng)用和電子商務(wù)不可用。雖然減少執(zhí)行重新組織和檢查操作所需的時(shí)間減少了數(shù)據(jù)不可用的時(shí)間量,數(shù)據(jù)仍然在一段時(shí)間上完全不可用。將數(shù)據(jù)庫(kù)劃分成多個(gè)部分并且獨(dú)立地重新組織每個(gè)部分使得數(shù)據(jù)庫(kù)的其他部分保持對(duì)于用戶應(yīng)用和電子商務(wù)可用。如此,數(shù)據(jù)庫(kù)中數(shù)據(jù)的至少一些將總是可用的。
該方法參考圖7進(jìn)一步描述。在步驟S70,數(shù)據(jù)庫(kù)和相關(guān)索引分別劃分成部分。相關(guān)索引的部分對(duì)應(yīng)于數(shù)據(jù)庫(kù)的部分。部分的數(shù)目可以依賴于數(shù)據(jù)庫(kù)的相對(duì)大小,并且可以由用戶或數(shù)據(jù)庫(kù)管理員來(lái)調(diào)整。這種靈活性使得該方法用于在許多不同種的數(shù)據(jù)庫(kù)中使用。在步驟S71中,數(shù)據(jù)庫(kù)的多個(gè)部分中的一個(gè)部分連同相關(guān)索引的相關(guān)部分一起被選擇,以重新組織。數(shù)據(jù)庫(kù)的該所選一個(gè)部分可以是多個(gè)部分中的任意一個(gè)。用戶或數(shù)據(jù)庫(kù)管理員可以基于因素例如使用頻率或者可能基于包含在部分中的數(shù)據(jù)的特性來(lái)指定哪個(gè)部分首先被重新組織。應(yīng)當(dāng)注意,用戶或數(shù)據(jù)庫(kù)管理員也設(shè)置約束和引用完整性的要求,因此可能最用于確定組織部分的最佳次序。步驟S72~步驟S78基本上如上面參考圖6描述的步驟S62~S68來(lái)操作,除了數(shù)據(jù)行從數(shù)據(jù)庫(kù)的所選部分中讀出并且重新裝入到數(shù)據(jù)庫(kù)的所選部分中,以及索引的相關(guān)部分被重建。如果下一行不存在(否,步驟S78),該方法可以繼續(xù)到步驟S79,在那里可以做關(guān)于數(shù)據(jù)庫(kù)的另一個(gè)部分或下一個(gè)部分是否存在的確定。如果不存在下一個(gè)部分(否,步驟S79),該方法結(jié)束。如果下一個(gè)部分存在(是,步驟S79),該方法可以返回到步驟S71,在那里選擇下一個(gè)部分。如果在步驟S78,下一行存在(是,步驟S78),該方法可以返回到步驟S72,并且下一行數(shù)據(jù)從數(shù)據(jù)庫(kù)的所選一個(gè)部分中讀出。
如上所述,當(dāng)一行中的數(shù)據(jù)不滿足約束或不滿足引用完整性的要求時(shí),該數(shù)據(jù)從數(shù)據(jù)庫(kù)中刪去。該數(shù)據(jù)可以在刪除步驟中刪去或者可以簡(jiǎn)單地不重新裝入到數(shù)據(jù)庫(kù)中。當(dāng)一行中的數(shù)據(jù)滿足約束和引用完整性的要求時(shí),該數(shù)據(jù)可以保留并重新裝入到數(shù)據(jù)庫(kù)的所選部分中裝入到下一個(gè)空行中。作為選擇,保留的數(shù)據(jù)行可以裝入到新的數(shù)據(jù)庫(kù)的一個(gè)部分中裝入到新的數(shù)據(jù)庫(kù)的下一個(gè)空白行中。這樣,沒有空白空間留在數(shù)據(jù)庫(kù)的所選部分或新的數(shù)據(jù)庫(kù)的部分中。數(shù)據(jù)庫(kù)的作為結(jié)果的重新裝入的部分或新的數(shù)據(jù)庫(kù)的部分僅包括符合約束和引用完整性要求的數(shù)據(jù)行。另外,與數(shù)據(jù)庫(kù)或新的數(shù)據(jù)庫(kù)相關(guān)的索引的相關(guān)部分可以快速重建,并且包括與數(shù)據(jù)庫(kù)的重新裝入的部分或新的數(shù)據(jù)庫(kù)的部分中存在的行相關(guān)的關(guān)鍵字。
雖然上述方法和系統(tǒng)可應(yīng)用于通常的數(shù)據(jù)庫(kù),這種數(shù)據(jù)庫(kù)的具體實(shí)例是在DB2環(huán)境中建造的數(shù)據(jù)庫(kù)。
本公開內(nèi)容可以使用根據(jù)本說(shuō)明書的講授編程的一個(gè)或多個(gè)常規(guī)通用數(shù)字計(jì)算機(jī)和/或服務(wù)器來(lái)方便地實(shí)現(xiàn)。適當(dāng)?shù)能浖幋a可以由熟練程序員基于本公開內(nèi)容的講授來(lái)容易地準(zhǔn)備。本公開內(nèi)容也可以通過準(zhǔn)備專用集成電路或通過互連常規(guī)組件的適當(dāng)網(wǎng)絡(luò)來(lái)實(shí)現(xiàn)。
本公開內(nèi)容的許多附加修改和改變考慮到上面的講授是可能的。因此應(yīng)當(dāng)理解,在附加權(quán)利要求書的范圍內(nèi),本發(fā)明可以不同于如在這里具體描述的來(lái)實(shí)踐。
權(quán)利要求
1.一種重新組織數(shù)據(jù)庫(kù)中表格空間的方法,包括從數(shù)據(jù)庫(kù)中讀取一行數(shù)據(jù);分析從數(shù)據(jù)庫(kù)中讀出的該行數(shù)據(jù);基于至少一個(gè)預(yù)先確定的規(guī)則來(lái)確定是刪去還是保留該行數(shù)據(jù);當(dāng)確定該行數(shù)據(jù)符合該至少一個(gè)預(yù)先確定的規(guī)則時(shí),將該行數(shù)據(jù)重新裝入到數(shù)據(jù)庫(kù)中;當(dāng)確定該行數(shù)據(jù)不符合該至少一個(gè)預(yù)先確定的規(guī)則時(shí)刪去該行數(shù)據(jù);重建與數(shù)據(jù)庫(kù)相關(guān)的索引以包括與重新裝入的該行數(shù)據(jù)相對(duì)應(yīng)的關(guān)鍵字;以及對(duì)于數(shù)據(jù)庫(kù)中的每行數(shù)據(jù)重復(fù)確定、重新裝入、刪去和重建。
2.權(quán)利要求1的方法,其中至少一個(gè)預(yù)先確定的規(guī)則包括約束。
3.權(quán)利要求2的方法,其中約束是限制數(shù)據(jù)庫(kù)中的值的規(guī)則。
4.權(quán)利要求1的方法,其中至少一個(gè)預(yù)先確定的規(guī)則是引用完整性的要求。
5.權(quán)利要求4的方法,其中引用完整性的要求是要求數(shù)據(jù)庫(kù)中所有非空外來(lái)關(guān)鍵字都對(duì)應(yīng)于另一個(gè)數(shù)據(jù)庫(kù)中的實(shí)際關(guān)鍵字的規(guī)則。
6.權(quán)利要求1的方法,其中重新裝入步驟包括將該行數(shù)據(jù)重新裝入到數(shù)據(jù)庫(kù)中該數(shù)據(jù)庫(kù)的第一空白行中,其中第一空白行是數(shù)據(jù)庫(kù)中不包含數(shù)據(jù)的第一行。
7.權(quán)利要求1的方法,其中重新裝入步驟包括將該行數(shù)據(jù)裝入到第二數(shù)據(jù)庫(kù)中該第二數(shù)據(jù)庫(kù)的第一空白行中,其中第一空白行是第二數(shù)據(jù)庫(kù)中不包含數(shù)據(jù)的第一行。
8.權(quán)利要求1的方法,其中該行數(shù)據(jù)通過刪除該行數(shù)據(jù)來(lái)刪去。
9.一種用于重新組織數(shù)據(jù)庫(kù)中表格空間的系統(tǒng),包括用于從數(shù)據(jù)庫(kù)中讀出一行數(shù)據(jù)的讀取設(shè)備;用于分析該行數(shù)據(jù)以基于至少一個(gè)預(yù)先確定的規(guī)則來(lái)確定是刪去還是保留該行數(shù)據(jù)的分析設(shè)備;用于當(dāng)確定該行數(shù)據(jù)滿足該至少一個(gè)預(yù)先確定的規(guī)則時(shí),重新裝入該行數(shù)據(jù)的重新裝入設(shè)備;用于當(dāng)確定該行數(shù)據(jù)不符合該至少一個(gè)預(yù)先確定的規(guī)則時(shí),刪去該行數(shù)據(jù)的刪去設(shè)備;以及用于重建與數(shù)據(jù)庫(kù)相關(guān)的索引以包括與重新裝入的該行數(shù)據(jù)相對(duì)應(yīng)的關(guān)鍵字的重建設(shè)備;其中數(shù)據(jù)庫(kù)中的每行數(shù)據(jù)均從數(shù)據(jù)庫(kù)中讀出并分析。
10.權(quán)利要求9的系統(tǒng),其中至少一個(gè)預(yù)先確定的規(guī)則包括約束。
11.權(quán)利要求10的系統(tǒng),其中約束是限制數(shù)據(jù)庫(kù)中的值的規(guī)則。
12.權(quán)利要求9的系統(tǒng),其中至少一個(gè)預(yù)先確定的規(guī)則是引用完整性的要求。
13.權(quán)利要求12的系統(tǒng),其中引用完整性的要求是要求數(shù)據(jù)庫(kù)中所有非空外來(lái)關(guān)鍵字都對(duì)應(yīng)于另一個(gè)數(shù)據(jù)庫(kù)中的實(shí)際關(guān)鍵字的規(guī)則。
14.權(quán)利要求9的系統(tǒng),其中重新裝入設(shè)備將該行數(shù)據(jù)重新裝入到數(shù)據(jù)庫(kù)中該數(shù)據(jù)庫(kù)的第一空白行中,其中第一空白行是數(shù)據(jù)庫(kù)中不包含數(shù)據(jù)的第一行。
15.權(quán)利要求9的系統(tǒng),其中重新裝入設(shè)備將該行數(shù)據(jù)裝入到第二數(shù)據(jù)庫(kù)中該第二數(shù)據(jù)庫(kù)的第一空白行中,其中第一空白行是第二數(shù)據(jù)庫(kù)中不包含數(shù)據(jù)的第一行。
16.權(quán)利要求9的系統(tǒng),其中刪去設(shè)備通過刪除該行數(shù)據(jù)來(lái)刪去該行數(shù)據(jù)。
17.一種計(jì)算機(jī)記錄介質(zhì),包括用于重新組織數(shù)據(jù)庫(kù)中表格空間的計(jì)算機(jī)可執(zhí)行代碼,所述計(jì)算機(jī)可執(zhí)行代碼包括用于從數(shù)據(jù)庫(kù)中讀出一行數(shù)據(jù)的讀取代碼;用于分析從數(shù)據(jù)庫(kù)中讀出的該行數(shù)據(jù)的分析代碼;用于基于至少一個(gè)預(yù)先確定的規(guī)則來(lái)確定是刪去還是保留一行數(shù)據(jù)的確定代碼;用于當(dāng)確定該行數(shù)據(jù)符合該至少一個(gè)預(yù)先確定的規(guī)則時(shí),重新裝入該行數(shù)據(jù)的重新裝入代碼;用于當(dāng)確定該行數(shù)據(jù)不符合該至少一個(gè)預(yù)先確定的規(guī)則時(shí),刪去該行數(shù)據(jù)的刪去代碼;用于重建與數(shù)據(jù)庫(kù)相關(guān)的索引以包括與重新裝入的該行數(shù)據(jù)相對(duì)應(yīng)的關(guān)鍵字的重建代碼;以及用于對(duì)于數(shù)據(jù)庫(kù)中的每行數(shù)據(jù)重復(fù)確定、重新裝入、刪去和重建的重復(fù)代碼。
18.權(quán)利要求17的計(jì)算機(jī)記錄介質(zhì),其中至少一個(gè)預(yù)先確定的規(guī)則包括約束。
19.權(quán)利要求18的計(jì)算機(jī)記錄介質(zhì),其中約束是限制數(shù)據(jù)庫(kù)中的值的規(guī)則。
20.權(quán)利要求17的計(jì)算機(jī)記錄介質(zhì),其中至少一個(gè)預(yù)先確定的規(guī)則是引用完整性的要求。
21.權(quán)利要求20的計(jì)算機(jī)記錄介質(zhì),其中引用完整性的要求是要求數(shù)據(jù)庫(kù)中所有非空外來(lái)關(guān)鍵字都對(duì)應(yīng)于另一個(gè)數(shù)據(jù)庫(kù)中的實(shí)際關(guān)鍵字的規(guī)則。
22.權(quán)利要求17的計(jì)算機(jī)記錄介質(zhì),其中重新裝入代碼將該行數(shù)據(jù)重新裝入到數(shù)據(jù)庫(kù)中該數(shù)據(jù)庫(kù)的第一空白行中,其中第一空白行是數(shù)據(jù)庫(kù)中不包含數(shù)據(jù)的第一行。
23.權(quán)利要求17的計(jì)算機(jī)記錄介質(zhì),其中重新裝入代碼將該行數(shù)據(jù)裝入到第二數(shù)據(jù)庫(kù)中該第二數(shù)據(jù)庫(kù)的第一空白行中,其中第一空白行是第二數(shù)據(jù)庫(kù)中不包含數(shù)據(jù)的第一行。
24.權(quán)利要求17的計(jì)算機(jī)記錄介質(zhì),其中刪去代碼包括用于刪除該行數(shù)據(jù)的刪除代碼。
25.一種重新組織數(shù)據(jù)庫(kù)中表格空間的方法,包括步驟將數(shù)據(jù)庫(kù)和相關(guān)索引劃分成多個(gè)部分;選擇數(shù)據(jù)庫(kù)的多個(gè)部分中的一個(gè)部分以及相關(guān)索引的相關(guān)部分;從數(shù)據(jù)庫(kù)的所選一個(gè)部分中讀出一行數(shù)據(jù);分析從所選一個(gè)部分中讀出的該行數(shù)據(jù);基于至少一個(gè)預(yù)先確定的規(guī)則來(lái)確定是刪去還是保留該行數(shù)據(jù);當(dāng)確定該行數(shù)據(jù)符合該至少一個(gè)預(yù)先確定的規(guī)則時(shí),將該行數(shù)據(jù)重新裝入到數(shù)據(jù)庫(kù)的所選一個(gè)部分中;當(dāng)確定該行數(shù)據(jù)不符合該至少一個(gè)預(yù)先確定的規(guī)則時(shí),刪去該行數(shù)據(jù);重建相關(guān)索引的相關(guān)部分以包括與重新裝入的該行數(shù)據(jù)相對(duì)應(yīng)的關(guān)鍵字;對(duì)于數(shù)據(jù)庫(kù)的所選一個(gè)部分中的每行重復(fù)確定、重新裝入、刪去和重建;以及對(duì)于數(shù)據(jù)庫(kù)中的每個(gè)部分重復(fù)選擇,讀取,分析,確定、重新裝入、刪去和重建。
26.權(quán)利要求25的方法,其中至少一個(gè)預(yù)先確定的規(guī)則包括約束。
27.權(quán)利要求26的方法,其中約束是限制數(shù)據(jù)庫(kù)中的值的規(guī)則。
28.權(quán)利要求25的方法,其中至少一個(gè)預(yù)先確定的規(guī)則是引用完整性的要求。
29.權(quán)利要求28的方法,其中引用完整性的要求是要求數(shù)據(jù)庫(kù)中所有非空外來(lái)關(guān)鍵字都對(duì)應(yīng)于另一個(gè)數(shù)據(jù)庫(kù)中的實(shí)際關(guān)鍵字的規(guī)則。
30.權(quán)利要求25的方法,其中重新裝入步驟包括將該行數(shù)據(jù)重新裝入到數(shù)據(jù)庫(kù)的所選一個(gè)部分中該數(shù)據(jù)庫(kù)的所選一個(gè)部分的第一空白行中,其中第一空白行是數(shù)據(jù)庫(kù)的所選一個(gè)部分中不包含數(shù)據(jù)的第一行。
31.權(quán)利要求25的方法,其中重新裝入步驟包括將該行數(shù)據(jù)裝入到第二數(shù)據(jù)庫(kù)的一個(gè)部分中該第二數(shù)據(jù)庫(kù)的第一空白行中,其中第一空白行是第二數(shù)據(jù)庫(kù)中不包含數(shù)據(jù)的第一行。
32.權(quán)利要求25的方法,其中該行數(shù)據(jù)通過刪除該行數(shù)據(jù)來(lái)刪去。
33.一種用于重新組織數(shù)據(jù)庫(kù)中表格空間的系統(tǒng),包括用于將數(shù)據(jù)庫(kù)和相關(guān)索引劃分成多個(gè)部分的劃分設(shè)備;用于選擇數(shù)據(jù)庫(kù)的多個(gè)部分中的一個(gè)部分以及相關(guān)索引的相關(guān)部分的部分選擇設(shè)備;用于從數(shù)據(jù)庫(kù)的所選一個(gè)部分中讀出一行數(shù)據(jù)的讀取設(shè)備;用于分析從所選一個(gè)部分中讀出的該行數(shù)據(jù)并且基于至少一個(gè)預(yù)先確定的規(guī)則來(lái)確定是刪去還是保留該行數(shù)據(jù)的分析設(shè)備;用于當(dāng)確定該行數(shù)據(jù)符合該至少一個(gè)預(yù)先確定的規(guī)則時(shí),將該行數(shù)據(jù)重新裝入到數(shù)據(jù)庫(kù)的所選一個(gè)部分中的重新裝入設(shè)備;用于當(dāng)確定該行數(shù)據(jù)不符合該至少一個(gè)預(yù)先確定的規(guī)則時(shí),刪去該行數(shù)據(jù)的刪去設(shè)備;以及用于重建相關(guān)索引的相關(guān)部分以包括與重新裝入的該行數(shù)據(jù)相對(duì)應(yīng)的關(guān)鍵字的重建設(shè)備;其中數(shù)據(jù)庫(kù)的所選一個(gè)部分中的每行以及數(shù)據(jù)庫(kù)的多個(gè)部分中的每個(gè)部分均由該系統(tǒng)來(lái)重新組織。
34.權(quán)利要求33的系統(tǒng),其中至少一個(gè)預(yù)先確定的規(guī)則包括約束。
35.權(quán)利要求34的系統(tǒng),其中約束是限制數(shù)據(jù)庫(kù)中的值的規(guī)則。
36.權(quán)利要求33的系統(tǒng),其中至少一個(gè)預(yù)先確定的規(guī)則是引用完整性的要求。
37.權(quán)利要求36的系統(tǒng),其中引用完整性的要求是要求數(shù)據(jù)庫(kù)中所有非空外來(lái)關(guān)鍵字都對(duì)應(yīng)于另一個(gè)數(shù)據(jù)庫(kù)中的實(shí)際關(guān)鍵字的規(guī)則。
38.權(quán)利要求33的系統(tǒng),其中重新裝入設(shè)備將該行數(shù)據(jù)重新裝入到數(shù)據(jù)庫(kù)的所選一個(gè)部分中該數(shù)據(jù)庫(kù)的第一空白行中,其中
第一空白行是數(shù)據(jù)庫(kù)的所選一個(gè)部分中不包含數(shù)據(jù)的第一行。
39.權(quán)利要求33的系統(tǒng),其中重新裝入設(shè)備將該行數(shù)據(jù)裝入到第二數(shù)據(jù)庫(kù)的一個(gè)部分中該第二數(shù)據(jù)庫(kù)的第一空白行中,其中第一空白行是第二數(shù)據(jù)庫(kù)中不包含數(shù)據(jù)的第一行。
40.權(quán)利要求33的系統(tǒng),其中刪去設(shè)備通過刪除該行數(shù)據(jù)來(lái)刪去該行數(shù)據(jù)。
41.一種計(jì)算機(jī)記錄介質(zhì),包括用于重新組織數(shù)據(jù)庫(kù)中表格空間的計(jì)算機(jī)可執(zhí)行代碼,所述計(jì)算機(jī)可執(zhí)行代碼包括用于將數(shù)據(jù)庫(kù)和相關(guān)索引劃分成多個(gè)部分的劃分代碼;用于選擇數(shù)據(jù)庫(kù)的多個(gè)部分中的一個(gè)部分以及相關(guān)索引的相關(guān)部分的部分選擇代碼;用于從所選一個(gè)部分中讀出一行數(shù)據(jù)的讀取代碼;用于分析從所選一個(gè)部分中讀出的該行數(shù)據(jù)的分析代碼;用于基于至少一個(gè)預(yù)先確定的規(guī)則來(lái)確定是刪去還是保留該行數(shù)據(jù)的確定代碼;用于當(dāng)確定該行數(shù)據(jù)符合該至少一個(gè)預(yù)先確定的規(guī)則時(shí),將該行數(shù)據(jù)重新裝入到數(shù)據(jù)庫(kù)的所選一個(gè)部分中的重新裝入代碼;用于當(dāng)確定該行數(shù)據(jù)不符合該至少一個(gè)預(yù)先確定的規(guī)則時(shí),刪去該行數(shù)據(jù)的刪去代碼;用于重建相關(guān)索引的相關(guān)部分以包括與重新裝入的該行數(shù)據(jù)相對(duì)應(yīng)的關(guān)鍵字的重建代碼;用于對(duì)于數(shù)據(jù)庫(kù)的所選一個(gè)部分中的每行重復(fù)確定、重新裝入、刪去和重建的行重復(fù)代碼;以及用于對(duì)于數(shù)據(jù)庫(kù)中的每個(gè)部分重復(fù)選擇、讀取、分析、確定、重新裝入、刪去和重建的部分重復(fù)代碼。
42.權(quán)利要求41的計(jì)算機(jī)記錄介質(zhì),其中至少一個(gè)預(yù)先確定的規(guī)則包括約束。
43.權(quán)利要求42的計(jì)算機(jī)記錄介質(zhì),其中約束是限制數(shù)據(jù)庫(kù)中的值的規(guī)則。
44.權(quán)利要求41的計(jì)算機(jī)記錄介質(zhì),其中至少一個(gè)預(yù)先確定的規(guī)則是引用完整性的要求。
45.權(quán)利要求44的計(jì)算機(jī)記錄介質(zhì),其中引用完整性的要求是要求數(shù)據(jù)庫(kù)中所有非空外來(lái)關(guān)鍵字都對(duì)應(yīng)于另一個(gè)數(shù)據(jù)庫(kù)中的實(shí)際關(guān)鍵字的規(guī)則。
46.權(quán)利要求41的計(jì)算機(jī)記錄介質(zhì),其中重新裝入代碼將該行數(shù)據(jù)重新裝入到數(shù)據(jù)庫(kù)的所選一個(gè)部分中該數(shù)據(jù)庫(kù)的所選一個(gè)部分的第一空白行中,其中第一空白行是數(shù)據(jù)庫(kù)的所選一個(gè)部分中不包含數(shù)據(jù)的第一行。
47.權(quán)利要求41的計(jì)算機(jī)記錄介質(zhì),其中重新裝入代碼將該行數(shù)據(jù)裝入到第二數(shù)據(jù)庫(kù)的一個(gè)部分中該第二數(shù)據(jù)庫(kù)的第一空白行中,其中第一空白行是第二數(shù)據(jù)庫(kù)中不包含數(shù)據(jù)的第一行。
48.權(quán)利要求41的計(jì)算機(jī)記錄介質(zhì),其中刪去代碼包括用于刪除該行數(shù)據(jù)的刪除代碼。
49.一種重新組織數(shù)據(jù)庫(kù)中表格空間的兩步方法,該兩步方法對(duì)于數(shù)據(jù)庫(kù)中的每行來(lái)重復(fù),包括第一步,包括從數(shù)據(jù)庫(kù)中讀取一行數(shù)據(jù);分析從數(shù)據(jù)庫(kù)中讀出的該行數(shù)據(jù);基于至少一個(gè)預(yù)先確定的規(guī)則來(lái)確定是刪去還是保留該行數(shù)據(jù);以及第二步,包括當(dāng)確定該行數(shù)據(jù)符合該至少一個(gè)預(yù)先確定的規(guī)則時(shí),將該行數(shù)據(jù)重新裝入到數(shù)據(jù)庫(kù)中;當(dāng)確定該行數(shù)據(jù)不符合該至少一個(gè)預(yù)先確定的規(guī)則時(shí),刪去該行數(shù)據(jù);以及重建與數(shù)據(jù)庫(kù)相關(guān)的索引以包括與重新裝入的該行數(shù)據(jù)相對(duì)應(yīng)的關(guān)鍵字。
50.一種用于執(zhí)行重新組織數(shù)據(jù)庫(kù)中表格空間的兩步法的系統(tǒng),該兩步法對(duì)于數(shù)據(jù)庫(kù)中的每行重復(fù)進(jìn)行,該系統(tǒng)包括數(shù)據(jù)庫(kù);以及用于執(zhí)行兩步法的處理器,該兩步法包括第一步,包括從數(shù)據(jù)庫(kù)中讀取一行數(shù)據(jù);分析從數(shù)據(jù)庫(kù)中讀出的該行數(shù)據(jù);基于至少一個(gè)預(yù)先確定的規(guī)則來(lái)確定是刪去還是保留該行數(shù)據(jù);以及第二步,包括當(dāng)確定該行數(shù)據(jù)符合該至少一個(gè)預(yù)先確定的規(guī)則時(shí),將該行數(shù)據(jù)重新裝入到數(shù)據(jù)庫(kù)中;當(dāng)確定該行數(shù)據(jù)不符合該至少一個(gè)預(yù)先確定的規(guī)則時(shí),刪去該行數(shù)據(jù);以及重建與數(shù)據(jù)庫(kù)相關(guān)的索引以包括與重新裝入的該行數(shù)據(jù)相對(duì)應(yīng)的關(guān)鍵字。
51.一種計(jì)算機(jī)記錄介質(zhì),包括用于以兩步重新組織數(shù)據(jù)庫(kù)中表格空間的計(jì)算機(jī)可執(zhí)行代碼,該兩步對(duì)于數(shù)據(jù)庫(kù)中的每行數(shù)據(jù)來(lái)重復(fù),該計(jì)算機(jī)可執(zhí)行代碼包括第一步代碼,包括用于從數(shù)據(jù)庫(kù)中讀出一行數(shù)據(jù)的讀取代碼;用于分析從數(shù)據(jù)庫(kù)中讀出的該行數(shù)據(jù)的分析代碼;用于基于至少一個(gè)預(yù)先確定的規(guī)則來(lái)確定是刪去還是保留該行數(shù)據(jù)的確定代碼;以及第二步代碼,包括用于當(dāng)確定該行數(shù)據(jù)符合該至少一個(gè)預(yù)先確定的規(guī)則時(shí),重新裝入該行數(shù)據(jù)的重新裝入代碼;用于當(dāng)確定該行數(shù)據(jù)不符合該至少一個(gè)預(yù)先確定的規(guī)則時(shí),刪去該行數(shù)據(jù)的刪去代碼;以及用于重建與數(shù)據(jù)庫(kù)相關(guān)的索引以包括與重新裝入的該行數(shù)據(jù)相對(duì)應(yīng)的關(guān)鍵字的重建代碼。
52.一種重新組織數(shù)據(jù)庫(kù)中表格空間的兩步方法,該兩步方法對(duì)于數(shù)據(jù)庫(kù)的一個(gè)部分中的每行以及數(shù)據(jù)庫(kù)的多個(gè)部分中的每個(gè)部分重復(fù)進(jìn)行,該方法包括第一步,包括將數(shù)據(jù)庫(kù)和相關(guān)索引劃分成多個(gè)部分;選擇數(shù)據(jù)庫(kù)的多個(gè)部分中的一個(gè)部分以及相關(guān)索引的相關(guān)部分;從數(shù)據(jù)庫(kù)的所選一個(gè)部分中讀出一行數(shù)據(jù);分析從所選一個(gè)部分中讀出的該行數(shù)據(jù);基于至少一個(gè)預(yù)先確定的規(guī)則來(lái)確定是刪去還是保留該行數(shù)據(jù);以及第二步,包括當(dāng)確定該行數(shù)據(jù)符合該至少一個(gè)預(yù)先確定的規(guī)則時(shí),將該行數(shù)據(jù)重新裝入到數(shù)據(jù)庫(kù)的所選一個(gè)部分中;當(dāng)確定該行數(shù)據(jù)不符合該至少一個(gè)預(yù)先確定的規(guī)則時(shí),刪去該行數(shù)據(jù);以及重建相關(guān)索引的相關(guān)部分以包括與重新裝入的該行數(shù)據(jù)相對(duì)應(yīng)的關(guān)鍵字。
53.一種用于執(zhí)行重新組織數(shù)據(jù)庫(kù)的表格空間的兩步法的系統(tǒng),該兩步法對(duì)于數(shù)據(jù)庫(kù)的一個(gè)部分中的每行以及數(shù)據(jù)庫(kù)的多個(gè)部分中的每個(gè)部分重復(fù)進(jìn)行,該系統(tǒng)包括數(shù)據(jù)庫(kù);以及用于執(zhí)行兩步法的處理器,該兩步法包括第一步,包括將數(shù)據(jù)庫(kù)和相關(guān)索引劃分成多個(gè)部分;選擇數(shù)據(jù)庫(kù)的多個(gè)部分中的一個(gè)部分以及相關(guān)索引的相關(guān)部分;從數(shù)據(jù)庫(kù)的所選一個(gè)部分中讀出一行數(shù)據(jù);分析從所選一個(gè)部分中讀出的該行數(shù)據(jù);基于至少一個(gè)預(yù)先確定的規(guī)則來(lái)確定是刪去還是保留該行數(shù)據(jù);以及第二步,包括當(dāng)確定該行數(shù)據(jù)符合該至少一個(gè)預(yù)先確定的規(guī)則時(shí),將該行數(shù)據(jù)重新裝入到數(shù)據(jù)庫(kù)的所選一個(gè)部分中;當(dāng)確定該行數(shù)據(jù)不符合該至少一個(gè)預(yù)先確定的規(guī)則時(shí),刪去該行數(shù)據(jù);以及重建相關(guān)索引的相關(guān)部分以包括與重新裝入的該行數(shù)據(jù)相對(duì)應(yīng)的關(guān)鍵字。
54.一種計(jì)算機(jī)記錄介質(zhì),包括用于以兩步重新組織數(shù)據(jù)庫(kù)的表格空間的計(jì)算機(jī)可執(zhí)行代碼,該兩步對(duì)于數(shù)據(jù)庫(kù)的一個(gè)部分中的每行數(shù)據(jù)以及數(shù)據(jù)庫(kù)的多個(gè)部分中的每個(gè)部分重復(fù)進(jìn)行,該計(jì)算機(jī)可執(zhí)行代碼包括第一步代碼,包括用于將數(shù)據(jù)庫(kù)和相關(guān)索引劃分成多個(gè)部分的劃分代碼;用于選擇數(shù)據(jù)庫(kù)的多個(gè)部分中的一個(gè)部分以及相關(guān)索引的相關(guān)部分的部分選擇代碼;用于從所選一個(gè)部分中讀出一行數(shù)據(jù)的讀取代碼;用于分析從所選一個(gè)部分中讀出的該行數(shù)據(jù)的分析代碼;以及用于基于至少一個(gè)預(yù)先確定的規(guī)則來(lái)確定是刪去還是保留該行數(shù)據(jù)的確定代碼;以及第二步代碼,包括用于當(dāng)確定該行數(shù)據(jù)符合該至少一個(gè)預(yù)先確定的規(guī)則時(shí),將該行數(shù)據(jù)重新裝入到數(shù)據(jù)庫(kù)的所選一個(gè)部分中的重新裝入代碼;用于當(dāng)確定該行數(shù)據(jù)不符合該至少一個(gè)預(yù)先確定的規(guī)則時(shí),刪去該行數(shù)據(jù)的刪去代碼;以及用于重建相關(guān)索引的相關(guān)部分以包括與重新裝入的該行數(shù)據(jù)相對(duì)應(yīng)的關(guān)鍵字的重建代碼。
全文摘要
一種重新組織數(shù)據(jù)庫(kù)中表格空間的方法,可以包括從數(shù)據(jù)庫(kù)中讀取一行數(shù)據(jù),分析從數(shù)據(jù)庫(kù)中讀出的該行數(shù)據(jù),基于至少一個(gè)預(yù)先確定的規(guī)則來(lái)確定是刪去還是保留該行數(shù)據(jù),當(dāng)確定該行數(shù)據(jù)符合該至少一個(gè)預(yù)先確定的規(guī)則時(shí),將該行數(shù)據(jù)重新裝入到數(shù)據(jù)庫(kù)中,當(dāng)確定該行數(shù)據(jù)不符合該至少一個(gè)預(yù)先確定的規(guī)則時(shí)刪去該行數(shù)據(jù),以及重建與數(shù)據(jù)庫(kù)相關(guān)的索引以包括與重新裝入的該行數(shù)據(jù)相對(duì)應(yīng)的關(guān)鍵字。確定、重新裝入、刪去和重建步驟對(duì)于數(shù)據(jù)庫(kù)中的每行數(shù)據(jù)重復(fù)進(jìn)行。
文檔編號(hào)G06F17/30GK1533540SQ02814409
公開日2004年9月29日 申請(qǐng)日期2002年7月18日 優(yōu)先權(quán)日2001年7月19日
發(fā)明者小阿曼多·B·伊西匹, 小阿曼多 B 伊西匹, 韋弗, 斯蒂芬·韋弗, 澤倫卡, 約瑟夫·澤倫卡 申請(qǐng)人:計(jì)算機(jī)聯(lián)合思想公司