專(zhuān)利名稱(chēng):重組所存儲(chǔ)的數(shù)據(jù)的系統(tǒng)和方法
技術(shù)領(lǐng)域:
所描述的系統(tǒng)和方法通常涉及信息處理環(huán)境以及數(shù)據(jù)庫(kù)或文件訪問(wèn)的系統(tǒng)和方法。更具體地,所描述的系統(tǒng)和方法涉及用于改善表區(qū)或索引的重組的系統(tǒng)和方法。
背景技術(shù):
對(duì)于大量信息的存儲(chǔ)、管理和訪問(wèn),計(jì)算機(jī)是有效的工具。當(dāng)對(duì)用戶(hù)提供訪問(wèn)時(shí),計(jì)算機(jī)數(shù)據(jù)庫(kù)是一種用于在計(jì)算機(jī)上存儲(chǔ)信息的普通機(jī)制。普通的數(shù)據(jù)庫(kù)的計(jì)算機(jī)實(shí)現(xiàn)是將數(shù)據(jù)和索引存儲(chǔ)在不同的文件或?qū)ο笾小?br>
典型地,用戶(hù)不用直接訪問(wèn)其中存儲(chǔ)了包括數(shù)據(jù)庫(kù)的數(shù)據(jù)和/或索引的對(duì)象。通常允許用戶(hù)經(jīng)由數(shù)據(jù)庫(kù)管理系統(tǒng)(“DBMS”)或與DBMS通信的應(yīng)用程序來(lái)間接訪問(wèn)數(shù)據(jù)和索引。DBMS負(fù)責(zé)響應(yīng)來(lái)自用戶(hù)或應(yīng)用程序的請(qǐng)求來(lái)變更、更新、刪除和插入數(shù)據(jù)到物理對(duì)象。這樣,DBMS充當(dāng)終端用戶(hù)與物理數(shù)據(jù)存儲(chǔ)機(jī)構(gòu)之間的緩沖器,從而使終端用戶(hù)不必知道或考慮他正在使用的表的底層硬件層的細(xì)目。
有一些普通的數(shù)據(jù)庫(kù)管理系統(tǒng),例如包括,利用表區(qū)和索引對(duì)象來(lái)存儲(chǔ)和訪問(wèn)數(shù)據(jù)的DB2。普通的DBMS實(shí)現(xiàn)的另一個(gè)例子是IMS,它利用數(shù)據(jù)庫(kù)和索引對(duì)象來(lái)存儲(chǔ)和訪問(wèn)數(shù)據(jù)。
在典型的數(shù)據(jù)庫(kù)環(huán)境中,用戶(hù)數(shù)據(jù)的行駐留在表中,該表在諸如數(shù)據(jù)庫(kù)或表區(qū)的數(shù)據(jù)對(duì)象中被維護(hù)。每個(gè)存儲(chǔ)用戶(hù)數(shù)據(jù)的對(duì)象可以具有一個(gè)或多個(gè)索引。每個(gè)索引根據(jù)關(guān)鍵字來(lái)使對(duì)表的行的訪問(wèn)容易。索引的關(guān)鍵字是來(lái)自表格的一行或多行的典型的數(shù)據(jù)。對(duì)于讀取、更新、刪除和插入新數(shù)據(jù)的批和在線應(yīng)用,數(shù)據(jù)行是可用的。當(dāng)插入或刪除一行數(shù)據(jù)時(shí),在所有相關(guān)的索引上執(zhí)行對(duì)應(yīng)的插入或刪除。當(dāng)更新一個(gè)關(guān)鍵字列時(shí),也更新所有相關(guān)的索引。
典型的表和索引可以包括成千上萬(wàn)的記錄。在許多DBMS中,所有對(duì)象的變更、更新、刪除和插入都記錄在日志文件中。因?yàn)檎趯?duì)對(duì)象進(jìn)行大量的記錄和大量的修改,所以日志功能是DBMS中的最繁忙的功能。典型的DBMS日志功能也允許日志退出。也就是,在DBMS寫(xiě)每個(gè)日志記錄之前,它調(diào)用一個(gè)日志退出例程并且將日志記錄的地址傳送到例程。
隨著時(shí)間的過(guò)去,表和/或索引的添加和刪除可能導(dǎo)致所存儲(chǔ)的數(shù)據(jù)的無(wú)效的組織,并且可能影響DBMS及時(shí)響應(yīng)來(lái)自終端用戶(hù)和應(yīng)用程序的請(qǐng)求的能力。為了維護(hù)有效的數(shù)據(jù)存儲(chǔ)和訪問(wèn),已經(jīng)開(kāi)發(fā)了實(shí)用程序來(lái)重組數(shù)據(jù)和索引對(duì)象。從上次執(zhí)行了重組實(shí)用程序,可以定期執(zhí)行這些實(shí)用程序來(lái)糾正由請(qǐng)求的處理產(chǎn)生數(shù)據(jù)組織的無(wú)效性。由于需要時(shí)間和資源來(lái)執(zhí)行數(shù)據(jù)的重組,所以可以定期利用重組實(shí)用程序。
當(dāng)執(zhí)行重組實(shí)用程序時(shí),可以同時(shí)執(zhí)行要求訪問(wèn)被重組的數(shù)據(jù)和/或索引對(duì)象的批和在線應(yīng)用程序。為此,重組實(shí)用程序典型地在兩個(gè)階段檢查和重組主題對(duì)象。在第一階段,直到執(zhí)行重組實(shí)用程序,主題對(duì)象被重組來(lái)說(shuō)明已經(jīng)發(fā)生的所有的變更。
在第二階段,典型的重組實(shí)用程序說(shuō)明在執(zhí)行重組實(shí)用程序期間已經(jīng)發(fā)生的所有的變更。這是通過(guò)檢查所有的日志文件記錄來(lái)實(shí)現(xiàn)的,這些日志文件記錄反映了由同時(shí)批和在線應(yīng)用程序請(qǐng)求的變更。在完成重組之前,實(shí)用程序處理所有寫(xiě)入日志文件的變更,從而提供相當(dāng)于主題對(duì)象或索引對(duì)象的數(shù)據(jù)重組。
典型的DBMS環(huán)境如圖1所示。正如圖所示,所述環(huán)境包括用于維護(hù)和允許訪問(wèn)所存儲(chǔ)的信號(hào)的數(shù)據(jù)庫(kù)110。數(shù)據(jù)庫(kù)110包括至少一個(gè)用于存儲(chǔ)數(shù)據(jù)的行和列的數(shù)據(jù)對(duì)象112。數(shù)據(jù)庫(kù)110最好包括一個(gè)或多個(gè)與數(shù)據(jù)對(duì)象112相關(guān)的索引114和116,以便輔助訪問(wèn)存儲(chǔ)于其中的數(shù)據(jù)。當(dāng)然,索引114和116是可選的,并且數(shù)據(jù)對(duì)象112可不需要任何索引。
由數(shù)據(jù)庫(kù)管理系統(tǒng)(“DBMS”)120來(lái)提供對(duì)數(shù)據(jù)庫(kù)110的訪問(wèn)。DBMS 120使用戶(hù)130能夠訪問(wèn)數(shù)據(jù)庫(kù)110。DBMS 120也使用戶(hù)150能夠通過(guò)應(yīng)用140間接訪問(wèn)數(shù)據(jù)庫(kù)110。DBMS 120包括用于讀取、添加、刪除和更改存儲(chǔ)在數(shù)據(jù)庫(kù)110中的數(shù)據(jù)的例程。DBMS 120也包括至少一個(gè)用于記錄所有對(duì)由DBMS 120管理的對(duì)象做出修改的例程。記錄功能可以利用體現(xiàn)為數(shù)據(jù)對(duì)象124和索引對(duì)象126的日志數(shù)據(jù)庫(kù)122。除了記錄更改的例程,DBMS 120還包括用于維護(hù)存儲(chǔ)在數(shù)據(jù)對(duì)象112和索引114以及116中數(shù)據(jù)的完整性的實(shí)用程序。一旦數(shù)據(jù)庫(kù)110中的文件或?qū)ο蟊黄骗h(huán),則可以使用某些實(shí)用程序來(lái)重建文件或?qū)ο?。也可以使用其它?shí)用程序,具體為重組實(shí)用程序來(lái)重新整理存儲(chǔ)在數(shù)據(jù)庫(kù)110中的數(shù)據(jù),以便更有效地訪問(wèn)??梢栽跀?shù)據(jù)對(duì)象112、索引114、索引116及其任何組合上運(yùn)行重組實(shí)用程序。
現(xiàn)在參考圖2,描述了常規(guī)DBMS日志例程每次執(zhí)行數(shù)據(jù)或索引的添加、刪除或修改的步驟。在步驟210,在日志文件中創(chuàng)建日志記錄。日志文件包含由DBMS對(duì)數(shù)據(jù)和/或索引對(duì)象做出的變更。日志記錄識(shí)別受影響的數(shù)據(jù)或索引對(duì)象,識(shí)別受影響的文件的記錄,并且描述活動(dòng)的類(lèi)型,該活動(dòng)導(dǎo)致對(duì)記錄的變更。在步驟212,調(diào)用日志退出例程。在寫(xiě)入日志記錄之前調(diào)用該日志退出例程,然后日志記錄的地址被傳送作為調(diào)用的部分。在步驟214,日志記錄實(shí)際上被寫(xiě)入日志文件。
現(xiàn)在參考圖3A和3B,描述執(zhí)行常規(guī)重組實(shí)用程序以便更有效地存儲(chǔ)數(shù)據(jù)的步驟的方框圖。該步驟集中用參考符號(hào)300來(lái)表示。雖然常規(guī)重組實(shí)用程序可以在數(shù)據(jù)和索引對(duì)象上操作,但是圖2、3A和3B是根據(jù)重組數(shù)據(jù)對(duì)象來(lái)描述。當(dāng)然,當(dāng)重組一個(gè)索引時(shí),也執(zhí)行類(lèi)似的步驟。
重組實(shí)用程序300在兩個(gè)階段上運(yùn)行。在第一階段期間,如圖3A所示,當(dāng)實(shí)用程序出現(xiàn)在重組的開(kāi)始時(shí),它單獨(dú)地從數(shù)據(jù)對(duì)象復(fù)制每個(gè)記錄。在第二階段期間,如圖3B所示,當(dāng)處理第一階段時(shí),對(duì)于數(shù)據(jù)對(duì)象重組實(shí)用程序解釋任何變更。這些變更可以由用戶(hù)、在線應(yīng)用程序或批應(yīng)用程序來(lái)請(qǐng)求,這些程序在處理重組的第一階段的同時(shí)需要訪問(wèn)數(shù)據(jù)對(duì)象。
現(xiàn)在參考圖3A,來(lái)描述常規(guī)重組實(shí)用程序的第一階段的步驟。在步驟310,重組實(shí)用程序根據(jù)將被重組的實(shí)數(shù)據(jù)對(duì)象的格式來(lái)創(chuàng)建一個(gè)空“映像”數(shù)據(jù)對(duì)象。在步驟312,讀取實(shí)數(shù)據(jù)對(duì)象的每個(gè)記錄。如判定塊314所示,如果在步驟312嘗試從實(shí)數(shù)據(jù)對(duì)象讀取記錄導(dǎo)致文件結(jié)束條件,則重組實(shí)用程序開(kāi)始處理的第二階段。如果在步驟312成功讀取記錄,則在步驟316,將記錄寫(xiě)入映像數(shù)據(jù)對(duì)象。
現(xiàn)在參考圖3B,描述常規(guī)重組實(shí)用程序的第二階段的步驟。一旦進(jìn)入處理的第二階段,則在步驟318,重組實(shí)用程序在日志文件中搜索第一記錄,該第一記錄屬于將被重組的數(shù)據(jù)對(duì)象的記錄,在日志文件中,被記錄的變更發(fā)生正在調(diào)用重組實(shí)用程序之后。在后續(xù)的反復(fù)操作中,步驟318將在日志文件中搜索下一個(gè)記錄,該記錄屬于被重組的數(shù)據(jù)對(duì)象的記錄。在步驟320,從日志文件讀取記錄。
正如判定塊322所示,如果在步驟320嘗試從日志文件讀取記錄導(dǎo)致文件結(jié)束條件,則重組實(shí)用程序通過(guò)執(zhí)行步驟326來(lái)完成重組處理。如果在步驟320成功讀取日志文件記錄,則在步驟324,由日志文件記錄描述的變更被應(yīng)用到映像索引,并且處理直接返回到步驟318。在對(duì)數(shù)據(jù)對(duì)象的所有同時(shí)的變更被應(yīng)用之后,在步驟326,新近重組的映像數(shù)據(jù)對(duì)象被重新命名變成實(shí)數(shù)據(jù)對(duì)象,從而允許訪問(wèn)被重組的數(shù)據(jù)對(duì)象。
隨后,需要一種改進(jìn)的用于重組數(shù)據(jù)的方法和系統(tǒng),該方法和系統(tǒng)能夠使重組實(shí)用程序操作起來(lái)比常規(guī)重組實(shí)用程序更有效。具體地,需要一種用于減少與實(shí)現(xiàn)變更有關(guān)的處理的方法和系統(tǒng),該變更在重組時(shí)被形成到文件。
發(fā)明內(nèi)容
本發(fā)明描述了一種用于重組數(shù)據(jù)的方法。該方法包括讀取源文件的每個(gè)記錄的步驟和將每個(gè)記錄寫(xiě)入目標(biāo)文件的步驟。該方法也包括創(chuàng)建包含所選擇的日志記錄的日志文件的步驟。每個(gè)日志記錄與形成到目標(biāo)文件的變更相關(guān)。該方法進(jìn)一步包括讀取日志文件的每個(gè)日志記錄的步驟和處理日志文件的每個(gè)記錄以對(duì)目標(biāo)文件實(shí)現(xiàn)相關(guān)的變更的步驟。該方法還進(jìn)一步包括用目標(biāo)文件代替源文件的步驟。
也描述了一種由數(shù)據(jù)庫(kù)管理系統(tǒng)記錄變更的方法。該方法包括識(shí)別將被記錄的變更的步驟和根據(jù)所述變更來(lái)創(chuàng)建日志記錄的步驟。該方法也包括確定所述變更是否影響重組處理的步驟。如果所述變更影響重組處理,則將日志記錄存儲(chǔ)在第一日志文件中。第一日志文件僅記錄所選擇的變更。該方法還包括將日志記錄存儲(chǔ)在第二日志文件中的步驟。第二日志文件記錄所有的變更。
也描述了一種用于重組數(shù)據(jù)的第一設(shè)備。該設(shè)備包括用于讀取源文件的每個(gè)記錄的裝置和用于將每個(gè)記錄寫(xiě)入目標(biāo)文件的裝置。該設(shè)備也包括用于創(chuàng)建包含所選擇的日志記錄的日志文件的裝置。每個(gè)日志記錄與形成到目標(biāo)文件的變更相關(guān)。該設(shè)備還包括用于讀取日志文件的每個(gè)日志記錄的裝置和用于處理日志文件的每個(gè)記錄以對(duì)目標(biāo)文件實(shí)現(xiàn)相關(guān)的變更的裝置。該設(shè)備還包括用目標(biāo)文件代替源文件的裝置。
描述了用于重組數(shù)據(jù)的第二設(shè)備。第二設(shè)備包括處理器和連接到處理器的存儲(chǔ)器。該存儲(chǔ)器存儲(chǔ)用于控制處理器的操作的程序,以便執(zhí)行用于重組數(shù)據(jù)的所述方法的步驟。
也描述了制造商的產(chǎn)品。該制造商的產(chǎn)品是一種用處理指令編碼的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),用于實(shí)現(xiàn)重組數(shù)據(jù)的方法。
結(jié)合附圖,根據(jù)優(yōu)選例的下列描述,本公開(kāi)的方法和系統(tǒng)的目的、特征及優(yōu)點(diǎn)將會(huì)變得更加明顯。
為了更完整地理解本發(fā)明所公開(kāi)的方法和系統(tǒng)及其優(yōu)點(diǎn),現(xiàn)在結(jié)合附圖來(lái)參考下列描述,附圖中相同的參考編號(hào)表示相同的特征,其中圖1是說(shuō)明典型DBMS環(huán)境的示意性方框圖;圖2是說(shuō)明由常規(guī)DBMS日志例程采用的主要步驟的功能流程圖;圖3A-3B是說(shuō)明由常規(guī)重組實(shí)用程序采用的主要步驟的功能流程圖;圖4是說(shuō)明所描述的方法和系統(tǒng)的實(shí)施例的環(huán)境的示意性方框圖;圖5A-5B是說(shuō)根據(jù)所描述的重組方法的重組實(shí)用程序的實(shí)施例的主要步驟的功能流程圖;以及圖6是說(shuō)明根據(jù)所描述的重組方法的DBMS日志例程的實(shí)施例的主要步驟的功能流程圖。
具體實(shí)施例方式
所公開(kāi)的用于重組數(shù)據(jù)的方法最好在諸如圖4所示的環(huán)境下操作。如圖所示,環(huán)境包括數(shù)據(jù)庫(kù)410,包括至少一個(gè)數(shù)據(jù)對(duì)象412以及與數(shù)據(jù)對(duì)象412相關(guān)的一個(gè)或多個(gè)索引414和416用來(lái)輔助訪問(wèn)存儲(chǔ)在其中的數(shù)據(jù)。當(dāng)然,索引414和416是可選的,數(shù)據(jù)對(duì)象412不要求具有任何索引。
由數(shù)據(jù)庫(kù)管理系統(tǒng)(“DBMS”)420提供對(duì)數(shù)據(jù)庫(kù)410的訪問(wèn)。DBMS 420使用戶(hù)430能夠訪問(wèn)數(shù)據(jù)庫(kù)410。DBMS 420也使用戶(hù)450能夠通過(guò)應(yīng)用440間接訪問(wèn)數(shù)據(jù)庫(kù)410。DBMS 420包括用于讀取、增加、刪除和變更存儲(chǔ)于數(shù)據(jù)庫(kù)410中的數(shù)據(jù)的例程。
DBMS 420的記錄例程在體現(xiàn)為數(shù)據(jù)對(duì)象424和索引對(duì)象426的日志數(shù)據(jù)庫(kù)422中,記錄由DBMS 420管理的對(duì)所有對(duì)象做出的變更。此外用于記錄變更的例程,DBMS 420還包括用于維護(hù)存儲(chǔ)于數(shù)據(jù)對(duì)象412和索引414以及416中的數(shù)據(jù)的完整性的實(shí)用程序。在數(shù)據(jù)庫(kù)410內(nèi)的文件或?qū)ο蟊黄茐牡那闆r中,可以使用某些實(shí)用程序來(lái)對(duì)其重建。對(duì)于更多有效的訪問(wèn),其它實(shí)用程序,尤其是重組實(shí)用程序可被用來(lái)重新安排存儲(chǔ)于數(shù)據(jù)庫(kù)410中的數(shù)據(jù)。重組實(shí)用程序可以在數(shù)據(jù)對(duì)象412、索引414、索引416及其任意組合上操作。重組實(shí)用程序利用包括日志數(shù)據(jù)對(duì)象428和日志索引對(duì)象429的日志數(shù)據(jù)庫(kù)427。日志數(shù)據(jù)庫(kù)427存儲(chǔ)日志數(shù)據(jù)庫(kù)422中記錄的變更的子集。
現(xiàn)在參考圖5A和5B,其中描述了根據(jù)本發(fā)明的一個(gè)重組實(shí)用程序的實(shí)施例的步驟方框圖。步驟集中用參考符號(hào)500來(lái)表示。雖然所公開(kāi)的重組實(shí)用程序可以在數(shù)據(jù)和索引對(duì)象上操作,但是圖5A、5B和6是根據(jù)重組數(shù)據(jù)對(duì)象來(lái)描述。當(dāng)然,當(dāng)重組一個(gè)索引時(shí),也執(zhí)行類(lèi)似的步驟,并且該類(lèi)似的步驟被認(rèn)為在所描述的方法和系統(tǒng)的范圍之內(nèi)。
改進(jìn)的重組實(shí)用程序500在兩個(gè)階段操作。在第一階段期間,如圖5A所示,改進(jìn)的重組實(shí)用程序建立將被DBSM日志例程使用的程序調(diào)用,并且當(dāng)數(shù)據(jù)對(duì)象出現(xiàn)在程序的開(kāi)始時(shí),從數(shù)據(jù)對(duì)象單獨(dú)地復(fù)制每個(gè)記錄。在第二階段期間,如圖5B所示,改進(jìn)的重組實(shí)用程序利用復(fù)制的日志記錄的子集來(lái)解決在第一階段期間形成到數(shù)據(jù)對(duì)象的變更。
現(xiàn)在參考圖5A,來(lái)描述改進(jìn)的重組實(shí)用程序的第一階段的步驟。在步驟510,改進(jìn)的重組實(shí)用程序根據(jù)將被重組的實(shí)數(shù)據(jù)對(duì)象的格式來(lái)創(chuàng)建一個(gè)空映象數(shù)據(jù)對(duì)象。在步驟512,改進(jìn)的重組實(shí)用程序建立由DBMS日志例程使用的程序調(diào)用,參考如圖6被詳細(xì)描述。所建立的程序調(diào)用檢查日志記錄,并且形成與被重組對(duì)象變更相關(guān)的日志記錄的副本。這些被選擇的日志記錄可被存儲(chǔ)到日志文件,但是最好存儲(chǔ)在存儲(chǔ)器中以提高重組實(shí)用程序的效率。結(jié)果在存儲(chǔ)器利用中達(dá)到閾值,日志記錄可以被存儲(chǔ)在DASD中。因此,存儲(chǔ)器和復(fù)制的日志文件將僅包括將被重組實(shí)用程序處理的日志記錄,因此在第二階段處理則更有效率。
在步驟514,讀取實(shí)數(shù)據(jù)對(duì)象的每個(gè)記錄。如由判定塊516所示,如果在步驟514企圖從實(shí)數(shù)據(jù)對(duì)象讀取記錄導(dǎo)致文件結(jié)束條件,則改進(jìn)的重組實(shí)用程序開(kāi)始處理的第二階段。如果在步驟514成功讀取記錄,則在步驟518,將記錄寫(xiě)入映像數(shù)據(jù)對(duì)象。
現(xiàn)在參考圖5B,來(lái)描述改進(jìn)的重組實(shí)用程序的第二階段。一旦進(jìn)入處理的第二階段,則在步驟520,重組實(shí)用程序訪問(wèn)存儲(chǔ)器和/或復(fù)制的日志文件中的區(qū)域,該復(fù)制的日志文件包含了有關(guān)處理的第二階段的記錄,并且讀取第一日志記錄。在后續(xù)的反復(fù)操作中,步驟520將讀取日志文件中的下一個(gè)記錄。
在判定塊522,改進(jìn)的重組實(shí)用程序確定步驟520是否導(dǎo)致文件結(jié)束條件。如果是,則在步驟526,重組實(shí)用程序繼續(xù)處理。如果在步驟520成功讀取日志文件記錄,則在步驟524,將由日志文件記錄描述的變更應(yīng)用到映象索引,并且處理直接返回到步驟520。在對(duì)數(shù)據(jù)對(duì)象的所有記錄的變更被應(yīng)用之后,在步驟526,取消程序調(diào)用,并且在步驟528,新近重組的映象數(shù)據(jù)對(duì)象被重新命名變成實(shí)數(shù)據(jù)對(duì)象,從而允許訪問(wèn)被重組的數(shù)據(jù)對(duì)象。
現(xiàn)在參考圖6,描述了根據(jù)所述方法和系統(tǒng)的每次改進(jìn)的DBMS日志例程執(zhí)行數(shù)據(jù)或索引項(xiàng)的添加、刪除或修改的步驟。在步驟610,在包含由DBMS形成對(duì)數(shù)據(jù)和/或索引對(duì)象的變更的日志文件中創(chuàng)建日志記錄。在步驟612,調(diào)用日志退出例程,并且日志記錄的地址作為調(diào)用的部分被傳遞。如判定塊614所示,如果已經(jīng)由改進(jìn)的重組實(shí)用程序建立了程序調(diào)用,則象先前圖5A的步驟512所述,日志例程處理步驟616。
在步驟616,如果日志記錄表示對(duì)當(dāng)前正被重組的文件的變更,則日志記錄被復(fù)制成副本日志文件,以便在重組的第二階段使用。如果沒(méi)有建立程序調(diào)用,或一旦完成步驟616的處理,則在步驟618,日志記錄被寫(xiě)入常規(guī)日志文件。
根據(jù)上面的描述,本領(lǐng)域的技術(shù)人員將領(lǐng)會(huì)到所公開(kāi)方法和系統(tǒng)的改進(jìn)、變化和修改。本領(lǐng)域內(nèi)的這些改進(jìn)、變化和修改往往包含在所附權(quán)利要求中。
因此,應(yīng)當(dāng)理解本公開(kāi)的附圖和說(shuō)明是為了方便理解所公開(kāi)的方法和系統(tǒng),而不能被曲解為對(duì)本發(fā)明的范圍的限制。應(yīng)當(dāng)理解,在不背離單獨(dú)由所附權(quán)利要求定義的所公開(kāi)方法和系統(tǒng)的精神和范圍的情況下,可以做出各種各樣的改變、替換和修改。
權(quán)利要求
1.一種用于重組數(shù)據(jù)的方法,包括步驟讀取源文件的每個(gè)記錄;將每個(gè)記錄寫(xiě)入目標(biāo)文件;創(chuàng)建包括所選擇的日志記錄的日志文件,每個(gè)與變更相關(guān)的日志記錄將形成到目標(biāo)文件;讀取日志文件的每個(gè)日志記錄;處理日志文件的每個(gè)記錄,以實(shí)現(xiàn)對(duì)目標(biāo)文件的相關(guān)變更;并且用目標(biāo)文件替換源文件。
2.根據(jù)權(quán)利要求1所述的方法,其中所述源文件是索引文件。
3.根據(jù)權(quán)利要求1所述的方法,其中所述源文件是數(shù)據(jù)文件。
4.根據(jù)權(quán)利要求1所述的方法,其中所述創(chuàng)建日志文件的步驟是根據(jù)DBMS日志例程的指令來(lái)執(zhí)行的。
5.根據(jù)權(quán)利要求4所述的方法,其中所述日志文件包括由DBMS日志例程處理的所有記錄的子集。
6.根據(jù)權(quán)利要求4所述的方法,其中所述日志文件記錄是根據(jù)由重組實(shí)用建立的程序調(diào)用來(lái)選擇的。
7.根據(jù)權(quán)利要求6所述的方法,其中所述程序調(diào)用在所述重組實(shí)用程序的中止之前被刪除。
8.一種由數(shù)據(jù)庫(kù)管理系統(tǒng)記錄變更的方法,包括步驟識(shí)別將被記錄的變更;根據(jù)所述變更來(lái)創(chuàng)建日志記錄;確定所述變更是否影響重組處理;如果所述變更影響重組處理,則將日志記錄存儲(chǔ)在記錄已選擇變更的第一日志文件中;并且將日志記錄存儲(chǔ)在記錄所有變更的第二日志文件中。
9.根據(jù)權(quán)利要求8所述的方法,其中所述第一日志文件駐留在虛擬存儲(chǔ)器中。
10.根據(jù)權(quán)利要求8所述的方法,其中所述第一日志文件駐留在數(shù)據(jù)空間中。
11.根據(jù)權(quán)利要求8所述的方法,其中所述第一日志文件駐留在高性能數(shù)據(jù)空間中。
12.根據(jù)權(quán)利要求8所述的方法,其中所述第一日志文件駐留在DASD中。
13.一種用于重組數(shù)據(jù)的設(shè)備,包括用于讀取源文件的每個(gè)記錄的裝置;用于將每個(gè)記錄寫(xiě)入目標(biāo)文件的裝置;用于創(chuàng)建包含所選擇的日志記錄的日志文件的裝置,每個(gè)與變更相關(guān)的日志記錄形成到目標(biāo)文件;用于讀取日志文件的每個(gè)日志記錄的裝置;用于處理日志文件的每個(gè)記錄以實(shí)現(xiàn)對(duì)目標(biāo)文件的相關(guān)變更的裝置;以及用目標(biāo)文件代替源文件的裝置。
14.根據(jù)權(quán)利要求13所述的設(shè)備,其中所述源文件是索引文件。
15.根據(jù)權(quán)利要求13所述的設(shè)備,其中所述源文件是數(shù)據(jù)文件。
16.根據(jù)權(quán)利要求13所述的設(shè)備,其中所述日志文件是根據(jù)DBMS日志例程的指令創(chuàng)建的。
17.根據(jù)權(quán)利要求16所述的設(shè)備,其中所述日志文件包括由DBMS日志例程處理的所有記錄的子集。
18.根據(jù)權(quán)利要求16所述的設(shè)備,其中所述日志文件是根據(jù)由重組實(shí)用程序建立的程序調(diào)用來(lái)選擇的。
19.根據(jù)權(quán)利要求18所述的設(shè)備,其中所述程序調(diào)用在重組實(shí)用程序中止之前被刪除。
20.一種用于重組數(shù)據(jù)的設(shè)備,包括處理器;連接到所述處理器的存儲(chǔ)器,用于存儲(chǔ)程序以控制所述處理器的操作;由存儲(chǔ)器中的程序操作的所述處理器來(lái)讀取源文件的每個(gè)記錄;將每個(gè)記錄寫(xiě)入目標(biāo)文件;創(chuàng)建包含所選擇日志記錄的日志文件,每個(gè)與變更相關(guān)的日志記錄將形成到目標(biāo)文件;讀取日志文件的每個(gè)日志記錄;處理日志文件的每個(gè)記錄以實(shí)現(xiàn)對(duì)目標(biāo)文件的相關(guān)變更;并且用目標(biāo)文件代替源文件。
21.根據(jù)權(quán)利要求20所述的設(shè)備,其中所述源文件是索引文件。
22.根據(jù)權(quán)利要求20所述的設(shè)備,其中所述源文件是數(shù)據(jù)文件。
23.根據(jù)權(quán)利要求20所述的設(shè)備,其中所述處理器進(jìn)一步用存儲(chǔ)器中的程序操作以根據(jù)DBMS日志例程的指令來(lái)創(chuàng)建日志文件。
24.根據(jù)權(quán)利要求23所述的設(shè)備,其中所述日志文件包括由DBMS日志例程處理的所有記錄的子集。
25.根據(jù)權(quán)利要求20所述的設(shè)備,其中所述處理器進(jìn)一步由存儲(chǔ)器中的程序操作以根據(jù)由重組實(shí)用程序建立的程序調(diào)用來(lái)選擇日志文件。
26.根據(jù)權(quán)利要求23所述的設(shè)備,其中所述處理器進(jìn)一步由存儲(chǔ)器中的程序操作,以在重組實(shí)用程序中止之前刪除程序調(diào)用。
27.一種利用實(shí)現(xiàn)重組數(shù)據(jù)方法的處理指令編碼的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述處理指令用于指導(dǎo)計(jì)算機(jī)來(lái)執(zhí)行以下步驟讀取源文件的每個(gè)記錄;將每個(gè)記錄寫(xiě)入目標(biāo)文件;創(chuàng)建包含所選擇日志記錄的日志文件,每個(gè)與變更相關(guān)的日志記錄將形成到目標(biāo)文件;讀取日志文件的每個(gè)日志記錄;處理日志文件的每個(gè)記錄以實(shí)現(xiàn)對(duì)目標(biāo)文件的相關(guān)變更;并且用目標(biāo)文件代替源文件。
全文摘要
描述了一種用于重組數(shù)據(jù)的方法。該方法包括讀取源文件的每個(gè)記錄的步驟和將每個(gè)記錄寫(xiě)入目標(biāo)文件的步驟。該方法也包括創(chuàng)建包括所選擇的日志記錄的日志文件的步驟。每個(gè)日志記錄與將形成目標(biāo)文件的變更相關(guān)。該方法進(jìn)一步包括讀取日志文件的每個(gè)日志記錄的步驟和處理日志文件的每個(gè)日志的步驟,從而對(duì)目標(biāo)文件實(shí)現(xiàn)相關(guān)的變更。該方法還包括用目標(biāo)文件替換源文件的步驟。為了實(shí)現(xiàn)該方法的步驟也公開(kāi)了一種裝置和制造產(chǎn)品。
文檔編號(hào)G06F17/30GK1555527SQ02809720
公開(kāi)日2004年12月15日 申請(qǐng)日期2002年4月9日 優(yōu)先權(quán)日2001年4月9日
發(fā)明者小阿曼多·B·艾西普, 小阿曼多 B 艾西普 申請(qǐng)人:電腦聯(lián)合想象公司