亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

使用有效文件更新處理和恢復(fù)處理的事務(wù)處理系統(tǒng)的制作方法

文檔序號:6336850閱讀:177來源:國知局

專利名稱::使用有效文件更新處理和恢復(fù)處理的事務(wù)處理系統(tǒng)的制作方法
技術(shù)領(lǐng)域
:本發(fā)明涉及一個事務(wù)處理系統(tǒng)和一個事務(wù)處理方法,其中多個事務(wù)可以同時訪問相同的文件。一般,在事務(wù)處理系統(tǒng)中,處理的執(zhí)行是以一個稱作事務(wù)的處理流為單位來進(jìn)行管理的。例如,一個必要的處理被執(zhí)行,并且一個處理結(jié)果被返回,以對從一個終端裝置或者一個網(wǎng)絡(luò)所接收的一個處理請求作出響應(yīng)。這樣一個用于執(zhí)行被激活的一個處理的一個流有時被稱作一個事務(wù)。在每個獨立的事務(wù)的一個過程中,這個獨立的事務(wù)更新將被一個或者多個文件(或者數(shù)據(jù)庫)所記錄和管理的數(shù)據(jù)。這個事務(wù)處理系統(tǒng)確保一個或者多個數(shù)據(jù)的這種更新原子邏輯地被提交或者被中止。即,提交使所有更新同時有效,而中止則放棄所有的更新,并且將這個文件的狀態(tài)設(shè)置到執(zhí)行這個事務(wù)以前的狀態(tài)。另外,這個事務(wù)系統(tǒng)也確保一旦這個事務(wù)被提交,這個事務(wù)所進(jìn)行的更新就不會被取消。有很多方法可以實現(xiàn)這樣一個眾所周知的事務(wù)處理系統(tǒng),如可以在MorganKaufmannPulishers公司出版的、J.Gray和A.Reuter所著的“事務(wù)處理原理和技術(shù)”中所找到的。在這個事務(wù)處理系統(tǒng)中很難處理的一個情形是多個事務(wù)同時對同一個文件進(jìn)行數(shù)據(jù)更新。如果一次僅允許一個事務(wù)對一個文件進(jìn)行更新,則不會產(chǎn)生任何問題。但是,為了改善同時并行處理多個事務(wù)的性能,使得能夠同時更新由同一個文件的不同部分記錄和管理的數(shù)據(jù)是必要的。在使用數(shù)據(jù)庫而不是文件的情形下,也有這個問題。在下面,將描述使用文件的情形,但是使用數(shù)據(jù)庫的情形是類似的。為了實現(xiàn)并行執(zhí)行更新處理的一個事務(wù)處理系統(tǒng),傳統(tǒng)技術(shù)已經(jīng)很廣泛地使用了一個稱作WAL(寫前記日志)的方法。在這個方法中,當(dāng)多個事務(wù)更新被讀取到一個存儲器上的一個緩沖器上的一個文件時,日志文件記錄下哪一個文件的哪一個部分已經(jīng)被哪一個事務(wù)所重寫,并且是如何重寫的。另外,控制一個時序,以使對緩沖器的更新將不會被寫回到一個存儲器媒質(zhì),例如硬盤上的原始文件,直到可以確認(rèn)記錄在日志文件中的更新信息被寫入到一個穩(wěn)定的存儲器裝置(一個硬盤,例如),以使它不會被丟失。在WAL方法中,所有更新的歷史記錄被記錄在日志文件中,以使當(dāng)出現(xiàn)了一個系統(tǒng)故障時,可以使用日志文件來將這些文件恢復(fù)到它們的正確狀態(tài)。即,當(dāng)在一個故障出現(xiàn)后,重新激活這個系統(tǒng),這個事務(wù)處理系統(tǒng)參考這個日志文件并且正確地反映仍然沒有反映在這個文件中的、被提交的事務(wù)所進(jìn)行的一個更新。另外,如果有已經(jīng)被中止的事務(wù)所進(jìn)行的更新寫入到這個文件中,就執(zhí)行用于取消這個更新的一個處理。通過這樣一個恢復(fù)處理,就可以確保事務(wù)的原子性,耐用性,隔離性和一致性,即使當(dāng)出現(xiàn)了一個故障時。在根據(jù)傳統(tǒng)的WAL方法的事務(wù)處理系統(tǒng)中,當(dāng)這個事務(wù)更新一個文件時,這個更新內(nèi)容被首先寫入到日志文件中,然后,再更新文件本身,所以,為了管理被多個事務(wù)所共享的文件就需要一個復(fù)雜的事務(wù)過程。另外,對一個更新,需要兩次寫入過程,一次是用于寫入到日志文件中,而一次是用于寫入到文件本身。另外,一個恢復(fù)處理也需要一個復(fù)雜的處理過程來使用日志文件恢復(fù)文件的一致狀態(tài)。另外,在發(fā)生一個故障后,在重新激活的時刻,必須完全執(zhí)行恢復(fù)處理,所以重新激活需要的時間將非常長。另一個實現(xiàn)事務(wù)處理系統(tǒng)的方法是映象頁面技術(shù)。在這個方法中,在更新一個文件的情形下,在硬盤上提供了具有更新被寫入到其中以前的一個文件的一個頁面和具有更新被寫入到其中以后的一個文件的一個頁面,并且在提交這個事務(wù)的時刻,切換文件管理數(shù)據(jù)。因為這個原因,就可以確保正確的文件總是存在于硬盤上。在映象頁面的方法中,處于正確狀態(tài)的這個文件總是存在于硬盤上,所以在發(fā)生了一個故障時而進(jìn)行的恢復(fù)處理的時間開銷是很小的。但是,映象頁面方法使用了分開切換記錄兩個文件的頁面的一個基本操作,一個是在事務(wù)提交以前的,一個是在事務(wù)提交以后的,所以在多個事務(wù)希望更新一個和相同的文件時,就有必要使這些事務(wù)進(jìn)行按順序工作,并且依次進(jìn)行更新。為了使多個事務(wù)可以并行地對一個和相同文件中的不同部分進(jìn)行更新,就如WAL方法中的一樣,僅使用映象頁面方法是不夠的,有必要使用某些方法,例如使用與WAL方法中類似的記錄方法來進(jìn)行的數(shù)據(jù)管理。因為這個原因,即使可以輕易地實現(xiàn)映象頁面方法,另外實現(xiàn)一個復(fù)雜的數(shù)據(jù)管理也是必要的。下面,將簡單地描述一個傳統(tǒng)的文件系統(tǒng)。圖43顯示了一個傳統(tǒng)的事務(wù)處理系統(tǒng)。在這個傳統(tǒng)的事務(wù)處理系統(tǒng)中,用于處理事務(wù)的應(yīng)用程序101通過一個數(shù)據(jù)庫管理系統(tǒng)102執(zhí)行數(shù)據(jù)操作。一個文件系統(tǒng)103執(zhí)行被記錄在一個穩(wěn)定的存儲器裝置,例如硬盤104中的文件的操作和管理。數(shù)據(jù)庫管理系統(tǒng)102通過使用文件系統(tǒng)103所提供的文件管理來管理應(yīng)用程序101所需要的數(shù)據(jù)。這個數(shù)據(jù)庫管理系統(tǒng)102在操作期間,也對被多個應(yīng)用程序102所共享的數(shù)據(jù)進(jìn)行并行控制。所以,本發(fā)明的一個目的是提供一個事務(wù)處理方法和一個事務(wù)處理系統(tǒng),這個事務(wù)處理系統(tǒng)能夠輕易地和有效地實現(xiàn)多個并行工作的事務(wù)所進(jìn)行的文件更新處理,并且在發(fā)生故障的時候輕易地和有效地實現(xiàn)恢復(fù)處理。根據(jù)本發(fā)明的一個方面,提供了一個事務(wù)處理方法,這個事務(wù)處理方法包括步驟執(zhí)行對被讀取到一個緩沖器區(qū)域的一個文件進(jìn)行更新處理的多個事務(wù);并且在多個事務(wù)中的一個事務(wù)被提交時,將所述一個文件寫入到一個穩(wěn)定存儲器裝置中,所述一個文件包括被所述一個事務(wù)所進(jìn)行的提交更新的內(nèi)容和其它未提交事務(wù)所進(jìn)行的非提交更新內(nèi)容,和用于取消非提交更新的信息。根據(jù)本發(fā)明的另一個方面,提供了一個事務(wù)處理系統(tǒng),這個事務(wù)處理系統(tǒng)包括一個讀取單元,被構(gòu)造成將作為一個事務(wù)處理目標(biāo)的一個文件從一個穩(wěn)定的存儲器裝置讀取到一個緩沖器區(qū)域;一個更新單元,被構(gòu)造成通過將多個事務(wù)中每一個事務(wù)對所述一個文件進(jìn)行的更新內(nèi)容和取消更新的信息寫入到在緩沖器區(qū)域上的所述一個文件,來更新所述一個文件;和一個寫入單元,被構(gòu)造成在所述多個事務(wù)中的一個事務(wù)進(jìn)行提交的時刻,將所述一個文件寫入到穩(wěn)定的存儲器裝置,所述一個文件包括被所述一個事務(wù)所進(jìn)行的提交更新的內(nèi)容和其它未提交事務(wù)所進(jìn)行的非提交更新內(nèi)容,和用于取消非提交更新的信息。根據(jù)本發(fā)明的另一個方面,提供了在其中具有計算機(jī)可以閱讀的程序代碼的一個計算機(jī)可使用媒質(zhì),這個計算機(jī)可以閱讀的程序代碼促使一個計算機(jī)來用作一個事務(wù)處理系統(tǒng),這個計算機(jī)可閱讀程序的代碼包括一第一計算機(jī)可以閱讀的程序代碼,用于促使所述計算機(jī)將作為一個事務(wù)處理目標(biāo)的一個文件從一個穩(wěn)定的存儲器裝置讀取到一個緩沖器區(qū)域;一第二計算機(jī)可以閱讀的程序代碼,用于促使所述計算機(jī)通過將多個事務(wù)中每一個事務(wù)對所述一個文件進(jìn)行的更新內(nèi)容和取消更新的信息寫入到在緩沖器區(qū)域上的所述一個文件,來更新所述一個文件;和一第三計算機(jī)可以閱讀的程序代碼,用于促使所述計算機(jī)在所述多個事務(wù)中的一個事務(wù)進(jìn)行提交的時刻,將所述一個文件寫入到穩(wěn)定的存儲器裝置,所述一個文件包括被所述一個事務(wù)所進(jìn)行的提交更新的內(nèi)容和其它未提交事務(wù)所進(jìn)行的非提交更新內(nèi)容,和用于取消非提交更新的信息。通過聯(lián)系附圖,從下面的描述中,就可以更清楚本發(fā)明的其它特征和優(yōu)點。圖1是顯示根據(jù)本發(fā)明的一個實施方式,一個事務(wù)處理系統(tǒng)的一個示例性結(jié)構(gòu)的一個框圖。圖2是顯示在圖1的事務(wù)處理系統(tǒng)中所使用的一個更新管理表的一個示例的一個圖。圖3是顯示在圖1的事務(wù)處理系統(tǒng)中所使用的一個事務(wù)管理表的一個示例的一個圖。圖4是顯示可以在圖1的事務(wù)處理系統(tǒng)中使用的一個數(shù)據(jù)文件的一個示例的一個圖。圖5是顯示在更新(1,ICECREAM,¥450)處理后,圖4的數(shù)據(jù)文件的一個狀態(tài)的一個圖。圖6是顯示在更新(3,APPLE,¥500)處理后,圖5的數(shù)據(jù)文件的一個狀態(tài)的一個圖。圖7是顯示在去除(2,BISCUIT)處理后,圖6的數(shù)據(jù)文件的一個狀態(tài)的一個圖。圖8是顯示在更新(2,CHOCOLATE,¥300)處理后,圖7的數(shù)據(jù)文件的一個狀態(tài)的一個圖。圖9是顯示在刪除(1,GRAPE)處理后,圖8的數(shù)據(jù)文件的一個狀態(tài)的一個圖。圖10是顯示在更新(2,KIWIFRUIT,¥300)處理后,圖9的數(shù)據(jù)文件的一個狀態(tài)的一個圖。圖11是顯示在提交(3)處理后,圖10的數(shù)據(jù)文件的一個狀態(tài)的一個圖。圖12是顯示在提交(1)處理后,圖11的數(shù)據(jù)文件的一個狀態(tài)的一個圖。圖13是顯示在中止(2)處理后,圖12的數(shù)據(jù)文件的一個狀態(tài)的一個圖。圖14是顯示用于在圖1的事務(wù)處理系統(tǒng)中進(jìn)行讀取(txid,關(guān)鍵字)的一個示例性處理過程的一個流圖。圖15是顯示在讀取(4)處理后,圖4的數(shù)據(jù)文件的一個狀態(tài)的一個圖。圖16是顯示用于在圖1的事務(wù)處理系統(tǒng)中進(jìn)行更新(txid,關(guān)鍵字,值)的一個示例性處理過程的一個流圖。圖17是顯示用于在圖1的事務(wù)處理系統(tǒng)中進(jìn)行刪除(txid,關(guān)鍵字)的一個示例性處理過程的一個流圖。圖18是顯示用于在圖1的事務(wù)處理系統(tǒng)中進(jìn)行提交(txid)的一個示例性處理過程的一個流圖。圖19是顯示用于在圖1的事務(wù)處理系統(tǒng)中進(jìn)行中止(txid)的一個示例性處理過程的一個流圖。圖20是顯示用于在圖1的事務(wù)處理系統(tǒng)中進(jìn)行恢復(fù)的一個示例性處理過程的一個流圖。圖21是顯示具有其狀態(tài)是被具有更新的信息的一個數(shù)據(jù)文件的一個示例的一個圖,這個數(shù)據(jù)文件可以被用于圖1的事務(wù)處理系統(tǒng)中。圖22是顯示使用一個二進(jìn)制樹結(jié)構(gòu)來實現(xiàn)快速查詢的一個數(shù)據(jù)文件的一個示例的一個圖,這個數(shù)據(jù)文件可以被用于圖1的事務(wù)處理系統(tǒng)中。圖23是顯示記錄一個信息集合的多個文件中一個文件的一個示例的一個圖,這個數(shù)據(jù)文件可以被用于根據(jù)本發(fā)明的事務(wù)處理系統(tǒng)中。圖24是顯示記錄一個信息集合的多個文件中另一個文件的一個示例的一個圖,這個數(shù)據(jù)文件可以被用于根據(jù)本發(fā)明的事務(wù)處理系統(tǒng)中。圖25是顯示記錄一個信息集合的多個文件中另一個文件的一個示例的一個圖,這個數(shù)據(jù)文件可以被用于根據(jù)本發(fā)明的事務(wù)處理系統(tǒng)中。圖26是顯示記錄一個信息集合的多個文件中另一個文件的一個示例的一個圖,這個數(shù)據(jù)文件可以被用于根據(jù)本發(fā)明的事務(wù)處理系統(tǒng)中。圖27是顯示根據(jù)本發(fā)明的一個實施方式,一個事務(wù)處理系統(tǒng)的另一個示例性結(jié)構(gòu)的一個框圖。圖28是顯示在圖27的事務(wù)處理系統(tǒng)中被使用的一個更新組表的一個示例的一個圖。圖29是顯示在被事務(wù)(1)和(2)更新后,圖25的數(shù)據(jù)文件的一個狀態(tài)的一個圖。圖30是顯示在被事務(wù)(1)和(2)更新后,圖26的數(shù)據(jù)文件的一個狀態(tài)的一個圖。圖31是顯示在事務(wù)(1)提交后,圖29的數(shù)據(jù)文件的一個狀態(tài)的一個圖。圖32是顯示在事務(wù)(1)提交后,圖30的數(shù)據(jù)文件的一個狀態(tài)的一個圖。圖33是顯示在事務(wù)(2)中止后,圖32的數(shù)據(jù)文件的一個狀態(tài)的一個圖。圖34是顯示在被事務(wù)(3)更新后,圖23,24,25,和26的數(shù)據(jù)文件的一部分的一個狀態(tài)的一個圖。圖35是顯示在被事務(wù)(3)更新后,圖23,24,25,和26的數(shù)據(jù)文件的另一部分的一個狀態(tài)的一個圖。圖36是顯示在被事務(wù)(3)更新后,圖23,24,25,和26的數(shù)據(jù)文件的另一部分的一個狀態(tài)的一個圖。圖37是顯示在事務(wù)(3)提交后,從圖34,35,和36的數(shù)據(jù)文件被寫回的一個數(shù)據(jù)文件的一個狀態(tài)的一個圖。圖38是顯示在事務(wù)(3)提交后,從圖34,35,和36的數(shù)據(jù)文件被寫回的其它數(shù)據(jù)文件的一個狀態(tài)的一個圖。圖39是顯示在圖1的事務(wù)處理系統(tǒng)中可以被使用的一個一般XML文檔的一個示例的一個圖。圖40是顯示在被事務(wù)(1)和(2)更新后,圖39的XML文檔的一個狀態(tài)的一個圖。圖41是顯示在事務(wù)(1)提交后,圖40的XML文檔的一個狀態(tài)的一個圖。圖42是顯示在被事務(wù)(2)提交后,圖41的XML文檔的一個狀態(tài)的一個圖。圖43是顯示一個傳統(tǒng)事務(wù)處理系統(tǒng)的一個示例的一個框圖。參考圖1到圖42,將詳細(xì)描述根據(jù)本發(fā)明的一個事務(wù)處理系統(tǒng)的一個實施方式。圖1顯示了根據(jù)本發(fā)明的一個實施方式,一個事務(wù)處理系統(tǒng)的一個示例性結(jié)構(gòu)。注意,在這個實施方式的下面描述中,一個硬盤將被用作一個穩(wěn)定的存儲器裝置,但是,當(dāng)然也可以使用其它任何合適的存儲器裝置作為穩(wěn)定的存儲器裝置。另外,在這個實施方式的下面描述中,應(yīng)用程序可以產(chǎn)生事務(wù),但是很明顯,在不是應(yīng)用程序的其它事物產(chǎn)生事務(wù)的情形也是類似的。在這個實施方式的事務(wù)處理系統(tǒng)中,如圖1所顯示的,在用于執(zhí)行事務(wù)的多個應(yīng)用程序2中進(jìn)行共享的文件操作通過一個共享的數(shù)據(jù)管理單元4被執(zhí)行,而非共享文件的操作通過從應(yīng)用程序2直接命令一個文件系統(tǒng)6來執(zhí)行。一個事務(wù)管理器8執(zhí)行將要被每一個應(yīng)用程序2所處理的事務(wù)的管理。這個應(yīng)用程序2獲得一個事務(wù)標(biāo)識符,這個事務(wù)標(biāo)識符是在開始處理這個事務(wù)的時刻,由事務(wù)管理器8所分配的。所以,對一個文件進(jìn)行更新的這個事務(wù)將通過出現(xiàn)這個事務(wù)標(biāo)識符來被告知,在一個處理事務(wù)的一個過程中向共享數(shù)據(jù)管理單元4或者文件系統(tǒng)6命令操作的情形下。當(dāng)應(yīng)用程序2告知事務(wù)管理器8已經(jīng)完成了事務(wù)處理時,事務(wù)管理器8命令共享數(shù)據(jù)管理單元4和文件系統(tǒng)6,或者提交寫入由事務(wù)標(biāo)識符標(biāo)識的事務(wù)所進(jìn)行的文件更新結(jié)果,或者通過丟棄更新結(jié)果來進(jìn)行中止。注意,也可能使用一個不需要事務(wù)管理器8的配置,其中應(yīng)用程序2本身產(chǎn)生與事務(wù)標(biāo)識符相應(yīng)的信息,并且命令進(jìn)行提交或者中止,但是在下面,將描述使用事務(wù)管理器8的情形。共享數(shù)據(jù)管理單元4實現(xiàn)了多個事務(wù)對同一個文件的不同部分進(jìn)行更新。這個共享數(shù)據(jù)管理單元4使用一個更新管理表41管理哪一個文件被哪一個事務(wù)(通過這個共享數(shù)據(jù)管理單元4)所更新。圖2顯示了更新管理表41的一個示例。更新管理表41記錄了一個文件名字和正在更新這個文件的一個事務(wù)標(biāo)識符列表之間的一個對應(yīng)關(guān)系。圖2顯示出,其文件名字為F0102的一個文件例如正在被3個分別具有事務(wù)標(biāo)識符“36”,“21”和“5”的事務(wù)更新。文件系統(tǒng)6是實現(xiàn)事務(wù)進(jìn)行文件操作的一個單元。這個文件系統(tǒng)6具有用于管理一個緩沖器區(qū)域62和一個事務(wù)管理表61的一個緩沖器管理單元(沒有顯示)。在讀取或者更新被記錄在一個硬盤10中的一個文件的情形下,這個文件被讀取到緩沖器區(qū)域62,然后在緩沖器區(qū)域62上被讀取或者更新。在產(chǎn)生一個新文件的情形下,首先在緩沖器區(qū)域62上產(chǎn)生一個文件。在緩沖器區(qū)域62上被更新或者被產(chǎn)生的一個文件在提交事務(wù)時被寫入到硬盤10中。事務(wù)管理表61管理哪一個事務(wù)正在更新哪一個文件。圖3顯示了事務(wù)管理表61的一個示例。事務(wù)管理表61記錄了事務(wù)標(biāo)識符和目前正在被這個事務(wù)所更新的一個文件列表之間的對應(yīng)關(guān)系。圖3顯示出,具有事務(wù)標(biāo)識符“3”的一個事務(wù)正在更新僅一個文件F9268,而具有事務(wù)標(biāo)識符“5”的一個事務(wù)目前正在更新兩個文件F0100和F9264,例如。事務(wù)管理表61中的最后一個表目正在管理不屬于任何事務(wù)的文件更新。在圖3所顯示的事務(wù)管理表61中,在最后一行的一個事務(wù)“NOTX”的表目與這個相應(yīng)。在這個示例中,顯示出,文件F0102,F(xiàn)2156,F(xiàn)3624,F(xiàn)5497和F7531正在被更新,而與任何事務(wù)均沒有關(guān)系,即不是作為一個特定事務(wù)的一部分被更新。如下面將要描述的,通過共享數(shù)據(jù)管理單元4被更新的文件將被更新而不屬于任何事務(wù),所以在這個表目中將記錄這些文件。注意,可以通過參考共享數(shù)據(jù)管理單元4的更新管理表41來發(fā)現(xiàn)正在更新記錄在這個表目中的文件的事務(wù)。下面,描述了使用采用一個XML文檔格式的信息作為數(shù)據(jù)的示例的示例情形,其中事務(wù)處理系統(tǒng)通過共享數(shù)據(jù)管理單元4更新其信息被以一個XML文檔格式記錄的文件。注意,在“可擴(kuò)展標(biāo)記語言(XML)1.0”,(W3C建議,1998年2月10日)中公開與XML相關(guān)的細(xì)節(jié)。在這個情形下,事務(wù)處理系統(tǒng)在XML文檔格式的文件中,記錄和管理由“關(guān)鍵字”和一個相應(yīng)的“值”所形成的一對的集合。這個文檔可以被用作一個一般的數(shù)據(jù)庫,其中一個值可以通過規(guī)定一個特定的關(guān)鍵字來進(jìn)行搜尋。圖4顯示了這樣一個文檔的一個示例。在這個示例性的XML文檔中,一個“關(guān)鍵字”被保留在用標(biāo)記<key>和</key>所括起來的一部分中,一個“值”被保留在用標(biāo)記<value>和</value>所括起來的一部分中,形成了用標(biāo)記<entry>和</entry>所括起來的、其中包括了一對“關(guān)鍵字”和“值”的一個表目,并且多個這樣的表目被最外面的標(biāo)記<KVtable>和</KVtable>所括起來。實際上,XML文檔也在其頂部具有從<?xmlversion="1.0"?>的一個開頭部分,但是這里省略了它。注意,在XML語言中,被一個開始的標(biāo)記,例如<key>,和一個相應(yīng)的結(jié)束標(biāo)記,例如</key>所括起來的一個部分被稱作一個部件。在圖4所顯示的XML文檔中,一個關(guān)鍵字“APPLE”具有一個相應(yīng)的值“¥400”,一個關(guān)鍵字“BISCUIT”具有一個相應(yīng)的值“¥250”,一個關(guān)鍵字“CHOCOLATE”具有一個相應(yīng)的值“¥200”,一個關(guān)鍵字“GRAPE”具有一個相應(yīng)的值“¥600”。這里,對這個XML文檔文件執(zhí)行事務(wù)的應(yīng)用程序2和事務(wù)管理器8可以執(zhí)行5個類型的操作,包括“讀取(txid,關(guān)鍵字)”,“更新(txid,關(guān)鍵字,值)”,“刪除(txid,關(guān)鍵字)”,“提交(txid)”和“中止(txid)”,這是通過共享數(shù)據(jù)管理單元執(zhí)行的。在這個實施方式中,讀取,更新和刪除將由應(yīng)用程序2來進(jìn)行命令,而提交和中止則由事務(wù)管理器8來進(jìn)行命令。注意,如前面已經(jīng)提到的,在不使用事務(wù)管理器8的情形下,也可以由應(yīng)用程序2來命令提交和中止。讀取(txid,關(guān)鍵字)操作中,一個事務(wù)標(biāo)識符為“txid”的事務(wù)讀取被“關(guān)鍵字”所規(guī)定的一個表目的值。更新(txid,關(guān)鍵字,值)操作中,一個事務(wù)標(biāo)識符為“txid”的事務(wù)將被“關(guān)鍵字”所規(guī)定的一個表目的一個值更新為被“值”所規(guī)定的一個值。當(dāng)不存在被“關(guān)鍵字”所規(guī)定的一個表目時,就產(chǎn)生一個新的表目。刪除(txid,關(guān)鍵字)操作中,一個事務(wù)標(biāo)識符為“txid”的事務(wù)刪除被“關(guān)鍵字”所規(guī)定的一個表目。提交(txid)操作中,將事務(wù)標(biāo)識符為“txid”的事務(wù)所進(jìn)行的文件內(nèi)容更新寫入到磁盤上的文件中,以進(jìn)行保存。中止(txid)操作中,一個事務(wù)標(biāo)識符為“txid”的事務(wù)所進(jìn)行的文件內(nèi)容更新被完全取消。在這5個操作中,讀取是一個不更新文件內(nèi)容的操作,而更新和刪除是更新文件內(nèi)容的操作,提交和中止是用于將事務(wù)的一個處理結(jié)果設(shè)置在一個提交狀態(tài),即一個正確完成的狀態(tài)的操作,或者是通過取消處理結(jié)果將事務(wù)的一個處理結(jié)果設(shè)置在處理開始前的一個狀態(tài)的操作?,F(xiàn)在,將針對一個示例性的情形來描述這個實施方式的事務(wù)處理系統(tǒng)的操作,其中3個事務(wù)(txid=1的一個事務(wù)(1),txid=2的一個事務(wù)(2),和txid=3的一個事務(wù)(3))如下面所描述的并行對圖4的XML文檔進(jìn)行訪問。更新(1,ICECREAM,¥450)[2]更新(3,APPLE,¥500)[3]刪除(2,BISCUIT)[4]更新(2,CHOCOLATE,¥300)[5]刪除(1,GRAPE)[6]更新(2,KIWIFRUIT,¥300)[7]提交(3)[8]提交(1)[9]中止(2)在這個事務(wù)處理系統(tǒng)更新圖4的文件的情形下,由共享數(shù)據(jù)管理單元4控制的文件系統(tǒng)6將硬盤10中的一個文件的內(nèi)容首先讀取到緩沖器區(qū)域62。一直到提交這個事務(wù)前,僅對緩沖器區(qū)域62中的這個文件的拷貝進(jìn)行文件的更新,而不會被寫入到硬盤10。首先,通過更新(1,ICECREAM,¥450),事務(wù)(1)增加了一個關(guān)鍵字“ICECREAM”,并且將其值設(shè)置為“¥450”。在這個時刻,如果這個文件仍然沒有在緩沖器區(qū)域62中,這個文件將被讀取到緩沖器區(qū)域62。在這以后,緩沖器區(qū)域62中的數(shù)據(jù)被改變,如圖5所顯示的。這里,具有一個關(guān)鍵字“ICECREAM”的一個新表目被增加,并且其值被設(shè)置為“¥450”。另外,為了表示這個表目目前被事務(wù)(1)所更新,兩個屬性TXID和TXSTATE被記錄為標(biāo)記<entry>的屬性。屬性TXID記錄了進(jìn)行這個更新的一個事務(wù)的一個事務(wù)標(biāo)識符,而屬性TXSTATE記錄了更新類型,并且這個信息將在提交或者中止處理的時刻被使用。這里,事務(wù)標(biāo)識符“1”被設(shè)置為TXID的屬性值,并且表示它目前在被更新的“更新”被設(shè)置為TXSTATE屬性的值。下面,通過更新(3,APPLE,¥500),事務(wù)(3)將一個關(guān)鍵字“APPLE”的值更新為“¥500”。在這個時刻,在緩沖器區(qū)域中的數(shù)據(jù)被改變,如圖6所顯示的,這里,具有關(guān)鍵字“APPLE”的表目的<value>標(biāo)記是通過將其改變到<oldvalue>標(biāo)記被保留的,并且其中一個新值“¥500”被<value>標(biāo)記包括的一個新部件被產(chǎn)生,并且被增加到表目中。另外,事務(wù)標(biāo)識符“3”被設(shè)置為TXID屬性值,并且表示它目前在被更新的“更新”被設(shè)置為TXSTATE屬性的值。下面,通過刪除(2,BISCUIT),事務(wù)(2)刪除帶一個關(guān)鍵字“BISCUIT”的一個表目。在這個時刻,在緩沖器區(qū)域62中的數(shù)據(jù)被改變,如圖7所顯示的。這里,事務(wù)標(biāo)識符“2”被設(shè)置為TXID的屬性值,并且表示它目前正在被刪除的“刪除”被設(shè)置為帶關(guān)鍵字“BISCUIT”的一個表目的TXSTATE屬性值。下面,通過更新(2,CHOCOLATE,¥300),事務(wù)(2)將一個關(guān)鍵字“CHOCOLATE”的值更新為“¥300”,并且執(zhí)行與上面所類似的處理,以使在緩沖器區(qū)域62中的數(shù)據(jù)成為如圖8所顯示的。下面,通過刪除(1,GRAPE),事務(wù)(1)刪除帶一個關(guān)鍵字“GRAPE”的一個表目,并且執(zhí)行與上面所類似的處理,以使在緩沖器區(qū)域62中的數(shù)據(jù)成為如圖9所顯示的。下面,通過更新(2,KIWIFRUIT,¥300),事務(wù)(2)增加帶一個關(guān)鍵字“KIWIFRUIT”的一個表目,將其值設(shè)置為“¥300”,并且執(zhí)行與上面所類似的處理,以使在緩沖器區(qū)域62中的數(shù)據(jù)成為如圖10所顯示的。下面,通過提交(3),就激活了事務(wù)(3)的提交處理?,F(xiàn)在,將描述如上面所描述的、多個事務(wù)同時更新同一個文件的提交處理。假定在如圖10所顯示的、在緩沖器區(qū)域62上更新文件數(shù)據(jù)的狀態(tài)下,提交(3)激活了事務(wù)(3)的提交處理。在這個時刻,事務(wù)(3)所進(jìn)行的更新從其中這個部件具有TXID和TXSTATE和包括<oldvalue>標(biāo)記的一個臨時狀態(tài)改變到可以通過刪除這些TXID,TXSTATE和<oldvalue>標(biāo)記而被寫回到硬盤10的一個正確被更新狀態(tài)。當(dāng)使用這個方法產(chǎn)生反映被事務(wù)(3)所進(jìn)行的更新的文件數(shù)據(jù)時,這些數(shù)據(jù)被寫回來替代硬盤10中的原始文件。在這個時刻,在這個實施方式中,當(dāng)前處于被事務(wù)(1)和事務(wù)(2)更新狀態(tài)下的數(shù)據(jù)被在這個狀態(tài)下寫回到硬盤10中。這是因為,如下面將要描述的,在取消更新中所需要的信息被附加到處于正在被更新狀態(tài)下的數(shù)據(jù),所以當(dāng)以后讀取這個數(shù)據(jù)時,可以執(zhí)行取消這個更新的一個處理。下面,通過提交(1),就激活了事務(wù)(1)的提交處理。在這個時刻,事務(wù)(1)所進(jìn)行的更新被反映到如圖12所顯示的數(shù)據(jù)中,并且這被寫回到硬盤10中。下面,通過中止(2),事務(wù)(2)被中止了。在這個時刻,事務(wù)(2)所進(jìn)行的更新被從緩沖器區(qū)域62中的文件數(shù)據(jù)中取消,如圖13所顯示的。下面,在上述示例中所描述的每一個操作的處理過程將被詳細(xì)描述。首先,讀取的處理過程將被描述。讀取操作非常簡單,因為它僅讀取與規(guī)定的關(guān)鍵字相應(yīng)的一個表目的一個值。但是,有兩個方法來實現(xiàn)讀取操作,這與如何使用系統(tǒng)有關(guān)。兩個方法的共同之處是如果這個值目前沒有被其它事務(wù)所更新,就可以讀取這個值。但是,這兩個方法之間的差異在于,當(dāng)一個事務(wù)完成或者沒有完成以前,被一個事務(wù)所讀取的一個表目是否可以被另一個事務(wù)所更新。即,一個方法認(rèn)為可以這樣做,所以讀取操作期間沒有互斥的控制。另一個方法認(rèn)為不可以這樣做,所以根據(jù)眾所周知的讀取/寫入互鎖方法的互斥控制被使用了。更詳細(xì)地,相同事務(wù)進(jìn)行的讀取和更新是兼容的,但是不同事務(wù)所進(jìn)行的讀取和更新是不兼容的,而不同事務(wù)所進(jìn)行的讀取是兼容的。使用非互斥控制的前一個情形可以被等效地看作是使用互斥控制的后一個方法的一個特殊情形,這是通過省略相對讀取的控制而獲得的,所以這里將描述后一個方法的處理過程。圖14顯示了讀取(txid,關(guān)鍵字)的一個示例性處理過程。首先,其關(guān)鍵字值與規(guī)定的“關(guān)鍵字”值相等的一個表目被搜尋(步驟S11)。如果發(fā)現(xiàn)了這個表目(步驟S12YES),就檢查TXSTATE屬性是否被加到這個表目上,并且如果加了TXSTATE屬性,“讀取”,“更新”和“刪除”中的一個就是被檢查的TXSTATE屬性值(步驟S13)。在沒有加TXSTATE屬性值的情形下,它隱含沒有人訪問該表目,所以TXID屬性和TXSTATE屬性被加到這個表目上,并且TXID屬性的值被設(shè)置為“txid”,而TXSTATE屬性的值被設(shè)置“讀取”(步驟S14),并且作為一個結(jié)果,返<value>部分的值(步驟S15)。在TXSTATE屬性值是“讀取”的情形下,如果“txid”還沒有被包括在TXID屬性值中(步驟S16NO),“txid”就被增加到TXID屬性值上(步驟S17),并且作為一個結(jié)果,返<value>部分的值(步驟S18)。在TXSTATE屬性值是“更新”的情形下,就檢查TXID屬性值是否是“txid”(步驟S19),并且如果它被相同的事務(wù)(步驟S19,YES)所更新就讀取這個表目,所以作為一個結(jié)果,返回<value>部分的值(步驟S20)。否則,(步驟S19NO),它被告知這個表目不能夠被讀取,因為它目前正在被其它事務(wù)所使用。在TXSTATE屬性值是“刪除”的情形下,它試圖讀取不存在的某些事物,所以顯示出一個錯誤。如果沒有發(fā)現(xiàn)這個表目(步驟S12NO),就指示出一個錯誤。圖15顯示了緊接在事務(wù)(4)已經(jīng)讀取關(guān)鍵字“CHOCOLATE”的值后,緩沖器區(qū)域62上的數(shù)據(jù)的狀態(tài),這是相對如圖4所顯示的文件數(shù)據(jù)進(jìn)行讀取(4,CHOCOLATE)的結(jié)果。正常的,TXID屬性值具有一個事務(wù)標(biāo)識符,但是在TXSTATE屬性值是“讀取”的情形下,TXID屬性值可以有一個事務(wù)標(biāo)識符的列表。這是因為多個事務(wù)可以同時讀取它。例如,當(dāng)帶事務(wù)標(biāo)識符“1”,“4”,和“5”的事務(wù)正在讀取它時,其TXID屬性值被給予一個“145”形式的列表。下面,將描述更新的處理過程。圖16顯示了更新(txid,關(guān)鍵字,值)的一個示例性處理過程。首先,搜尋其關(guān)鍵字值與規(guī)定的“關(guān)鍵字”值相等的一個表目(步驟S21)。如果發(fā)現(xiàn)了這個表目(步驟S22YES),就檢查TXSTATE屬性是否被加到這個屬性上,并且如果加了TXSTATE屬性,就檢查TXSTATE屬性值“讀取”,“更新”和“刪除”中的一個(步驟S23)。在沒有加TXSTATE屬性值的情形下,它隱含沒有人訪問該表目,所以TXID屬性和TXSTATE屬性被加到這個表目上,并且TXID屬性的值被設(shè)置為“txid”,而TXSTATE屬性的值被設(shè)置“更新”,并且當(dāng)前<value>部分的標(biāo)記名字被改變到<oldvalue>,并且產(chǎn)生一個新的<value>部分,其值被設(shè)置為更新命令的第三個參數(shù)所規(guī)定的“值”(步驟S24)。在TXSTATE屬性值是“讀取”的情形下,僅當(dāng)這個相同的事務(wù)獨自在進(jìn)行讀取時才可能更新這個表目,所以檢查TXID屬性值是否僅是“txid”(步驟S25)。如果是,TXSTATE屬性值就被改變到“更新”,當(dāng)前<value>部分的標(biāo)記名字被改變?yōu)?amp;lt;oldvalue>,并且產(chǎn)生一個新的<value>部分,并且其值被設(shè)置為更新命令的第三個參數(shù)所規(guī)定的“值”(步驟S26)。如果其它事務(wù)正在讀取,就不能夠執(zhí)行更新,所以它被告知這個表目目前正在被其它事務(wù)所使用。在TXSTATE屬性值是“更新”的情形下,就檢查TXID屬性值是否是“txid”(步驟S27)如果是,它就被相同的事務(wù)所更新,并且<value>部分的值被改變?yōu)楦旅畹牡谌齻€參數(shù)所規(guī)定的“值”(步驟S28)。如果另一個事務(wù)正在更新(步驟S27NO),它就不能夠執(zhí)行更新,所以它被告知這個表目目前正在被其它事務(wù)所使用。在TXSTATE屬性值是“刪除”的情形下,它試圖更新不存在的某些事物,所以顯示出一個錯誤。如果沒有發(fā)現(xiàn)其關(guān)鍵字值與被規(guī)定的“關(guān)鍵字”值相等的這個表目(步驟S22NO),就產(chǎn)生一個新的表目,并且其<key>部分和其<value>部分被分別設(shè)置為更新命令的第二和第三參數(shù)所規(guī)定的“關(guān)鍵字”和“值”,而TXID屬性值被設(shè)置為“txid”并且TXSTATE屬性值被設(shè)置為“更新”(步驟S29)。下面,將描述刪除的處理過程。圖17顯示了用于刪除(txid,關(guān)鍵字)的一個示例性處理過程。首先,搜尋其關(guān)鍵字值與規(guī)定的"關(guān)鍵字"值相等的一個表目(步驟S31)。如果發(fā)現(xiàn)了這個表目(步驟S32YES),就檢查TXSTATE屬性是否被加到這個屬性上,并且如果加了TXSTATE屬性,就檢查TXSTATE屬性值"讀?。?,"更新"和"刪除"中的一個(步驟S33)。在沒有加TXSTATE屬性值的情形下,它隱含沒有人訪問該表目,所以TXID屬性和TXSTATE屬性被加到這個表目上,并且TXID屬性的值被設(shè)置為"txid",而TXSTATE屬性的值被設(shè)置"刪除"(步驟S34)。在TXSTATE屬性值是"讀?。⒌那樾蜗拢瑑H當(dāng)這個相同的事務(wù)獨自在進(jìn)行讀取時才可能刪除這個表目,所以檢查TXID屬性值是否僅是"txid"(步驟S35)。如果是,TXSTATE屬性值就被改變到"刪除"。如果還有其它事務(wù)正在讀取,就不能夠執(zhí)行刪除,所以它被告知這個表目目前正在被其它事務(wù)所使用。在TXSTATE屬性值是"更新"的情形下,就檢查TXID屬性值是否是"txid"(步驟S37)。如果是,它就被相同的事務(wù)所更新,所以可以執(zhí)行刪除。在這個時刻,通過是否有<oldvalue>部分,就可以確認(rèn)這是這個事務(wù)新產(chǎn)生的一個表目或者是以前就存在的一個表目。如果沒有<oldvalue>部分(步驟S38NO),它就是這個事務(wù)產(chǎn)生的一個表目,所以它可以被立即刪除(步驟S40)。否則,步驟(S38YES),TXSTATE屬性值被改變到“刪除”(步驟S39)。如果其它事務(wù)正在更新(步驟S37NO),就不能夠執(zhí)行刪除,所以它被告知這個表目目前正在被其它事務(wù)所使用。在TXSTATE屬性值是"刪除"的情形下,它試圖更新不存在的某些事物,所以顯示出一個錯誤。如果沒有發(fā)現(xiàn)這個表目(步驟S32NO),就顯示一個錯誤。下面,將描述提交的處理過程。圖18顯示了用于提交(txid)的一個示例性處理過程。在這個提交處理中,這個文件中的每一個表目被圖18的過程所處理。首先,檢查這個表目的TXSTATE屬性值(步驟S101)。如果沒有TXSTATE屬性,就不需要進(jìn)行任何操作,因為沒有任何事務(wù)訪問這個表目。在TXSTATE屬性值是"讀取"的情形下,如果"txid"被包括在TXID屬性值中(步驟S102YES),并且如果其它事務(wù)標(biāo)識符也被包括,以使"txid"不是TXID屬性值的唯一值(步驟S103NO),就從TXID屬性值中刪除"txid"(步驟S104)。如果"txid"是TXID屬性值的唯一值(步驟S103YES),就刪除TXID屬性和TXSTATE屬性(步驟S105)。在TXSTATE屬性值是"更新"的情形下,就檢查TXID屬性值是否是"txid"(步驟S106)。如果是,就刪除<oldvalue>部分,TXID屬性和TXSTATE屬性,并且確認(rèn)這個更新(步驟S107)。在TXSTATE屬性值是"刪除"的情形下,就檢查TXID屬性值是否是"txid"(步驟S108)。如果是,就刪除這個表目(步驟S109)。當(dāng)對所有表目均完成了上述處理時,在這個時刻,在緩沖器區(qū)域62上的數(shù)據(jù)被寫回到硬盤10,以更新這個文件。注意,在提交處理的最后,共享數(shù)據(jù)管理單元4命令這個文件系統(tǒng)6將在緩沖器區(qū)域62上被更新的文件寫入到硬盤10中。在這個時刻,文件寫必須原子邏輯地被執(zhí)行,并且必須與被提交的事務(wù)所更新的其它文件同步進(jìn)行。即,存在可能性,執(zhí)行這個事務(wù)的應(yīng)用程序2已經(jīng)通過直接命令文件系統(tǒng)6而不使用共享數(shù)據(jù)管理單元4來對多個文件進(jìn)行了更新,并且也有一個可能性,即多個文件通過共享數(shù)據(jù)管理單元4(見圖2和圖3)被更新。為了原子邏輯地提交這個事務(wù),就需要完全提交對這多個文件的更新。在這個實施方式的事務(wù)處理系統(tǒng)中,對每一個事務(wù),對應(yīng)用程序2直接命令而進(jìn)行更新的文件列表進(jìn)行管理,所以被相同事務(wù)所更新的文件可以被收集并且可以使用這個信息被原子邏輯地寫回到硬盤10。但是,在文件系統(tǒng)6中,對通過共享數(shù)據(jù)管理單元4進(jìn)行操作的文件是被作為與任何事務(wù)不相關(guān)的文件來管理的。在提交處理過程中,共享數(shù)據(jù)管理單元4判斷哪一個事務(wù)的提交時刻可以被用作將這些文件寫回的時刻。為此,文件系統(tǒng)6被提供了一個功能,它命令將被共享數(shù)據(jù)管理單元4所打開和更新的文件原子邏輯地寫回到硬盤10中,而不與任何事務(wù)相關(guān),其寫回過程是與一特定事務(wù)的提交時刻是同步的。執(zhí)行提交處理的共享數(shù)據(jù)管理單元4反映由特定事務(wù)標(biāo)識符所標(biāo)識的事務(wù)對文件所進(jìn)行的修改,然后,命令這個文件系統(tǒng)6將這個文件寫回到硬盤10中,并且這個寫回過程是與特定事務(wù)標(biāo)識符的事務(wù)是同步的。在這個規(guī)定的事務(wù)標(biāo)識符的事務(wù)進(jìn)行提交的時刻,這個文件系統(tǒng)6將以這個方式指定的文件原子邏輯地寫回到硬盤10中,并且與如事務(wù)管理表61中所指示的事務(wù)所更新的文件同時進(jìn)行。但是,注意,執(zhí)行事務(wù)的應(yīng)用程序2通過直接命令文件系統(tǒng)6所更新的文件信息(例如事務(wù)管理表61的表目和緩沖器區(qū)域62中文件的映像)在文件系統(tǒng)6的提交處理被完成后將是不必要的。另一方面,即使在這以后,其它事務(wù)也將繼續(xù)更新被共享數(shù)據(jù)管理單元4所更新的文件而與任何特定事務(wù)無關(guān),所以在不與任何事務(wù)相關(guān)的情形下,這些文件將繼續(xù)被共享數(shù)據(jù)管理單元4所使用。因為這個原因,文件系統(tǒng)6將繼續(xù)保持與這些文件相關(guān)的信息。下面,將描述中止的處理過程。圖19顯示了用于中止(txid)的一個示例性處理過程。在這個中止處理中,這個文件中的每一個表目被圖19的過程所處理。首先,檢查這個表目的TXSTATE屬性值(步驟S111)。如果沒有TXSTATE屬性,就不需要進(jìn)行任何操作,因為沒有任何事務(wù)訪問這個表目。在TXSTATE屬性值是"讀?。⒌那樾蜗?,如果"txid"被包括在TXID屬性值中(步驟S112YES),并且如果其它事務(wù)標(biāo)識符也被包括,以使"txid"不是TXID屬性值的唯一值(步驟S113NO),就從TXID屬性值中刪除"txid"(步驟S114)。如果"txid"是TXID屬性值的唯一值(步驟S113YES),就刪除TXID屬性和TXSTATE屬性(步驟S115)。在TXSTATE屬性值是"更新"的情形下,就檢查TXID屬性值是否是"txid"(步驟S116)。如果是,就執(zhí)行取消對這個表目的更新的操作。在這個時刻,如果在這個表目中有一個<oldvalue>部分(步驟S117YES),就刪除當(dāng)前的<value>部分,并且將<oldvalue>部分的標(biāo)記名字改變?yōu)?amp;lt;value>,以具有在更新前的值,而刪除TXID屬性和TXSTATE屬性(步驟S118)。如果在這個表目中沒有<oldvalue>部分(步驟S117NO),這是被這個事務(wù)新產(chǎn)生的一個表目,所以就刪除這個表目(步驟S119)。在TXSTATE屬性值是"刪除"的情形下,就檢查TXID屬性值是否是"txid"(步驟S120)。如果是,就刪除TXID屬性和TXSTATE屬性(步驟S121),以取消刪除。注意,在中止的情形下,將要被中止的這個事務(wù)所進(jìn)行的文件更新在緩沖器區(qū)域62上被取消。在這個時刻,如果有另一個已經(jīng)提交的事務(wù)已經(jīng)更新了相同的文件,就有可能被將要被中止的事務(wù)所更新的狀態(tài)也已經(jīng)被寫入到文件中。但是,在中止處理過程中,決定不需要將從取消緩沖器區(qū)域62而產(chǎn)生的文件寫入到硬盤10中。這是因為當(dāng)另一個事務(wù)在以后更新相同的文件時,這個事務(wù)就被提交了,被中止事務(wù)所進(jìn)行的更新取消就正確地反映在硬盤10上。另外,即使在以后沒有事務(wù)更新這個文件的情形下,并且因為系統(tǒng)的故障而忘掉了取消時,仍然保留在硬盤10上的文件中的、被非提交事務(wù)所更新的狀態(tài)將在下面所描述的恢復(fù)處理過程打開這個文件的時刻被取消。下面,將描述恢復(fù)處理過程。在這個實施方式的事務(wù)處理系統(tǒng)中,處于被非提交事務(wù)所更新的狀態(tài)的文件將被寫回到硬盤10中。因為這個原因,當(dāng)在系統(tǒng)中發(fā)生故障時,被更新的狀態(tài)將被保留,并且因此就有必要通過執(zhí)行恢復(fù)處理過程來取消處在被更新狀態(tài)的更新。在傳統(tǒng)的事務(wù)處理系統(tǒng)中,在一個故障發(fā)生后進(jìn)行重新激活后,這樣一個恢復(fù)處理就必須立即被完全執(zhí)行。因為這個原因,在一個故障發(fā)生后進(jìn)行重新激活的開銷總是很大。相反,在這個實施方式的事務(wù)處理系統(tǒng)中,在以后從硬盤10中讀取這個文件的時間,已經(jīng)足夠執(zhí)行恢復(fù)處理過程。圖20顯示了恢復(fù)的一個示例性處理過程。當(dāng)共享數(shù)據(jù)管理單元4向文件系統(tǒng)6命令打開處理過程以參考還沒有在緩沖器區(qū)域62中的一個文件時,文件系統(tǒng)6從硬盤10中讀取這個文件,并且將這個文件拷貝到緩沖器區(qū)域62。在這個時刻,共享數(shù)據(jù)管理單元4通過圖20所顯示的過程,對這個文件中的每一個表目執(zhí)行恢復(fù)處理。首先,檢查這個表目的TXSTATE屬性值(步驟S201)。如果沒有TXSTATE屬性,就不需要進(jìn)行任何操作,因為沒有任何事務(wù)訪問這個表目。在TXSTATE屬性值是"讀?。⒌那樾蜗?,就刪除TXID屬性和TXSTATE屬性(步驟S202)。在TXSTATE屬性值是"更新"的情形下,它隱含一個故障已經(jīng)發(fā)生了并且某些事務(wù)正在更新這個表目,所以這些更新需要被取消。在這個時刻,操作有些不同,這取決于在這個表目中是否有一個<oldvalue>部分。如果在這個表目中有一個<oldvalue>部分(步驟S203YES),在開始這個事務(wù)以前,這個表目就存在,所以就刪除當(dāng)前的<value>部分,并且將<oldvalue>部分的標(biāo)記名字改變?yōu)?amp;lt;value>,以具有在更新前的值,而刪除TXID屬性和TXSTATE屬性(步驟S204)。如果在這個表目中沒有<oldvalue>部分(步驟S203NO),這是被這個事務(wù)新產(chǎn)生的一個表目,所以就刪除這個表目(步驟S205)。在TXSTATE屬性值是"刪除"的情形下,就刪除TXID屬性和TXSTATE屬性(步驟S206),以取消刪除。注意,如果每一次從磁盤中讀取這個文件時,均執(zhí)行一個恢復(fù)處理,這個開銷時間就非常大。因為這個原因,當(dāng)這個文件被寫入時,這個文件可以被加入一個信息,通過這個信息,可以很輕易地識別這個文件是否包括正在被更新的狀態(tài)。所以,可以減少開銷時間。更詳細(xì)地,如圖21所顯示的,例如,表示某些事務(wù)是否目前正在更新這個文件的信息被作為這個文檔的路徑部件的一個屬性而提供。在圖21的這個示例中,這用根<KVtable>的屬性TXNUM來表示,這表示兩個事務(wù),事務(wù)(1)和事務(wù)(2),正在更新這個文件。使用這個方法,當(dāng)首先從磁盤中讀取這個文件時,如果其根部件具有TXNUM屬性,就對這個文件中的每一個表目執(zhí)行圖20的恢復(fù)處理過程。如果沒有TXNUM屬性,恢復(fù)處理過程就不是必要的。現(xiàn)在,在到現(xiàn)在為止的描述中,這個表目被記錄在在根部件<KVtable>下的一個平面結(jié)構(gòu)中,但是也可能通過使用例如眾所周知的二進(jìn)制樹結(jié)構(gòu)的這樣一個結(jié)構(gòu)來實現(xiàn)快速的搜尋。圖22顯示了在這樣一個情形下,文件數(shù)據(jù)的一個示例。在這個示例中,這個表目除了<key>和<value>外,還具有被稱作<less>和<greater>的部件。通過將其關(guān)鍵字值小于這個部件的表目放置在<less>下,并且將其關(guān)鍵字值大于這個部件的表目放置在<greater>下,就形成了二進(jìn)制樹結(jié)構(gòu)。即使在這樣一個情形下,也可以按照與使用平面結(jié)構(gòu)的情形類似的情形,來處理這個事務(wù)的更新或者刪除所進(jìn)行的更新。但是,需要一個過程通過添加和刪除表目來重新組織這個樹結(jié)構(gòu)。這個過程與在普通樹結(jié)構(gòu)中添加/刪除節(jié)點的處理過程完全相同。在對樹結(jié)構(gòu)進(jìn)行重新組織的時刻,也可能通過使用例如AVL的一個方法來重新組織樹,以使分支被很好地平衡,或者重新組織樹以使具有較高訪問頻率的表目被放置在更靠近樹的根部。本發(fā)明的事務(wù)處理系統(tǒng)也可能使用一個管理結(jié)構(gòu),例如眾所周知的B-TREE來管理在分部中的文件。圖23,24,25和26顯示了這樣一個情形的示例。這里,將使用與B-TREE中的算法相同的算法來執(zhí)行表目添加/刪除處理,在B-TREE算法中,一個文件最多包括6個表目,并且當(dāng)表目數(shù)目超過6時就分割文件。在圖23,24,25和26的示例中,F(xiàn)ILE001是根文件,F(xiàn)ILE002,F(xiàn)ILE003,和FILE004是被放置在根文件下的文件。圖27顯示了事務(wù)處理系統(tǒng)的一個示例結(jié)構(gòu),這個事務(wù)處理系統(tǒng)記錄和管理使用這個方法被分成多個文件的信息集合。圖27的結(jié)構(gòu)與圖1的結(jié)構(gòu)的不同之處在于,共享數(shù)據(jù)管理單元4具有一個更新組表42。如下面所描述的,當(dāng)文件中的結(jié)構(gòu)通過在多個文件中移動信息而改變時,就需要在進(jìn)行提交的時刻,同時將這些文件寫入到硬盤10中。更新組表42被用于管理在進(jìn)行提交的同時必須被寫回到硬盤10中或者刪除的一組文件。圖28顯示了更新組表42的一個示例。這個更新組表記錄了在進(jìn)行提交的同時必須被寫回到硬盤10中或者刪除的每一組文件的成員文件。在圖28中,F(xiàn)ILE001,F(xiàn)ILE002,和FILE005組成了一個組,例如。現(xiàn)在,從圖23,24,25,和26開始、搜尋具有用“SESAME”作為一個關(guān)鍵字的一個表目的一個過程將從根FILE001開始。首先,當(dāng)將關(guān)鍵字與“KIWIFRUIT”進(jìn)行比較時,發(fā)現(xiàn)這個關(guān)鍵字大。下面,當(dāng)這個關(guān)鍵字被與在<greater>側(cè)的“ROSEMARY”進(jìn)行比較時,發(fā)現(xiàn)這個關(guān)鍵字大。下面,當(dāng)參考<greater>側(cè)時,它是到FILE004的一個鏈接。所以,這個搜尋移動到FILE004,當(dāng)這個關(guān)鍵字被與“THYME”時,發(fā)現(xiàn)這個關(guān)鍵字小。下面,當(dāng)參考<less>側(cè)時,就發(fā)現(xiàn)了具有一個關(guān)鍵字“SESAME”的這個表目。一旦使用這個方法發(fā)現(xiàn)了這個表目,隨后對這個表目所進(jìn)行的操作就與上面所描述的實施方式類似,以使通過加入TXID屬性和TXSTATE屬性來以一個可恢復(fù)的形式保存正在被更新的狀態(tài)。例如,對處于圖23,24,25和26的狀態(tài)中的數(shù)據(jù),假定事務(wù)(1)將帶關(guān)鍵字“ORANGE”的這個表目的值改變?yōu)椤埃?50”,并且將帶關(guān)鍵字“SESAME”的這個表目的值改變?yōu)椤埃?50”,而與事務(wù)(1)同時進(jìn)行的事務(wù)(2)刪除具有關(guān)鍵字“VODKA”的這個表目。在這個狀態(tài)中,圖25和26的數(shù)據(jù)成為如圖29和30所顯示的。具有被更新例如“更新”或者刪除的狀態(tài)的這個方法與將所有表目輸入到一個文件的情形相同,所以通過加兩個屬性TXID和TXSTATE來管理被更新的表目。在圖29和30的狀態(tài)中,分別被事務(wù)(1)和事務(wù)(2)依次提交和取消的一個示例性的操作被顯示為如下。首先,在事務(wù)(1)進(jìn)行提交的時刻,事務(wù)(1)所更新的表目僅存在于FILE003和FILE004。所以,通過對FILE003和FILE004執(zhí)行提交處理過程,而獲得了處于圖31和32的狀態(tài)中的數(shù)據(jù),并且在事務(wù)(1)更新其它文件的同時,這些數(shù)據(jù)被寫回到硬盤10中。在這個時刻,當(dāng)被寫回時,F(xiàn)ILE004包括被事務(wù)(2)正在被更新的狀態(tài),這與上面所描述的實施方式類似。下面,在事務(wù)(2)進(jìn)行中止的時刻,被事務(wù)(2)所更新的表目僅存在于FILE004中。所以,通過對FILE004執(zhí)行中止處理過程,而獲得了處于圖33的狀態(tài)中的數(shù)據(jù),然后就結(jié)束了中止處理過程。這里,在進(jìn)行中止處理的時刻,不需要將這個文件寫回到硬盤10中,這與上面所描述的實施方式類似?,F(xiàn)在,圖34,35和36顯示了在上面所描述操作的末尾,在一個新事務(wù)(3)添加了關(guān)鍵字為“DODO”和關(guān)鍵字為“HOOPOE”的表目,并且將它們的值設(shè)置為“¥5000000”和“¥980000”后數(shù)據(jù)的狀態(tài)。這里,可以被輸入到一個文件的表目的數(shù)目是預(yù)定的,以使當(dāng)如這個示例性的更新中,嘗試添加超過一個文件容量的表目時,就在文件中進(jìn)行重新組織,并且移動表目。在圖34,35和36的示例中,關(guān)鍵字為“DODO”和關(guān)鍵字為“HOOPOE”的表目的添加均被添加到FILE002。所以,F(xiàn)ILE002被分開,并且產(chǎn)生一個新的文件FILE005,并且移動表目。當(dāng)使用這個方法在文件中移動表目時,或者當(dāng)新文件被添加或者相反地文件被刪除時,這些文件的更新就必須被同時反映在硬盤10中。因為這個原因,這個實施方式的事務(wù)處理系統(tǒng)的共享數(shù)據(jù)管理單元4管理更新組表42。在作為將表目添加到FILE002的結(jié)果而分開FILE002時,如圖34,35和36的示例,就更新FILE001和產(chǎn)生FILE005,并且共享數(shù)據(jù)管理單元4將FILE001,F(xiàn)ILE002和FILE005登記為一單個組。在提交事務(wù)(3)的時刻,事務(wù)(3)所更新的表目僅存在于FILE001和FILE005,但是通過參考更新組表42可以確認(rèn)FILE002必須被同時寫回。所以,如圖37和38所顯示的,包括FILE001和FILE005,對這個執(zhí)行了提交處理,以及FILE002的3個文件被寫回到硬盤10中。如上面所描述的,在提交一個事務(wù)的時刻,包括被將要被提交的事務(wù)所更新,添加,或者刪除的數(shù)據(jù)的文件首先被選擇作為將要被寫回到硬盤中的文件的候選者。如果更新組表具有包括這些候選文件中任何一個的一組,這個組的所有文件就被添加到候選文件中。通過重復(fù)這個操作,直到不可能進(jìn)一步發(fā)現(xiàn)候選者,有可能會發(fā)現(xiàn)所有的文件必須被立即寫回到硬盤和所有的文件必須被立即刪除。通過將必須被寫回到硬盤的這些文件寫回到硬盤中,和從硬盤中刪除必須被刪除的這些文件,就完成了提交處理過程。在本發(fā)明中,在將將要被提交的事務(wù)所更新的一個文件寫回到硬盤的時刻,即使另一個非提交事務(wù)正在更新這個相同的文件,這個文件也將帶著被這個非提交事務(wù)所更新的數(shù)據(jù)和用于取消這個更新所必要的信息被寫回到硬盤中。在這個時刻,可能會涉及在這個文件和另一個文件之間移動數(shù)據(jù)的情形,在非提交事務(wù)更新,添加或者刪除數(shù)據(jù)時,出現(xiàn)添加一個新文件或者刪除某個文件的情形。在這樣的情形下,被非提交事務(wù)所添加的文件也必須被寫回到硬盤中,被非提交事務(wù)所刪除的文件也必須從硬盤中被刪除,因為否則就在這個狀態(tài)下出現(xiàn)一個故障時,就不可能取消非提交事務(wù)所進(jìn)行的更新。上面所描述的更新組表記錄了在提交處理的同時,必須被寫回到硬盤的這些文件和從硬盤中必須被刪除的這些文件之間的所有組關(guān)系,以使通過參考在上面所描述的提交處理過程中的更新組表來選擇文件,就可能選擇在一個事務(wù)的提交處理的同時,必須被寫回的和必須被刪除的這些候選文件。在實現(xiàn)本發(fā)明的事務(wù)處理系統(tǒng),以使數(shù)據(jù)被按照如上面所描述的被分成多個文件而保存的情形中,就可以根據(jù)多個準(zhǔn)則來限制可以被輸入到一個文件中的表目的數(shù)目。例如,可以使用其中一個文件中表目的數(shù)目可以被按照圖34,35和36的示例來限制的一個方法,可以使用根據(jù)文件物理尺寸來限制表目數(shù)目的方法,可以使用根據(jù)信息,例如添加/刪除的頻率來改變表目的最大數(shù)目的方法,可以使用這些方法的任何組合,等等。用于按照如這個實施方式的被分成多個文件而保存數(shù)據(jù)的方法的優(yōu)點是,如果僅一部分表目被更新,即使表目的數(shù)目很大,在提交的時刻,需要被寫入到磁盤中的數(shù)據(jù)量也可以被減少。在將所有表目輸入到一個文件的方法中,在進(jìn)行提交的時刻,即使僅大文件的一部分被更新,也需要將整個文件寫入到磁盤?,F(xiàn)在,到這里的描述已經(jīng)描述了將本發(fā)明應(yīng)用到具有一個關(guān)鍵字和值對的、與數(shù)據(jù)庫類似的結(jié)構(gòu)的數(shù)據(jù)的示例性情形。在下面,將本發(fā)明應(yīng)用到更一般的XML文檔的情形將被作為另一個示例而描述。圖39顯示了一個一般XML文檔的一個示例,而圖40顯示了其中在圖39的文檔中,事務(wù)(1)將“<title>NAGOYA</title>”的<chapter>的<author>改變?yōu)椤癕ISOKATSU”,并且事務(wù)(2)添加“<chapter><title>HAKATA</title><author>KARASHIMENTAIKO</author></chapter>”的數(shù)據(jù)狀態(tài)。在這個以后,在提交事務(wù)(1)的時刻,數(shù)據(jù)被更新到圖41所顯示的一個狀態(tài),并且這些數(shù)據(jù)被寫回到磁盤。另外,在提交事務(wù)(2)的時刻,數(shù)據(jù)被更新到圖42所顯示的一個狀態(tài),并且這些數(shù)據(jù)被寫回到磁盤。即使在使用一個一般XML文檔作為一個處理目標(biāo)的情形下,在下面從磁盤中讀取一個文件的時刻,檢查因為發(fā)生了一個故障而停留在正在被更新狀態(tài)的這個文件,并且執(zhí)行刪除ADD作為TXSTATE的部件,并且保留REMOVE作為TXSTATE的部件的恢復(fù)處理,以使可以取消非提交事務(wù)所進(jìn)行的臨時更新。如所描述的,根據(jù)本發(fā)明,就可能通過一個簡單的處理過程,并行進(jìn)行多個事務(wù)來對文件進(jìn)行更新。在本發(fā)明中,在進(jìn)行數(shù)據(jù)更新,提交或者恢復(fù)時,不需要一個復(fù)雜的處理過程,這不象在傳統(tǒng)的WAL方法或者映象頁面方法上實現(xiàn)一個特殊的記錄管理。另外,在本發(fā)明中,在完全發(fā)生一個故障后,在重新激活的時刻,就不需要執(zhí)行恢復(fù)處理,并且它足以在使用這個文件的時刻執(zhí)行這個恢復(fù)處理,以使恢復(fù)處理的開銷時間很小。另外,在本發(fā)明中,通過將一個數(shù)據(jù)劃分成多個文件來管理一個數(shù)據(jù),在提交這個文件更新的時刻,就可以減少需要被寫回到磁盤的數(shù)據(jù)量。這樣,根據(jù)本發(fā)明,就可能提供一個事務(wù)處理方法和一個事務(wù)處理系統(tǒng),這個事務(wù)處理系統(tǒng)能夠輕易地和有效地通過并行操作多個事務(wù)來實現(xiàn)文件更新處理,已經(jīng)在發(fā)生故障時實現(xiàn)恢復(fù)處理。在本發(fā)明中,當(dāng)被一個事務(wù)所更新的文件在提交這個事務(wù)的時刻,也被另一個事務(wù)所更新時,另一個事務(wù)所進(jìn)行的更新內(nèi)容和用于取消這個更新所需要的信息也被寫入到文件中,并且這個文件被寫入到穩(wěn)定的存儲器裝置(例如硬盤),以使能夠?qū)崿F(xiàn)多個事務(wù)并行對一個文件的數(shù)據(jù)進(jìn)行更新,而可以保持事務(wù)的原子性(事實是即使在系統(tǒng)發(fā)生故障的情形下,也能夠保證每一個事務(wù)所進(jìn)行的更新或者是全部有效(提交),或者在穩(wěn)定的存儲器裝置中所有均是無效的(中止),這里沒有其它的狀態(tài)),而不使用通過提供與文件獨立的日志這樣一個復(fù)雜的管理。在一個事務(wù)被提交后,提交正在更新相同文件的另一個事務(wù)的情形下,包括后面被提交的事務(wù)所進(jìn)行的更新內(nèi)容和前面被提交的事務(wù)所進(jìn)行的、沒有被后面提交的事務(wù)所重寫的一部分內(nèi)容的文件將覆蓋寫在前面被寫在穩(wěn)定存儲器裝置中的一個文件上(這個文件包括后面提交的事務(wù)所進(jìn)行的更新內(nèi)容和用于取消這個更新所需要的信息),以保持事務(wù)的原子性。注意,在提交一個事務(wù)后,中止正在更新相同文件的這另一個事務(wù)的情形下,處于將要被中止的事務(wù)所進(jìn)行的更新被取消的狀態(tài)中的一個文件可能被覆蓋寫到前面被寫入到穩(wěn)定存儲器裝置中的一個文件上(這個文件包括后面提交的事務(wù)所進(jìn)行的更新內(nèi)容和用于取消這個更新所需要的信息),但是可以保持事務(wù)的原子性,可以通過在下面讀取這個文件時,執(zhí)行恢復(fù)處理過程,而不需要在中止時進(jìn)行任何操作。即使在提交一個事務(wù)后,正在更新相同文件的這另一個事務(wù)被提交或者被中止前,在系統(tǒng)發(fā)生故障的情形下,被提交事務(wù)所進(jìn)行的更新已經(jīng)被正確地反映在穩(wěn)定存儲器裝置上的文件中。另外,通過執(zhí)行恢復(fù)處理,就可能取消這另一個非提交事務(wù)所進(jìn)行的更新,就好象這個事務(wù)被中止了,以使可以保持事務(wù)的一致性。另外,在從故障中進(jìn)行恢復(fù)時,不需要執(zhí)行這個恢復(fù)處理,并且在下面讀取這個文件時,足以執(zhí)行這個恢復(fù)處理。另外,通過同步多個文件的寫,就可以實現(xiàn)原子邏輯地寫,原子邏輯地寫確保從一個事務(wù)的處理開始直到提交的時刻,這個事務(wù)對多個文件所進(jìn)行的更新在穩(wěn)定存儲器裝置上全部是有效的(提交)或者全部無效(中止),并且沒有其它狀態(tài)(不可能一個事務(wù)所進(jìn)行的僅一部分更新是有效的,而余下的部分是無效的,即使在系統(tǒng)發(fā)生故障的情形下)。應(yīng)注意,在上面的描述中,穩(wěn)定存儲器裝置指一個存儲器,例如硬盤,其中即使關(guān)閉電源時,其中所保存的內(nèi)容也不會丟失。還應(yīng)注意的是,根據(jù)本發(fā)明的、上面所描述的實施方式可以方便地使用根據(jù)本發(fā)明規(guī)定而編程的一個傳統(tǒng)的一般通用數(shù)字計算機(jī)來實現(xiàn),這對計算機(jī)領(lǐng)域內(nèi)的技術(shù)人員來說是很清楚的。合適的軟件代碼可以被有技術(shù)的編程人員根據(jù)本發(fā)明的教義來編寫,這對軟件領(lǐng)域內(nèi)的技術(shù)人員來說是很清楚的。特別地,可以使用一個軟件包的形式,來方便地實現(xiàn)上面所描述實施方式的事務(wù)處理系統(tǒng)。這樣一個軟件包可以是一個計算機(jī)程序產(chǎn)品,這個計算機(jī)程序產(chǎn)品采用了包括被用于將一個計算機(jī)編程為執(zhí)行所公開的功能和本發(fā)明處理過程的被保存計算機(jī)代碼的一個存儲媒質(zhì)。這個存儲媒質(zhì)包括,但是不局限于,傳統(tǒng)的軟盤,光盤,CD-ROM,磁光盤,ROM,RAM,EPROM,EEPROM,磁或者光卡中任何類型,或者任何合適的用于保存電子指令的其它媒質(zhì)。除已經(jīng)所描述的外,應(yīng)注意的是,可以對上面的實施方式進(jìn)行許多修改和變化,而不會偏離本發(fā)明的新潁和有利的特征。所以,所有這個修改和變化均包括在后附權(quán)利要求書的范圍內(nèi)。權(quán)利要求1.一個事務(wù)處理方法,包括步驟執(zhí)行多個事務(wù),這多個事務(wù)對被讀取到一個緩沖器區(qū)域上的一個文件執(zhí)行更新處理;和在這多個事務(wù)中的一個事務(wù)進(jìn)行提交時,將所述一個文件寫入到一個穩(wěn)定的存儲器裝置,所述一個文件包括被所述一個事務(wù)所提交的更新內(nèi)容和其它非提交事務(wù)所進(jìn)行的非提交更新內(nèi)容,和用于取消非提交更新的信息。2.如權(quán)利要求1的事務(wù)處理方法,進(jìn)一步包括步驟在這多個事務(wù)中的另一個事務(wù)進(jìn)行提交時,在被寫入到穩(wěn)定存儲器裝置中的所述一個文件上覆蓋寫一個被更新的文件,被更新的文件包括被所述另一個事務(wù)所新提交的更新內(nèi)容,和由已經(jīng)提交的事務(wù)所進(jìn)行的、不與新提交更新的內(nèi)容沖突的已經(jīng)提交的內(nèi)容的一部分。3.如權(quán)利要求1的事務(wù)處理方法,進(jìn)一步包括步驟檢查被非提交事務(wù)所進(jìn)行的非提交更新的內(nèi)容和用于取消非提交更新的信息是否被包括在每一個新從穩(wěn)定存儲器裝置中被讀取出來的文件中;和當(dāng)每一個文件包括非提交更新的內(nèi)容和用于取消非提交更新的信息時,將每一個文件設(shè)置在一個狀態(tài),其中使用用于取消非提交更新的信息來刪除非提交更新。4.如權(quán)利要求1的事務(wù)處理方法,進(jìn)一步包括步驟在將所述一個文件寫入到穩(wěn)定存儲器中的同時,將另一個文件寫入到穩(wěn)定存儲器裝置中,當(dāng)所述一個事務(wù)也對緩沖器區(qū)域上的另一個文件執(zhí)行更新處理時,所述另一個文件包括所述一個文件對所述另一個文件所進(jìn)行的提交更新內(nèi)容。5.如權(quán)利要求1的事務(wù)處理方法,其中所述一個文件是記錄一組分開的信息的多個文件中的一個。6.如權(quán)利要求5的事務(wù)處理方法,進(jìn)一步包括步驟通過聯(lián)系所述一個事務(wù)進(jìn)行的提交更新,在緩沖器區(qū)域上執(zhí)行添加一個新文件,在文件中移動數(shù)據(jù),和刪除一個不必要的文件中的至少一個操作,來調(diào)節(jié)多個文件,以使多個文件中每一個文件的尺寸與預(yù)定的準(zhǔn)則一致;和其中寫入步驟也執(zhí)行將通過聯(lián)系提交更新的調(diào)節(jié)步驟而新更新的或者產(chǎn)生的這些文件寫入到穩(wěn)定存儲器裝置中,并且相對所述一個文件的寫原子邏輯地從穩(wěn)定存儲器裝置中刪除通過聯(lián)系被提交更新的調(diào)節(jié)步驟被刪除的那些文件。7.如權(quán)利要求6的事務(wù)處理方法,其中調(diào)節(jié)步驟也聯(lián)系非提交事務(wù)所進(jìn)行的非提交更新來調(diào)節(jié)多個文件,和其中寫入步驟也執(zhí)行將通過聯(lián)系非提交更新的調(diào)節(jié)步驟而新更新的或者產(chǎn)生的這些文件寫入到穩(wěn)定存儲器裝置中,并且相對所述一個文件的寫原子邏輯地從穩(wěn)定存儲器裝置中刪除通過聯(lián)系非提交更新的調(diào)節(jié)步驟被刪除的那些文件。8.一個事務(wù)處理系統(tǒng),包括一個讀取單元,被構(gòu)造成將作為一個事務(wù)處理目標(biāo)的一個文件從一個穩(wěn)定存儲器裝置讀取到一個緩沖器區(qū)域;一個更新單元,被構(gòu)造成更新所述一個文件,這個更新是通過將多個事務(wù)中每一個對所述一個文件進(jìn)行的更新內(nèi)容和用于取消這些更新的信息寫入到緩沖器區(qū)域上的所述一個文件而進(jìn)行的;和一個寫入單元,被構(gòu)造成在所述多個事務(wù)中的一個事務(wù)進(jìn)行提交時,將所述一個文件寫入到穩(wěn)定存儲器裝置中,所述一個文件包括被所述一個事務(wù)所進(jìn)行的提交更新內(nèi)容和其它非提交事務(wù)所進(jìn)行的非提交更新內(nèi)容,和用于取消非提交更新所需要的信息9.如權(quán)利要求8的事務(wù)處理系統(tǒng),其中寫入單元通過從所述一個文件刪除用于取消被所述一個事務(wù)進(jìn)行的提交更新所需要的信息來獲得將被寫入到穩(wěn)定存儲器裝置中的所述一個文件,如更新單元在緩沖器區(qū)域上被更新的。10.如權(quán)利要求8的事務(wù)處理系統(tǒng),其中讀取單元讀取用于記錄一組分開信息的包括所述一個文件的多個文件,通過聯(lián)系所述一個事務(wù)進(jìn)行的提交更新,在緩沖器區(qū)域上執(zhí)行添加一個新文件,在文件中移動數(shù)據(jù),和刪除一個不必要的文件中的至少一個操作,更新單元也調(diào)節(jié)多個文件,以使多個文件中每一個文件的尺寸與預(yù)定的準(zhǔn)則一致,和其中寫入單元也執(zhí)行將通過聯(lián)系提交更新的調(diào)節(jié)而新更新的或者產(chǎn)生的這些文件寫入到穩(wěn)定存儲器裝置中,并且相對所述一個文件的寫原子邏輯地從穩(wěn)定存儲器裝置中刪除通過聯(lián)系被提交更新的調(diào)節(jié)被刪除的那些文件。11.如權(quán)利要求10的事務(wù)處理系統(tǒng),其中更新單元也聯(lián)系非提交事務(wù)所進(jìn)行的非提交更新來調(diào)節(jié)多個文件,和其中寫入單元也執(zhí)行將通過聯(lián)系非提交更新的調(diào)節(jié)而新更新的或者產(chǎn)生的這些文件寫入到穩(wěn)定存儲器裝置中,并且相對所述一個文件的寫原子邏輯地從穩(wěn)定存儲器裝置中刪除通過聯(lián)系非提交更新的調(diào)節(jié)被刪除的那些文件。12.一個計算機(jī)可以使用的媒質(zhì),具有其中包括了用于促使一個計算機(jī)來用作一個事務(wù)處理系統(tǒng)的計算機(jī)可以閱讀的程序代碼,這個計算機(jī)可以閱讀的程序代碼包括一第一計算機(jī)可以閱讀程序代碼,用于促使所述計算機(jī)將作為一個事務(wù)處理目標(biāo)的一個文件從一個穩(wěn)定存儲器裝置讀取到一個緩沖器區(qū)域;一第二計算機(jī)可以閱讀的程序代碼,用于促使所述計算機(jī)更新所述一個文件,這個更新是通過將多個事務(wù)中每一個對所述一個文件進(jìn)行的更新內(nèi)容和用于取消這個更新所需要的信息寫入到緩沖器區(qū)域上的所述一個文件來進(jìn)行的;和一第三計算機(jī)可閱讀程序代碼,用于促使所述計算機(jī)在所述多個事務(wù)中的一個事務(wù)進(jìn)行提交時,將所述一個文件寫入到穩(wěn)定存儲器裝置中,所述一個文件包括被所述一個事務(wù)所進(jìn)行的提交更新內(nèi)容和其它非提交事務(wù)所進(jìn)行的非提交更新內(nèi)容,和用于取消非提交更新所需要的信息。全文摘要一個事務(wù)處理系統(tǒng),這個事務(wù)處理系統(tǒng)通過多個事務(wù)并行工作能夠輕易地和有效地實現(xiàn)文件更新處理和在發(fā)生故障時實現(xiàn)恢復(fù)處理。在這個事務(wù)處理系統(tǒng)中,對被讀取到一個緩沖器區(qū)域的一個文件執(zhí)行更新處理的多個事務(wù)被執(zhí)行,并且在多個事務(wù)中的一個事務(wù)進(jìn)行提交的時刻,一個文件被寫入到穩(wěn)定存儲器裝置,其中一個文件包括被這一個事務(wù)所進(jìn)行的提交更新內(nèi)容和其它非提交事務(wù)所進(jìn)行的非提交更新內(nèi)容,和用于取消非提交更新所需要的信息。文檔編號G06F12/00GK1346091SQ00129088公開日2002年4月24日申請日期2000年9月29日優(yōu)先權(quán)日2000年9月12日發(fā)明者金井達(dá)德,鳥井修,岐津俊樹,前田誠司,矢尾浩,矢野浩邦申請人:株式會社東芝
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1