數(shù)據(jù)庫裝置、程序及數(shù)據(jù)處理方法
【專利摘要】實施方式的數(shù)據(jù)庫裝置具備易失性的第1存儲部、非易失性的第2存儲部、對于將數(shù)據(jù)集合劃分為多個的多個塊而分別執(zhí)行與訪問請求對應(yīng)的處理的訪問處理部、將多個塊的各自的備份時刻下的數(shù)據(jù)向第2存儲部寫出的備份處理部、和塊管理部。塊管理部在規(guī)定的條件的情況下,將存儲在第1存儲部中的某個塊的數(shù)據(jù)向第2存儲部寫出,將被請求訪問的塊的數(shù)據(jù)從第2存儲部向第1存儲部讀入。備份處理部將多個塊中的還沒有被寫出到第2存儲部中的塊的數(shù)據(jù)寫出。
【專利說明】數(shù)據(jù)庫裝置、程序及數(shù)據(jù)處理方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明的實施方式涉及數(shù)據(jù)庫裝置、程序及數(shù)據(jù)處理方法。
【背景技術(shù)】
[0002]以往,已知有內(nèi)存數(shù)據(jù)庫(In-memory database)。內(nèi)存數(shù)據(jù)庫是將數(shù)據(jù)集合的全部或大部分存儲到易失性存儲器中的數(shù)據(jù)庫。內(nèi)存數(shù)據(jù)庫由于與盤記錄裝置等之間的訪問變少,所以能夠使對于訪問請求的響應(yīng)變快。
[0003]內(nèi)存數(shù)據(jù)庫定期地將數(shù)據(jù)集合的數(shù)據(jù)鏡像(image)備份到盤記錄裝置等中。由此,內(nèi)存數(shù)據(jù)庫即使發(fā)生故障而存儲在易失性存儲器中的數(shù)據(jù)集合丟失,也能夠?qū)浞輹r刻的數(shù)據(jù)集合進行恢復(fù)。
[0004]此外,內(nèi)存數(shù)據(jù)庫也有將更新訪問的日志記錄到盤存儲裝置中的情況。在此情況下,內(nèi)存數(shù)據(jù)庫通過將備份時刻的數(shù)據(jù)集合讀出后再執(zhí)行日志,能夠?qū)⒃谟嬎銠C中發(fā)生故障的時刻的數(shù)據(jù)集合完全恢復(fù)。
[0005]現(xiàn)有技術(shù)文獻
[0006]專利文獻
[0007]專利文獻1:日本特開2006 - 139696號公報
[0008]專利文獻2:日本特開2009 - 217688號公報
[0009]專利文獻3:日本特開2011 - 186532號公報發(fā)明概要
[0010]可是,內(nèi)存數(shù)據(jù)庫在數(shù)據(jù)集合的尺寸超過易失性存儲器的容量的情況下,必須將數(shù)據(jù)集合的一部分存儲到盤存儲裝置等中。在這樣的情況下,內(nèi)存數(shù)據(jù)庫與盤存儲裝置等之間的訪問增加。特別是,內(nèi)存數(shù)據(jù)庫由于定期地將數(shù)據(jù)集合備份,所以對于一部分的數(shù)據(jù)來說,被重復(fù)記錄到盤記錄裝置中,效率較差。
[0011]
【發(fā)明內(nèi)容】
[0012]用于解決技術(shù)問題的手段
[0013]實施方式的數(shù)據(jù)庫裝置具備:易失性的第I存儲部;非易失性的第2存儲部;訪問處理部,對于將數(shù)據(jù)集合劃分為多個后的多個塊,分別執(zhí)行與訪問請求對應(yīng)的處理;備份處理部,將多個塊的各自的備份時刻下的數(shù)據(jù)向第2存儲部寫出;以及塊管理部。塊管理部在被請求訪問的塊沒有存儲在第I存儲部中、并且第I存儲部的空閑容量是事先確定的量以下的情況下,將存儲在第I存儲部中的某個塊的數(shù)據(jù)向第2存儲部寫出,將被請求訪問的塊的數(shù)據(jù)從第2存儲部向第I存儲部讀入。備份處理部,將事先確定的第I備份時刻下的多個塊的各自的數(shù)據(jù),以還沒有被寫出到第I備份文件中為條件,按照每個塊依次向第2存儲部內(nèi)的第I備份文件寫出。此外,備份處理部,將從第I備份時刻起經(jīng)過了事先確定的時間后的第2備份時刻下的多個塊的各自的數(shù)據(jù),以還沒有被寫出到第2備份文件中為條件,按照每個塊依次向第2存儲部內(nèi)的第2備份文件寫出。并且,塊管理部在第I備份時刻之后且第2備份時刻之前被請求更新的情況下、被請求更新的塊的數(shù)據(jù)沒有被寫出到第I備份文件中的情況下,將被請求更新的塊的更新前的數(shù)據(jù)向第I備份文件寫出。
【專利附圖】
【附圖說明】
[0014]圖1是表示有關(guān)實施方式的數(shù)據(jù)庫裝置的功能結(jié)構(gòu)的圖。
[0015]圖2是用來說明備份處理及日志的記錄處理的圖。
[0016]圖3是表示屬性信息的內(nèi)容的圖。
[0017]圖4是用來說明由塊管理部進行的多個塊的管理處理的圖。
[0018]圖5是用來說明由塊管理部及備份處理部進行的、將塊的數(shù)據(jù)鏡像向備份文件寫出的處理的圖。
[0019]圖6是表示備份處理部的處理流程的圖。
[0020]圖7是表示受理了訪問請求的情況下的塊管理部的處理流程的圖。
[0021]圖8是表示圖7的步驟S23的處理流程的圖。
[0022]圖9是表示第I?第3類型的塊的屬性信息的圖。
【具體實施方式】
[0023]圖1是表示有關(guān)實施方式的數(shù)據(jù)庫裝置10的功能結(jié)構(gòu)的圖。數(shù)據(jù)庫裝置10經(jīng)由網(wǎng)絡(luò)從客戶端終端或應(yīng)用服務(wù)器等接收對于數(shù)據(jù)庫中包含的數(shù)據(jù)集合的訪問請求(例如參照或更新)。并且,數(shù)據(jù)庫裝置10執(zhí)行與接收到的訪問請求對應(yīng)的處理。
[0024]數(shù)據(jù)庫裝置10具備易失性存儲器21、儲存(storage)裝置22、訪問處理部23、塊管理部24、緩存25、備份處理部26、日志管理部27和復(fù)原部28。訪問處理部23、塊管理部24、備份處理部26、日志管理部27及復(fù)原部28通過計算機執(zhí)行程序來實現(xiàn)。訪問處理部23、塊管理部24、備份處理部26、日志管理部27及復(fù)原部28的一部分或全部也可以通過硬件實現(xiàn)。
[0025]數(shù)據(jù)庫裝置10將數(shù)據(jù)庫中包含的數(shù)據(jù)集合劃分為多個塊而管理。多個塊分別被存儲到易失性存儲器21及儲存裝置22的至少一方中。
[0026]易失性存儲器21是計算機所具備的存儲器裝置,當(dāng)被供給電源時能夠存儲數(shù)據(jù),但如果電源的供給停止則數(shù)據(jù)消失。儲存裝置22當(dāng)被供給電源時進行數(shù)據(jù)的寫入及讀出,即使電源的供給停止,數(shù)據(jù)也不消失。儲存裝置22例如是硬盤驅(qū)動器裝置等連接在計算機的內(nèi)部或外部的非易失性的存儲裝置。
[0027]此外,儲存裝置22將備份時刻下的多個塊的各自的數(shù)據(jù)存儲。儲存裝置22作為一例而將多個塊的各自的數(shù)據(jù)鏡像存儲。另外,備份時刻例如按照事先確定的間隔而被設(shè)定。
[0028]另外,多個塊的各自的數(shù)據(jù)被向儲存裝置22內(nèi)的備份文件寫出。備份文件分別對應(yīng)于備份時刻而生成。
[0029]此外,儲存裝置22將表示數(shù)據(jù)集合的變更的履歷的日志存儲。日志也可以是接收到的訪問請求的履歷。
[0030]另外,日志被向儲存裝置22內(nèi)的日志文件寫入。日志文件按照備份時刻與接下來的備份時刻之間的期間生成。[0031 ] 訪問處理部23執(zhí)行與對于多個塊各自的訪問請求相對應(yīng)的處理。訪問處理部23作為一例,在接收到參照請求的情況下,從存儲在易失性存儲器21中的參照請求的對象的塊,將對象的數(shù)據(jù)讀出并返送。此外,訪問處理部23作為一例,在接收到更新請求的情況下,將存儲在易失性存儲器21中的更新請求的對象的塊中的對象的數(shù)據(jù)更新。進而,訪問處理部23在接收到更新請求的情況下,向日志管理部27發(fā)送命令,將日志向日志文件寫入。
[0032]塊管理部24管理多個塊的記錄位置,以將多個塊分別存儲到易失性存儲器21及儲存裝置22的至少一方中。具體而言,塊管理部24控制各個塊的記錄位置,以盡可能將多個塊全部存儲到易失性存儲器21中。
[0033]但是,塊管理部24如圖2所示,在不能將多個塊全部存儲到易失性存儲器21中的情況下(例如易失性存儲器21的容量比多個塊的整體的數(shù)據(jù)量小的情況下等),將多個塊中的一部分向儲存裝置22存儲。
[0034]此外,塊管理部24在被請求訪問的塊沒有存儲在易失性存儲器21中的情況下,以易失性存儲器21的空閑容量比事先確定的量大為條件,將被請求訪問的塊的數(shù)據(jù)從儲存裝置22向易失性存儲器21讀入。此外,塊管理部24在被請求訪問的塊沒有存儲在易失性存儲器21中、并且易失性存儲器21的空閑容量是事先確定的量以下的情況下,將存儲在易失性存儲器21中的某個塊的數(shù)據(jù)向儲存裝置22寫出。然后,塊管理部24將被請求訪問的塊的數(shù)據(jù)從儲存裝置22向易失性存儲器21讀入。
[0035]另外,塊管理部24在將塊向儲存裝置22寫出的情況下,將數(shù)據(jù)向儲存裝置22的備份文件寫出。此外,塊管理部24在接受到更新請求的情況下、接受到更新請求的對象的塊的數(shù)據(jù)還沒有被寫入到備份文件中的情況下,將該塊的更新前的數(shù)據(jù)寫出到備份文件中之后,將數(shù)據(jù)更新。
[0036]此外,塊管理部24管理圖3所示那樣的、關(guān)于多個塊中各個塊的屬性信息。屬性信息包括最終備份時刻、最終參照時刻、臟標(biāo)志(dirty flag)、閂鎖標(biāo)志及表示記錄位置的指針。
[0037]所謂最終備份時刻,是最后將數(shù)據(jù)讀出的備份時刻。所謂最終參照時刻,表示最后對包括更新請求的參照請求進行處理的時刻。所謂臟標(biāo)志,表示在最后將數(shù)據(jù)寫出后是否進行了更新。在本例中,臟標(biāo)志在最后將數(shù)據(jù)寫出后進行了更新的情況下被設(shè)為“1”,在最后將數(shù)據(jù)寫出后沒有進行更新的情況下被設(shè)為“O”。
[0038]閂鎖標(biāo)志表示是否是更新處理中。在本例中,閂鎖標(biāo)志在是更新處理中的情況下被設(shè)為“1”,在不是更新處理中的情況下被設(shè)為“O”。表示記錄位置的指針表示記錄有對象塊的易失性存儲器21或儲存裝置22上的記錄位置(例如地址)。
[0039]緩存25在塊管理部24將塊從易失性存儲器21向儲存裝置22逐出的情況下,將存儲在易失性存儲器21中的塊暫時存儲。由此,緩存25能夠在短期間中生成用來將塊從儲存裝置22向易失性存儲器21讀入的、易失性存儲器21上的空閑容量。
[0040]備份處理部26執(zhí)行多個塊的備份處理。具體而言,備份處理部26將多個塊的各自的備份時刻的數(shù)據(jù)向儲存裝置22的備份文件寫出。在此情況下,備份處理部26將多個塊中的還沒有被寫出到儲存裝置22中的塊的數(shù)據(jù)寫出。例如,備份處理部26按照每個塊依次選擇,將對應(yīng)的塊的備份時刻的數(shù)據(jù)以還沒有被寫出到儲存裝置22的備份文件中為條件而寫出。
[0041]例如,備份處理部26如圖4所示,生成與多個備份時刻T1,T2,T3,…分別對應(yīng)的備份文件。并且,備份處理部26將各個備份時刻Tl,Τ2,Τ3,…下的多個塊的數(shù)據(jù)向?qū)?yīng)的備份文件寫出。
[0042]日志管理部27執(zhí)行多個塊的日志的記錄處理。具體而言,日志管理部27將表示數(shù)據(jù)集合的變更的履歷的日志向日志文件寫入。日志也可以是接收到的訪問請求的履歷。在本例中,日志管理部27對應(yīng)于從訪問處理部23接收到命令,而將日志向日志文件寫入。
[0043]例如,日志管理部27如圖4所示,按照備份時刻與備份時刻之間的期間,生成日志文件。并且,日志管理部27將備份時刻與備份時刻之間的期間的日志向?qū)?yīng)的日志文件寫入。
[0044]復(fù)原部28在起動時或故障發(fā)生后的復(fù)原時,將備份文件及日志文件讀出,將多個塊的各自的數(shù)據(jù)恢復(fù)。具體而言,復(fù)原部28將多個塊的全部數(shù)據(jù)寫出完成的備份文件中的、最新的備份時刻的備份文件讀出,將多個塊的全部的數(shù)據(jù)恢復(fù)。接著,復(fù)原部28將從能夠?qū)?shù)據(jù)恢復(fù)的備份時刻起到關(guān)閉時或故障發(fā)生時為止的日志依次再執(zhí)行。由此,復(fù)原部28能夠?qū)㈥P(guān)閉時或故障發(fā)生之前的多個塊的數(shù)據(jù)恢復(fù)。
[0045]圖5是用來說明由塊管理部24及備份處理部26進行的、將塊的數(shù)據(jù)向備份文件寫出的處理的圖。
[0046]設(shè)某個任意的備份時刻為第I備份時刻Tl,設(shè)第I備份時刻Tl的接下來的備份時刻為第2備份時刻Τ2。此外,設(shè)第2備份時刻Τ2的接下來的備份時刻為第3備份時刻Τ3。
[0047]此外,設(shè)保存第I備份時刻Tl下的塊的數(shù)據(jù)的備份文件為第I備份文件F1。此夕卜,設(shè)保存第2備份時刻Τ2下的塊的數(shù)據(jù)的備份文件為第2備份文件F2。
[0048]在此情況下,在從第I備份時刻Tl到第2備份時刻Τ2之間,備份處理部26將第I備份時刻Tl下的多個塊的各自的數(shù)據(jù),按照每個塊依次向儲存裝置22內(nèi)的第I備份文件Fl寫出。在此情況下,備份處理部26按照每個塊判斷是否被寫出到第I備份文件Fl中,以還沒有被塊管理部24寫出到第I備份文件Fl中為條件,向儲存裝置22寫出。S卩,備份處理部26對于已經(jīng)由塊管理部24將第I備份時刻Tl的數(shù)據(jù)寫出到第I備份文件Fl中的塊,不進行向儲存裝置22的寫出。
[0049]此外,在從第2備份時刻Τ2到第3備份時刻Τ3之間,備份處理部26將第2備份時刻Τ2下的多個塊的各自的數(shù)據(jù),以還沒有被塊管理部24寫出到第2備份文件F2中為條件,按照每個塊依次向儲存裝置22內(nèi)的第2備份文件F2寫出。
[0050]另外,備份處理部26以不給訪問處理部23的處理帶來影響的后臺方式將塊的數(shù)據(jù)向儲存裝置22寫出。所謂后臺方式下的處理,例如在數(shù)據(jù)庫裝置10具備多個CPU(Central Processing Unit)的情況下,是使用不執(zhí)行與訪問請求對應(yīng)的處理的一部分的CPU而進行的處理。此外,所謂后臺方式下的處理,例如在CPU進行了時間劃分處理的情況下,是使用不執(zhí)行與訪問請求對應(yīng)的處理的時間帶而進行的處理。
[0051]塊管理部24對應(yīng)于接受到訪問請求,而執(zhí)行寫出處理P1、指針改寫處理P2、第I逐出處理P3、第2逐出處理P4或第3逐出處理P5。
[0052]塊管理部24作為寫出處理Pl而執(zhí)行將被請求更新的塊的更新前的數(shù)據(jù)向第I備份文件Fl寫出的處理。塊管理部24在第I備份時刻Tl之后且第2備份時刻T2之前被請求更新的情況下、在被請求更新的塊的數(shù)據(jù)沒有被寫出到第I備份文件Fl中的情況下,執(zhí)行該寫出處理P1。
[0053]由此,塊管理部24能夠在由備份處理部26進行備份之前不待機地執(zhí)行更新處理。此外,由于備份處理部26也可以對被請求更新的塊不進行備份處理,所以能夠減少向儲存裝置22的訪問。
[0054]塊管理部24作為指針改寫處理P2,對存儲在易失性存儲器21中的多個塊中的、被寫出到第I備份文件Fl中且在寫出后沒有被更新的第I類型的塊,執(zhí)行將表示記錄位置的指針變更為第I備份文件Fl上的記錄位置的處理。塊管理部24在第I備份時刻Tl之后且第2備份時刻T2之前被請求訪問的情況下、被請求訪問的塊沒有存儲在易失性存儲器21中并且易失性存儲器21的空閑容量是事先確定的量以下的情況下,執(zhí)行該指針改寫處理P2。進而,塊管理部24也可以以在一定期間中沒有被請求參照為條件,對第I類型的塊執(zhí)行指針改寫處理P2。
[0055]由此,塊管理部24在被請求訪問的塊沒有存儲在易失性存儲器21中的情況下不進行對儲存裝置22的訪問,能夠在易失性存儲器21中生成空閑容量。此外,塊管理部24通過還以在一定期間中沒有被請求參照為條件,能夠?qū)⒆罱徽埱笤L問的可能性較小的塊優(yōu)先從易失性存儲器21刪除。
[0056]此外,塊管理部24作為第I逐出處理P3,對于存儲在易失性存儲器21中的多個塊中的、沒有被寫入到第I備份文件Fl中的第2類型的塊,執(zhí)行將數(shù)據(jù)向第I備份文件Fl寫出并將表示記錄位置的指針變更為第I備份文件Fl上的記錄位置的處理。塊管理部24在不能檢測到第I類型的塊的情況下執(zhí)行該第I逐出處理P3。進而,塊管理部24也可以以在一定期間中沒有被請求參照為條件,對第2類型的塊執(zhí)行該第I逐出處理P3。
[0057]由此,塊管理部24能夠?qū)⒂蓚浞萏幚聿?6向某個儲存裝置22寫出的塊代替?zhèn)浞萏幚聿?6而向儲存裝置22寫出。結(jié)果,塊管理部24能夠減少對于儲存裝置22的重復(fù)的訪問。
[0058]此外,塊管理部24作為第2逐出處理P4,對于存儲在易失性存儲器21中的多個塊中的、被寫出到第I備份文件Fl中并且在寫出后被更新的第3類型的塊,執(zhí)行將數(shù)據(jù)向第2備份文件F2寫出并將表示記錄位置的指針變更為第2備份文件F2上的記錄位置的處理。塊管理部24在不能檢測到第I類型的塊及第2類型的塊的情況下執(zhí)行該第2逐出處理P4。進而,塊管理部24也可以以在一定期間中沒有被請求參照為條件,對第3類型的塊執(zhí)行第2逐出處理P4。
[0059]由此,塊管理部24能夠?qū)⒂锌赡苡蓚浞萏幚聿?6向第2備份文件F2寫出的塊,代替?zhèn)浞萏幚聿?6而事先向儲存裝置22寫出。結(jié)果,塊管理部24能夠減少對于儲存裝置22重復(fù)的訪問。
[0060]此外,塊管理部24作為第3逐出處理P5,執(zhí)行將存儲在易失性存儲器21中的多個塊中的某個第4塊的數(shù)據(jù)向第2備份文件F2寫出并將表示第4塊的記錄位置的指針變更為第2備份文件F2上的記錄位置的處理。塊管理部24在第I類型的塊、第2類型的塊及第3類型的塊的哪個都不能檢測到的情況下執(zhí)行該第3逐出處理P5。在此情況下,塊管理部24即使是在一定期間中被請求參照的塊也執(zhí)行第3逐出處理P5。
[0061]另外,塊管理部24作為第3逐出處理P5,也可以代替向第2備份文件F2寫出而將第4塊向儲存裝置22上的其他位置寫出。例如,塊管理部24作為第3逐出處理P5,也可以向儲存裝置22上的作為易失性存儲器21而虛擬動作的虛擬存儲器區(qū)域?qū)懗龅?塊。在此情況下,塊管理部24也可以不使表示第4塊的記錄位置的指針從易失性存儲器21上變更。
[0062]圖6是表示備份處理部26的處理流程的圖。備份處理部26每當(dāng)成為事先確定的備份時刻,就以后臺方式執(zhí)行以下的步驟Sll到步驟S16的處理。
[0063]首先,在步驟Sll與步驟S16之間,備份處理部26按照每個塊執(zhí)行循環(huán)處理。在循環(huán)處理內(nèi),首先,在步驟S12中,備份處理部26參照對象塊的屬性信息的最終備份時刻,判斷對象塊是否已經(jīng)被塊管理部24寫出到對應(yīng)的備份文件中。在對象塊已經(jīng)寫出到對應(yīng)的備份文件中的情況下(步驟S12的是),備份處理部26將處理向步驟S16前進。
[0064]在對象塊尚未完成寫入到對應(yīng)的備份文件中的情況下(步驟S12的否),在步驟S13中,備份處理部26將對象塊的屬性信息的閂鎖標(biāo)志改寫為“I”。接著,在步驟S14中,備份處理部26將對象塊的數(shù)據(jù)以后臺方式向儲存裝置22上的對應(yīng)的備份文件寫出。
[0065]如果步驟S14的寫出結(jié)束,則在步驟S15中,備份處理部26將對象塊的屬性信息的閂鎖標(biāo)志改寫為“O”。并且,備份處理部26將處理向步驟S16前進。
[0066]在步驟S16中,備份處理部26在沒有對多個塊的全部執(zhí)行處理的情況下將處理向步驟Sll返回。在對于多個塊的全部執(zhí)行了處理的情況下,備份處理部26結(jié)束本流程的處理。
[0067]通過以上的處理,備份處理部26能夠?qū)浞輹r刻的多個塊各自的數(shù)據(jù)按照每個塊依次向儲存裝置22內(nèi)的對應(yīng)的備份文件寫出。并且,備份處理部26對于已經(jīng)由塊管理部24寫出到備份文件中的塊可以不進行寫出處理,所以能夠減少儲存裝置22之間的訪問。
[0068]圖7是表示受理了訪問請求的情況下的塊管理部24的處理流程的圖。塊管理部24每當(dāng)訪問處理部23從外部接收訪問請求時,就執(zhí)行以下的步驟S21到步驟S31的處理。
[0069]首先,在步驟S21中,塊管理部24判斷訪問請求的對象的塊是否存儲在易失性存儲器21中。在存儲在易失性存儲器21中的情況下(步驟S21的是),塊管理部24將處理向步驟S25前進。在沒有存儲在易失性存儲器21中的情況下(步驟S21的否),塊管理部24將處理向步驟S22前進。
[0070]在步驟S22中,塊管理部24判斷在易失性存儲器21中是否有事先確定的容量以上的空閑容量。更具體地講,塊管理部24判斷在易失性存儲器21中是否有能夠追加存儲新的塊的大小的空閑容量。在有空閑容量的情況下(步驟S22的是),塊管理部24將處理向步驟S24前進。
[0071]在沒有空閑容量的情況下(步驟S22的否),在步驟S23中,塊管理部24執(zhí)行將易失性存儲器21的其他塊向儲存裝置22逐出的處理。另外,關(guān)于步驟S23的逐出處理的詳細情況在圖8中進一步說明。塊管理部24如果結(jié)束步驟S23的處理,則將處理向步驟S24
、產(chǎn).、rr.目U進。
[0072]在步驟S24中,塊管理部24將訪問請求的對象的塊從儲存裝置22向易失性存儲器21讀入。由此,塊管理部24能夠使訪問處理部23執(zhí)行對于訪問請求的處理。
[0073]接著,在步驟S25中,塊管理部24判斷訪問請求是參照處理(B卩,不進行數(shù)據(jù)的追力口、變更的處理)、還是更新處理(即,進行數(shù)據(jù)的追加、變更的處理)。
[0074]在是參照處理的情況下(步驟S25的參照),塊管理部24將處理向步驟S26前進。在步驟S26中,塊管理部24使訪問處理部23執(zhí)行對應(yīng)于訪問請求的參照處理,并將對象塊的屬性信息的最終參照時刻改寫。并且,塊管理部24如果結(jié)束步驟S26的處理,則本流程結(jié)束。
[0075]在是更新處理的情況下(步驟S25的更新),在步驟S27中,塊管理部24將對象塊的屬性信息的閂鎖標(biāo)志改寫為“I”。接著,在步驟S28中,塊管理部24參照對象塊的屬性信息的最終備份時刻,判斷對象塊是否已寫出到比當(dāng)前的時刻靠前的最近的備份時刻的備份文件中。
[0076]在對象塊已寫出到對應(yīng)的備份文件中的情況下(步驟S28的是),塊管理部24將處理向步驟S30前進。在對象塊尚未完成寫入到對應(yīng)的備份文件中的情況下(步驟S28的否),塊管理部24將處理向步驟S29前進。
[0077]在步驟S29中,塊管理部24執(zhí)行寫出處理Pl。即,塊管理部24執(zhí)行將對象塊的數(shù)據(jù)向儲存裝置22上的、比當(dāng)前的時刻靠前且最近的備份時刻的備份文件中寫出的處理。由此,塊管理部24在被請求更新的塊的數(shù)據(jù)還沒有被寫出到備份文件中的情況下,將更新前的塊的數(shù)據(jù)向備份文件寫出。
[0078]進而,塊管理部24如果寫出結(jié)束,則將對象塊的屬性信息的最終備份時刻改寫。如果結(jié)束步驟S29的處理,則塊管理部24將處理向步驟S30前進。
[0079]在步驟S30中,塊管理部24使訪問處理部23執(zhí)行對應(yīng)于訪問請求的更新處理。與此同時,塊管理部24將對象塊的屬性信息的最終參照時刻改寫。進而,塊管理部24將表示在寫出到備份文件中后進行了更新的臟標(biāo)志改寫為“I”。
[0080]接著,在步驟S31中,塊管理部24將對象塊的屬性信息的閂鎖標(biāo)志改寫為“O”。并且,塊管理部24如果結(jié)束步驟S31的處理,則本流程結(jié)束。
[0081]如以上這樣,塊管理部24在被請求更新的塊的數(shù)據(jù)沒有被寫出到備份文件中的情況下,能夠?qū)⒈徽埱蟾碌膲K的更新前的數(shù)據(jù)寫出到備份文件后進行更新。
[0082]由此,塊管理部24能夠在被備份前不待機地執(zhí)行更新處理。此外,塊管理部24由于對被請求更新的塊而言,不使備份處理部26進行備份處理,所以能夠減少與儲存裝置22之間的訪問。
[0083]圖8是表示圖7的步驟S23的處理流程的圖。塊管理部24在圖7的步驟S23中執(zhí)行以下的步驟S41?步驟S55的處理。
[0084]塊管理部24首先對一定數(shù)量的塊分別執(zhí)行步驟S41到步驟S43之間的循環(huán)處理。這里,一定數(shù)量的塊是,存儲在易失性存儲器21中的多個塊的全部或一部分的塊。
[0085]在循環(huán)處理內(nèi)的步驟S42中,塊管理部24確認(rèn)對象塊的屬性信息。更具體地講,塊管理部24如圖9所示,參照屬性信息的最終參照時間、最終備份時刻及臟標(biāo)志,檢測是否存在第I類型、第2類型及第3類型的塊。
[0086]第I類型的塊是從當(dāng)前時刻到一定時間前沒有參照請求(也包括更新請求)、向比當(dāng)前的時刻靠前的最近的備份時刻的備份文件的寫出完成、并且臟標(biāo)志是“O”的塊。此外,第2類型的塊是從當(dāng)前時刻到一定時間前沒有參照請求(也包括更新請求)、向比當(dāng)前的時刻靠前的最近的備份時刻的備份文件的寫出沒有完成的塊。第3類型的塊是從當(dāng)前時刻到一定時間前沒有參照請求(也包括更新請求)、向比當(dāng)前的時刻靠前的最近的備份時刻的備份文件的寫出完成、并且臟標(biāo)志是“ I ”的塊。
[0087]并且,塊管理部24如果對一定數(shù)量的塊的全部完成屬性信息的確認(rèn),則將處理向步驟S44前進。
[0088]在步驟S44中,塊管理部24判斷在一定的塊中是否有第I類型的塊。在有第I類型的塊的情況下(步驟S44的是),在步驟S45中,塊管理部24判斷閂鎖標(biāo)志是否是“I”。塊管理部24在閂鎖標(biāo)志是“I”的情況下(步驟S45的是),將處理向步驟S44返回,再次判斷是否有第I類型的塊。
[0089]在有第I類型的塊、該塊的閂鎖標(biāo)志不是“I”情況下(步驟S45的否),塊管理部24執(zhí)行指針改寫處理P2。即,塊管理部24將表示該塊的屬性信息的記錄位置的指針,從易失性存儲器21上變更為儲存裝置22上的備份文件內(nèi)的記錄位置。
[0090]通過執(zhí)行這樣的指針改寫處理P2,塊管理部24僅進行將已經(jīng)完成向備份文件的寫出的塊存儲到儲存裝置22中的處理,所以能夠不發(fā)生儲存裝置22之間的訪問而在易失性存儲器21中生成空閑容量。
[0091]在一定數(shù)量的塊中沒有第I類型的塊或第I類型的塊的閂鎖標(biāo)志是“I”的情況下(步驟S44的否),塊管理部24將處理向步驟S47前進。
[0092]在步驟S47中,塊管理部24判斷在一定的塊中是否有第2類型的塊。在有第2類型的塊的情況下(步驟S47的是),在步驟S48中,塊管理部24判斷閂鎖標(biāo)志是否是“I”。塊管理部24在閂鎖標(biāo)志是“I”的情況下(步驟S48的是),將處理向步驟S47返回,再次判斷是否有第2類型的塊。
[0093]在有第2類型的塊、該塊的閂鎖標(biāo)志不是“ I ”的情況下(步驟S48的否),在步驟S49中,塊管理部24執(zhí)行第I逐出處理P3。S卩,塊管理部24將該塊的數(shù)據(jù)向儲存裝置22上的比當(dāng)前的時刻靠前的最近的備份時刻的備份文件寫出。與此同時,塊管理部24將該塊中的表示屬性信息的記錄位置的指針,從易失性存儲器21上變更為儲存裝置22上的備份文件內(nèi)的記錄位置。
[0094]通過執(zhí)行這樣的第I逐出處理P3,塊管理部24在數(shù)據(jù)還沒有被寫出到備份文件中的情況下,能夠代替?zhèn)浞萏幚聿?6而將該塊的數(shù)據(jù)向備份文件寫出。由此,塊管理部24能夠減少與儲存裝置22之間的訪問。
[0095]在一定數(shù)量的塊中沒有第2類型的塊、或第2類型的塊的閂鎖標(biāo)志是“I”的情況下(步驟S47的否),塊管理部24將處理向步驟S50前進。
[0096]在步驟S50中,塊管理部24判斷在一定的塊中是否有第3類型的塊。在有第3類型的塊的情況下(步驟S50的是),在步驟S51中,塊管理部24判斷閂鎖標(biāo)志是否是“I”。塊管理部24在閂鎖標(biāo)志是“I”的情況下(步驟S51的是),將處理向步驟S50返回,再次判斷是否有第3類型的塊。
[0097]在有第3類型的塊、該塊的閂鎖標(biāo)志不是“I”的情況下(步驟S51的否),在步驟S52中,塊管理部24執(zhí)行第2逐出處理P4。S卩,塊管理部24將該塊的數(shù)據(jù)向比當(dāng)前的時刻靠后且最近的備份時刻的備份文件寫出。與此同時,塊管理部24將該塊中的表示屬性信息的記錄位置的指針,從易失性存儲器21上變更為儲存裝置22上的備份文件內(nèi)的記錄位置。
[0098]這樣,塊管理部24對于數(shù)據(jù)已經(jīng)被寫入到比當(dāng)前的時刻靠前的備份文件中的塊,能夠?qū)?shù)據(jù)事先寫出到備份處理部26將來要寫出的備份文件中。由此,塊管理部24在將來也可以不執(zhí)行備份處理部26對于對象塊的備份處理,所以能夠減少與儲存裝置22之間的訪問。
[0099]在一定數(shù)量的塊中沒有第3類型的塊、或第3類型的塊的閂鎖標(biāo)志是“I”的情況下(步驟S50的否),塊管理部24將處理向步驟S53前進。
[0100]在步驟S53中,塊管理部24從一定的塊中選擇某I個塊。這里,塊管理部24選擇不是第I類型到第3類型的任一種的塊(第4類型)。S卩,塊管理部24選擇在一定時間前有參照請求(也包括更新請求)的塊。
[0101 ] 在選擇某個塊時,在步驟S54中,塊管理部24判斷閂鎖標(biāo)志是否是“ I ”。塊管理部24在閂鎖標(biāo)志是“I”的情況下(步驟S54的是),將處理向步驟S53返回,再次選擇其他塊。
[0102]在選擇了閂鎖標(biāo)志不是“I”的塊的情況下(步驟S54的否),在步驟S55中,塊管理部24執(zhí)行第3逐出處理P5。S卩,塊管理部24將數(shù)據(jù)向比當(dāng)前的時刻靠后的最近的備份時刻的備份文件寫出。與此同時,塊管理部24將該塊中的表示屬性信息的記錄位置的指針,變更為儲存裝置22上的備份文件內(nèi)的記錄位置。
[0103]另外,在步驟S55中,塊管理部24也可以將該塊的數(shù)據(jù)向儲存裝置22上的不是備份文件的區(qū)域?qū)懗?。例如,塊管理部24也可以將塊的數(shù)據(jù)向儲存裝置22上的虛擬存儲器區(qū)域?qū)懗?。在此情況下,塊管理部24也可以不將表示第4塊的記錄位置的指針從易失性存儲器21上變更。塊管理部24通過向儲存裝置22上的虛擬存儲器區(qū)域?qū)懗觯瑥亩谠俅螌K有訪問請求的情況下,能夠比向備份文件寫出的情況更高速地與儲存裝置22訪問。
[0104]并且,塊管理部24在結(jié)束步驟S46、步驟S49、步驟S52或步驟S55的處理時,則將處理向圖7的流程返回。
[0105]如以上這樣,有關(guān)本實施方式的數(shù)據(jù)庫裝置10避免了重復(fù)進行如下處理,S卩:將不能存儲到易失性存儲器21中的一部分的多個塊,向儲存裝置22存放(日語:退避)的處理:以及,由備份處理部26將多個塊的數(shù)據(jù)向儲存裝置22備份的處理。由此,數(shù)據(jù)庫裝置10能夠減少與儲存裝置22之間的訪問而使響應(yīng)速度高速化。
[0106]此外,由本實施方式的數(shù)據(jù)庫裝置10執(zhí)行的程序以可安裝的形式或可執(zhí)行的形式的文件的方式,記錄到 CD — ROM、軟盤(FD)、CD — R、DVD (Digital Versatile Disk)等可由計算機讀取的記錄介質(zhì)中而被提供。
[0107]此外,也可以構(gòu)成為,將由本實施方式的數(shù)據(jù)庫裝置10執(zhí)行的程序保存到連接在因特網(wǎng)等網(wǎng)絡(luò)上的計算機上,通過經(jīng)由網(wǎng)絡(luò)下載來提供。此外,也可以構(gòu)成為,將由本實施方式的數(shù)據(jù)庫裝置10執(zhí)行的程序經(jīng)由因特網(wǎng)等網(wǎng)絡(luò)提供或分發(fā)。
[0108]此外,也可以構(gòu)成為,將本實施方式的數(shù)據(jù)庫裝置10的程序事先裝入到ROM等中而提供。
[0109]由本實施方式的數(shù)據(jù)庫裝置10執(zhí)行的程序為包括上述各部(訪問處理部23、塊管理部24、備份處理部26、日志管理部27及復(fù)原部28)的模組結(jié)構(gòu),通過作為實際的硬件,由CPU (處理器)從上述存儲介質(zhì)讀出程序并執(zhí)行,從而將上述各部裝載到主存儲裝置上,在主存儲裝置上生成訪問處理部23、塊管理部24、備份處理部26、日志管理部27及復(fù)原部28。
[0110]說明了本發(fā)明的一些實施方式,但這些實施方式是作為例子提示的,并不意味著限定發(fā)明的范圍。這些新的實施方式能夠以其他各種各樣的形態(tài)實施,在不脫離發(fā)明的主旨的范圍內(nèi)能夠進行各種省略、替換、變更。這些實施方式及其變形包含在發(fā)明的范圍及主旨中,并且包含在權(quán)利要求書所記載的發(fā)明和其等價的范圍中。
[0111]標(biāo)號說明
[0112]10數(shù)據(jù)庫裝置
[0113]21易失性存儲器
[0114]22儲存裝置
[0115]23訪問處理部
[0116]24塊管理部
[0117]25緩存
[0118]26備份處理部
[0119]27日志管理部
[0120]28復(fù)原部
【權(quán)利要求】
1.一種數(shù)據(jù)庫裝置,其特征在于, 具備: 易失性的第I存儲部; 非易失性的第2存儲部; 訪問處理部,對于將數(shù)據(jù)集合劃分為多個后的多個塊,分別執(zhí)行與訪問請求對應(yīng)的處理; 備份處理部,將上述多個塊的各自的備份時刻下的數(shù)據(jù)向上述第2存儲部寫出;以及 塊管理部,在被請求訪問的塊沒有存儲在上述第I存儲部中、并且上述第I存儲部的空閑容量是事先確定的量以下的情況下,將存儲在上述第I存儲部中的某個塊的數(shù)據(jù)向上述第2存儲部寫出,將被上述請求訪問的上述塊的數(shù)據(jù)從上述第2存儲部向上述第I存儲部讀入, 上述備份處理部, 將事先確定的第I備份時刻下的上述多個塊的各自的數(shù)據(jù),以還沒有被寫出到上述第2存儲部內(nèi)的第I備份文件中為條件,按照每個塊依次向上述第I備份文件寫出, 將從上述第I備份時刻起經(jīng)過了事先確定的時間后的第2備份時刻下的上述多個塊的各自的數(shù)據(jù),以還沒有被寫出到上述第2存儲部內(nèi)的第2備份文件中為條件,按照每個塊依次向上述第2備份文件寫出, 上述塊管理部在上述第I備份時刻之后且上述第2備份時刻之前被請求更新的情況下、被請求更新的塊的數(shù)據(jù)沒有被寫出到上述第I備份文件中的情況下,將被上述請求更新的塊的更新前的數(shù)據(jù)向上述第I備份文件寫出。
2.如權(quán)利要求1所述的數(shù)據(jù)庫裝置,其特征在于, 上述塊管理部在上述第I備份時刻之后且上述第2備份時刻之前被請求訪問的情況下、被請求訪問的塊沒有存儲在上述第I存儲部中并且上述第I存儲部的空閑容量是事先確定的量以下的情況下,對于存儲在上述第I存儲部的多個塊中的、被寫出到上述第I備份文件中并且在寫出后沒有被更新的第I塊,將表示記錄位置的指針變更為上述第I備份文件上的記錄位置。
3.如權(quán)利要求2所述的數(shù)據(jù)庫裝置,其特征在于, 上述塊管理部在不能夠檢測出上述第I塊的情況下,對于存儲在上述第I存儲部的多個塊中的、沒有被寫出到上述第I備份文件中的第2塊,將數(shù)據(jù)向上述第I備份文件寫出并將表示記錄位置的指針變更為上述第I備份文件上的記錄位置。
4.如權(quán)利要求3所述的數(shù)據(jù)庫裝置,其特征在于, 上述塊管理部在不能檢測出上述第I塊及上述第2塊的情況下,對于存儲在上述第I存儲部的多個塊中的、被寫出到上述第I備份文件中并且在寫出后被進行了更新的第3塊,將數(shù)據(jù)向上述第2備份文件寫出并將表示記錄位置的指針變更為上述第2備份文件上的記錄位置。
5.如權(quán)利要求4所述的數(shù)據(jù)庫裝置,其特征在于, 上述塊管理部還以在一定期間中沒有被請求參照為條件,對上述第I塊、上述第2塊或上述第3塊執(zhí)行處理。
6.如權(quán)利要求1所述的數(shù)據(jù)庫裝置,其特征在于, 上述備份處理部以不給上述訪問處理部的處理帶來影響的后臺方式,將上述塊的數(shù)據(jù)向上述第2存儲部寫出。
7.一種程序,用來使計算機作為數(shù)據(jù)庫裝置而發(fā)揮功能,上述數(shù)據(jù)庫裝置具備:對將數(shù)據(jù)集合劃分為多個后的多個塊進行存儲的易失性的第I存儲部;及非易失性的第2存儲部,其特征在于, 執(zhí)行: 訪問處理步驟,對于將數(shù)據(jù)集合劃分為多個后的多個塊,分別執(zhí)行與訪問請求對應(yīng)的處理; 備份處理步驟,將上述多個塊的各自的備份時刻下的數(shù)據(jù)向上述第2存儲部寫出;以及 塊管理步驟,在被請求訪問的塊沒有存儲在上述第I存儲部中、并且上述第I存儲部的空閑容量是事先確定的量以下的情況下,將存儲在上述第I存儲部中的某個塊的數(shù)據(jù)向上述第2存儲部寫出,將被上述請求訪問的上述塊的數(shù)據(jù)從上述第2存儲部向上述第I存儲部讀入; 在上述備份處理步驟中, 將事先確定的第I備份時刻下的上述多個塊的各自的數(shù)據(jù),以還沒有被寫出到上述第2存儲部內(nèi)的第I備份文件中為條件,按照每個塊依次向上述第I備份文件寫出, 將從上述第I備份時刻起經(jīng)過了事先確定的時間后的第2備份時刻下的上述多個塊的各自的數(shù)據(jù),以還沒有被寫出到上述第2存儲部內(nèi)的第2備份文件中為條件,按照每個塊依次向上述第2備份文件寫出, 在上述塊管理步驟中,在上述第I備份時刻之后且上述第2備份時刻之前被請求更新的情況下、被請求更新的塊的數(shù)據(jù)沒有被寫出到上述第I備份文件中的情況下,將被上述請求更新的塊的更新前的數(shù)據(jù)向上述第I備份文件寫出。
8.一種數(shù)據(jù)處理方法,是具備對將數(shù)據(jù)集合劃分為多個后的多個塊進行存儲的易失性的第I存儲部及非易失性的第2存儲部的數(shù)據(jù)庫裝置的數(shù)據(jù)處理方法,其特征在于, 包括: 訪問處理步驟,對于將數(shù)據(jù)集合劃分為多個后的多個塊,分別執(zhí)行與訪問請求對應(yīng)的處理; 備份處理步驟,將上述多個塊的各自的備份時刻下的數(shù)據(jù)向上述第2存儲部寫出;以及 塊管理步驟,在被請求訪問的塊沒有存儲在上述第I存儲部中、并且上述第I存儲部的空閑容量是事先確定的量以下的情況下,將存儲在上述第I存儲部中的某個塊的數(shù)據(jù)向上述第2存儲部寫出,將被上述請求訪問的上述塊的數(shù)據(jù)從上述第2存儲部向上述第I存儲部讀入; 在上述備份處理步驟中, 將事先確定的第I備份時刻下的上述多個塊的各自的數(shù)據(jù),以還沒有被寫出到上述第2存儲部內(nèi)的第I備份文件中為條件,按照每個塊依次向上述第I備份文件寫出, 將從上述第I備份時刻起經(jīng)過了事先確定的時間后的第2備份時刻下的上述多個塊的各自的數(shù)據(jù),以還沒有被寫出到上述第2存儲部內(nèi)的第2備份文件中為條件,按照每個塊依次向上述第2備份文件寫出, 在上述塊管理步驟中,在上述第I備份時刻之后且上述第2備份時刻之前被請求更新的情況下、被請求更新的塊的數(shù)據(jù)沒有被寫出到上述第I備份文件中的情況下,將被上述請求更新的塊的更新前的數(shù)據(jù)向上述第I備份文件寫出。
【文檔編號】G06F17/30GK104137100SQ201380003041
【公開日】2014年11月5日 申請日期:2013年3月4日 優(yōu)先權(quán)日:2013年3月4日
【發(fā)明者】服部雅一 申請人:株式會社東芝, 東芝解決方案株式會社