專利名稱:緩存數(shù)據(jù)庫數(shù)據(jù)組織方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)庫系統(tǒng)的體系結(jié)構(gòu)設(shè)計(jì)技術(shù)領(lǐng)域,涉及到數(shù)據(jù)庫物理數(shù)據(jù)組織技術(shù)領(lǐng)域,特別是涉及到一種緩存數(shù)據(jù)庫的數(shù)據(jù)組織方法。
背景技術(shù):
數(shù)據(jù)庫技術(shù)一直隨著計(jì)算的發(fā)展而不斷進(jìn)步,隨著智能移動(dòng)終端的普及,人們對數(shù)據(jù)實(shí)時(shí)處理和管理要求的不斷提高,嵌入式移動(dòng)實(shí)時(shí)數(shù)據(jù)庫越來越體現(xiàn)出其優(yōu)越性,從而被學(xué)界和業(yè)界所重視。
在實(shí)時(shí)應(yīng)用中,事務(wù)在運(yùn)行前的操作邏輯(操作類型、順序等)、數(shù)據(jù)集及其結(jié)構(gòu)、行為以及時(shí)間的相關(guān)性等都是可預(yù)分析的。然而,對磁盤數(shù)據(jù)庫而言,數(shù)據(jù)的I/O是造成事務(wù)執(zhí)行時(shí)間不確定、預(yù)報(bào)不準(zhǔn)確的關(guān)鍵因素。為此,要求以大內(nèi)存作為實(shí)時(shí)數(shù)據(jù)庫的主要存儲介質(zhì),使一個(gè)事務(wù)在活動(dòng)期間沒有I/O,以達(dá)到較準(zhǔn)確的預(yù)報(bào),從而滿足實(shí)時(shí)事務(wù)的定時(shí)限制。
因此,內(nèi)存數(shù)據(jù)庫是支持實(shí)時(shí)事務(wù)的最佳技術(shù),其本質(zhì)特征是其″主拷貝″或″工作版本″常駐內(nèi)存,即活動(dòng)事務(wù)只與實(shí)時(shí)內(nèi)存數(shù)據(jù)庫的內(nèi)存拷貝打交道。顯然,它要求較大的內(nèi)存量,但并不要求任何時(shí)刻整個(gè)數(shù)據(jù)庫都能存放在內(nèi)存,即內(nèi)存數(shù)據(jù)庫系統(tǒng)還是要處理I/O。
實(shí)時(shí)內(nèi)存數(shù)據(jù)庫的設(shè)計(jì)打破傳統(tǒng)磁盤數(shù)據(jù)庫的設(shè)計(jì)觀念,考慮內(nèi)存直接快速存取的特點(diǎn),以CPU和內(nèi)存空間的高效利用為目標(biāo)來重新設(shè)計(jì)開發(fā)各種策略與算法、技術(shù)、方法及機(jī)制。
實(shí)時(shí)事務(wù)要求系統(tǒng)能較準(zhǔn)確地預(yù)報(bào)事務(wù)的運(yùn)行時(shí)間,但對磁盤數(shù)據(jù)庫而言,由于磁盤存取、內(nèi)外存的數(shù)據(jù)傳遞、緩沖區(qū)管理、排隊(duì)等待及鎖的延遲等使得事務(wù)實(shí)際平均執(zhí)行時(shí)間與估算的最壞情況執(zhí)行時(shí)間相差很大。內(nèi)存數(shù)據(jù)庫將整個(gè)數(shù)據(jù)庫或其主要的″工作″部分放入內(nèi)存,使每個(gè)事務(wù)在執(zhí)行過程中沒有I/O,則為系統(tǒng)較準(zhǔn)確估算和安排事務(wù)的運(yùn)行時(shí)間,使之具有較好的動(dòng)態(tài)可預(yù)報(bào)性提供了有力的支持,同時(shí)也為實(shí)現(xiàn)事務(wù)的定時(shí)限制打下了基礎(chǔ)。
然而,在過去的二十年間,CPU速度的提高遠(yuǎn)遠(yuǎn)地超過了內(nèi)存訪問速度的提高。內(nèi)存訪問因而逐漸地成為很多計(jì)算機(jī)應(yīng)用程序的性能瓶頸,包括需要較大內(nèi)存量的內(nèi)存數(shù)據(jù)庫。而且,隨著嵌入式硬件平臺技術(shù)的不斷進(jìn)步,如IntelXscale PXA 27x系列巧妙的設(shè)計(jì),使Data Cache可以配置為內(nèi)存使用,從而提供了進(jìn)一步大幅提高嵌入式數(shù)據(jù)庫實(shí)時(shí)性性能的硬件基礎(chǔ)。因此需要一種新的數(shù)據(jù)庫數(shù)據(jù)組織技術(shù),利用緩存的高速訪問性能,進(jìn)一步提高數(shù)據(jù)庫的實(shí)時(shí)性。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種用于緩存數(shù)據(jù)庫數(shù)據(jù)組織的方法。
本發(fā)明解決其技術(shù)問題采用的技術(shù)方案如下1)緩存數(shù)據(jù)庫空間結(jié)構(gòu)分層方法緩存數(shù)據(jù)庫的存儲空間是一個(gè)三層結(jié)構(gòu),各層結(jié)構(gòu)存儲不同的數(shù)據(jù)子集I.易失的處理器緩存,用以存放支持各事務(wù)的工作數(shù)據(jù),是緩存數(shù)據(jù)庫的工作版本,工作版本的數(shù)據(jù)是內(nèi)存版本數(shù)據(jù)中最為常用的數(shù)據(jù)子集;II.易失的內(nèi)存,用以存儲一些活動(dòng)的臨時(shí)性數(shù)據(jù),是緩存數(shù)據(jù)庫的臨時(shí)內(nèi)存版本,內(nèi)存版本的數(shù)據(jù)是外存版本的常用數(shù)據(jù)子集;III.非易失的外部存儲器,用來存放完整的數(shù)據(jù)庫數(shù)據(jù),還要存放用作恢復(fù)的數(shù)據(jù)庫備份。存儲在非易失的外部存儲器上的數(shù)據(jù)庫數(shù)據(jù)稱為緩存數(shù)據(jù)庫的外存版本;2)數(shù)據(jù)庫物理數(shù)據(jù)組織方法由于緩存數(shù)據(jù)庫存儲空間三層結(jié)構(gòu)的存儲介質(zhì)各不相同,所以三層結(jié)構(gòu)中物理數(shù)據(jù)的組織方法也有所不同I.工作版本,以緩存行作為基本單元,作為緩存空間分配和與內(nèi)存版本進(jìn)行數(shù)據(jù)交換的單位;II.內(nèi)存版本,存儲空間劃分為和外存單元塊大小相同的段,作為內(nèi)存空間分配和與外存版本進(jìn)行數(shù)據(jù)交換的單位,段內(nèi)進(jìn)而劃分為緩存行大小相同的行;III.外存版本,以輸入輸出的塊為基本單元組織數(shù)據(jù);3)緩存數(shù)據(jù)庫的數(shù)據(jù)裝入與交換方法I.數(shù)據(jù)初始裝入,數(shù)據(jù)庫啟動(dòng)時(shí),將使用頻率最高的數(shù)據(jù)裝載到緩存中,成為工作版本,頻率較高的數(shù)據(jù)裝載到內(nèi)存中成為內(nèi)存版本;II.緩存數(shù)據(jù)庫各層數(shù)據(jù)交換,在緩存數(shù)據(jù)庫運(yùn)行中,根據(jù)數(shù)據(jù)使用頻率的變化,各層間數(shù)據(jù)即時(shí)進(jìn)行交換。
本發(fā)明與背景技術(shù)相比,具有的有益的效果是本發(fā)明是一種基于預(yù)測和存儲介質(zhì)特征的數(shù)據(jù)組織方法,其主要功能是系統(tǒng)根據(jù)數(shù)據(jù)使用頻率預(yù)測數(shù)據(jù)在未來使用的可能性,并將頻繁數(shù)據(jù)裝入緩存,并根據(jù)數(shù)據(jù)的使用情況動(dòng)態(tài)地在各層次數(shù)據(jù)版本之間交換數(shù)據(jù)。
(1)提高緩存數(shù)據(jù)預(yù)測智能性。系統(tǒng)可以更加根據(jù)數(shù)據(jù)的歷史使用情況,生成工作版本數(shù)據(jù)集和內(nèi)存版本數(shù)據(jù)集,在系統(tǒng)啟動(dòng)之時(shí)就將它們相應(yīng)地加載入緩存和內(nèi)存,不必在需要時(shí)才進(jìn)行加載,并且可以使這些數(shù)據(jù)在一段時(shí)間之內(nèi)駐留在緩存和內(nèi)存之中。
(2)大幅提高頻繁數(shù)據(jù)訪問速度。系統(tǒng)可以讓使用最頻繁的數(shù)據(jù)常駐在CPU緩存之中,而不被替換。因此可以有效減少這些頻繁數(shù)據(jù)訪問的冷啟動(dòng)失配,從而提高了數(shù)據(jù)訪問的速度。
(3)動(dòng)態(tài)調(diào)整頻繁數(shù)據(jù)集。由于工作版本數(shù)據(jù)集和內(nèi)存版本數(shù)據(jù)集的確定很大程度上是由數(shù)據(jù)使用的頻繁程度所決定的,而在系統(tǒng)運(yùn)行過程中,數(shù)據(jù)使用的頻繁程度會發(fā)生變化,所以系統(tǒng)必須動(dòng)態(tài)地根據(jù)數(shù)據(jù)頻繁程度的變化來適時(shí)地調(diào)整頻繁數(shù)據(jù)集,也就是工作版本數(shù)據(jù)集和內(nèi)存版本數(shù)據(jù)集,以決定哪些數(shù)據(jù)應(yīng)該加載到緩存,哪些數(shù)據(jù)應(yīng)該加載到內(nèi)存。
圖1是總體流程圖;圖2是數(shù)據(jù)分層和數(shù)據(jù)組織示意圖;圖3是系統(tǒng)實(shí)施例列表LC示意圖;圖4是系統(tǒng)實(shí)施例列表LM示意圖;圖5是數(shù)據(jù)初始裝入流程圖;圖6是數(shù)據(jù)交換流程圖。
具體實(shí)施例方式
緩存數(shù)據(jù)庫數(shù)據(jù)組織方法的具體實(shí)現(xiàn)流程如下。
第一步緩存數(shù)據(jù)庫空間結(jié)構(gòu)分層。
根據(jù)緩存數(shù)據(jù)庫使用得三層存儲結(jié)構(gòu)易失的處理器緩存、易失的內(nèi)存、不易失的外存,數(shù)據(jù)在空間結(jié)構(gòu)上被分為相應(yīng)的三層,如圖2所示I.工作版本。存放在易失的處理器緩存之中,是緩存數(shù)據(jù)庫支持各事務(wù)的工作數(shù)據(jù)。工作版本的數(shù)據(jù)是內(nèi)存版本數(shù)據(jù)中最為常用的數(shù)據(jù)子集;II.內(nèi)存版本。存放在易失的內(nèi)存之中,是緩存數(shù)據(jù)庫一些活動(dòng)的臨時(shí)性數(shù)據(jù),內(nèi)存版本的數(shù)據(jù)是外存版本的常用數(shù)據(jù)子集;III.外存版本。存放在非易失的外部存儲器之中,是緩存數(shù)據(jù)庫完整的數(shù)據(jù),還包括用作恢復(fù)的數(shù)據(jù)庫備份。
第二步緩存數(shù)據(jù)庫物理數(shù)據(jù)組織。
由于緩存數(shù)據(jù)庫存儲空間三層結(jié)構(gòu)的存儲器不同,各種存儲器都有各自特征,所以各層結(jié)構(gòu)中物理數(shù)據(jù)的組織也依據(jù)存儲器的特征進(jìn)行相適應(yīng)的設(shè)計(jì),以最好地利用存儲器的優(yōu)點(diǎn)I.工作版本。CPU緩存以緩存行為單位從內(nèi)存進(jìn)行數(shù)據(jù)讀寫,所以工作版本的數(shù)據(jù)以緩存行作為基本單元進(jìn)行組織,作為緩存空間分配和與內(nèi)存版本進(jìn)行數(shù)據(jù)交換的單位。以Intel Xscale PXA 27x系列CPU為例,處理器的數(shù)據(jù)緩存行大小為32字節(jié),則緩存數(shù)據(jù)庫數(shù)據(jù)記錄應(yīng)該以4字節(jié),8字節(jié),16字節(jié)或32字節(jié)對齊,且每32字節(jié)組成一行,每一行有一個(gè)唯一的標(biāo)識符LID,LID是一個(gè)二元組<B,L>,其中B為此行所處的塊號,L為塊內(nèi)的行號。系統(tǒng)保持一個(gè)使用最頻繁的行的列表LC,如圖3所示。
II.內(nèi)存版本。采用區(qū)-段式組織基于關(guān)系數(shù)據(jù)模型,它將存儲空間邏輯地劃分為″分區(qū)″,每一分區(qū)存儲一個(gè)關(guān)系,物理上由若干″段″組成。一個(gè)段是內(nèi)存中一固定長度的連續(xù)區(qū)域,它相當(dāng)于″頁″,是內(nèi)外存I/O的單位,也是內(nèi)存空間分配及內(nèi)存數(shù)據(jù)庫恢復(fù)的單位。每個(gè)段對應(yīng)的數(shù)據(jù)都有一個(gè)唯一的標(biāo)識符BID,用<B>表示,B為此行所處的段號。系統(tǒng)維護(hù)一個(gè)使用最頻繁的段的列表LM,如圖4所示。
III.外存版本。以輸入輸出的塊為基本單元組織數(shù)據(jù)。
第三步緩存數(shù)據(jù)庫的數(shù)據(jù)裝入與交換。
影響緩存數(shù)據(jù)庫的數(shù)據(jù)裝入與交換的主要因素有數(shù)據(jù)本身及其事務(wù)的特征①數(shù)據(jù)易變性指其變更速率。不同數(shù)據(jù)有不同的變化速率,易變數(shù)據(jù)要頻繁更新。
②數(shù)據(jù)活躍性指存取頻率。應(yīng)該保證活躍數(shù)據(jù)具有更大的可存取性。
③數(shù)據(jù)流行性指更新的及時(shí)性。流行數(shù)據(jù)必須保持與現(xiàn)實(shí)世界當(dāng)前真實(shí)狀態(tài)一致。
④數(shù)據(jù)相關(guān)性指多個(gè)數(shù)據(jù)經(jīng)常被一起使用的程度。當(dāng)裝入或交換數(shù)據(jù)時(shí),相關(guān)性強(qiáng)的數(shù)據(jù)應(yīng)同時(shí)裝入或交換。
⑤事務(wù)的特征這里只考慮影響數(shù)據(jù)裝入與交換的那些事務(wù)特征。首先是在嵌套事務(wù)中,父子事務(wù)的數(shù)據(jù)是共享的,故在進(jìn)行緩存和內(nèi)存裝入和與外存交換時(shí),必須注意到這一點(diǎn)。其次是實(shí)時(shí)事務(wù),其數(shù)據(jù)裝入的次序及時(shí)機(jī)必須有利于保證滿足其定時(shí)限制。再有,高優(yōu)先級事務(wù)的數(shù)據(jù)顯然應(yīng)留駐緩存和內(nèi)存,且不能交換出去。
(1)數(shù)據(jù)初始裝入。
緩存數(shù)據(jù)庫數(shù)據(jù)初始裝入包括內(nèi)存版本的數(shù)據(jù)裝入和緩存版本的數(shù)據(jù)裝入,內(nèi)存版本的數(shù)據(jù)是外存版本的數(shù)據(jù)子集,從外存裝入內(nèi)存;緩存版本的數(shù)據(jù)是內(nèi)存版本的數(shù)據(jù)子集,從內(nèi)存裝入緩存。
緩存數(shù)據(jù)庫數(shù)據(jù)初始裝入時(shí),首先考慮的是事務(wù)的優(yōu)先級。優(yōu)先級高的事務(wù)先裝入內(nèi)存和緩存,或者不分優(yōu)先級而按調(diào)度策略,將先執(zhí)行的事務(wù)先裝入內(nèi)存和緩存;其次是數(shù)據(jù)的流行性,流行數(shù)據(jù)對應(yīng)的事務(wù)往往也是高優(yōu)先事務(wù);再次就是活躍性,存取頻率高的數(shù)據(jù)一般還是先要被存取的數(shù)據(jù);緊密相關(guān)的數(shù)據(jù)則隨時(shí)要考慮被使用。
數(shù)據(jù)初始裝入的具體過程如圖5所示①讀取系統(tǒng)維護(hù)的列表LM;②從列表LM依次獲得使用最頻繁的數(shù)據(jù)的段號,將這些段加載到事先分配的內(nèi)存段之中;③讀取系統(tǒng)維護(hù)的列表LC;④從列表LC依次獲得使用最頻繁的數(shù)據(jù)的段號以及行號,將這些行加載到事先分配的緩存行之中。
(2)數(shù)據(jù)交換。
由于工作版本數(shù)據(jù)集和內(nèi)存版本數(shù)據(jù)集的確定很大程度上是由數(shù)據(jù)使用的頻繁程度所決定的,而在系統(tǒng)運(yùn)行過程中,數(shù)據(jù)使用的頻繁程度會發(fā)生變化,所以系統(tǒng)必須動(dòng)態(tài)地根據(jù)數(shù)據(jù)頻繁程度的變化來適時(shí)地調(diào)整頻繁數(shù)據(jù)集,也就是工作版本數(shù)據(jù)集和內(nèi)存版本數(shù)據(jù)集,以決定哪些數(shù)據(jù)應(yīng)該加載到緩存,哪些數(shù)據(jù)應(yīng)該加載到內(nèi)存。
數(shù)據(jù)交換的具體過程如圖6所示①如果訪問的數(shù)據(jù)在緩存中,即在工作版本中,調(diào)整系統(tǒng)列表LC和LM;如果訪問的數(shù)據(jù)不在緩存中,則從內(nèi)存中訪問數(shù)據(jù),進(jìn)入②;②如果訪問的數(shù)據(jù)在內(nèi)存中,即在內(nèi)存版本中,調(diào)整系統(tǒng)列表LC和LM,并且如果LC發(fā)生變化,則在工作版本和內(nèi)存版本間進(jìn)行數(shù)據(jù)交換;如果訪問的數(shù)據(jù)不在內(nèi)存中,則從外存中訪問數(shù)據(jù),進(jìn)入③;③調(diào)整系統(tǒng)列表LC和LM,如果LM發(fā)生變化,則在外存版本和內(nèi)存版本間進(jìn)行數(shù)據(jù)交換;如果LC發(fā)生變化,則在工作版本和內(nèi)存版本間進(jìn)行數(shù)據(jù)交換。
本發(fā)明可用c,c++語言實(shí)施。
權(quán)利要求
1.一種緩存數(shù)據(jù)庫數(shù)據(jù)組織方法,其特征在于1)緩存數(shù)據(jù)庫空間結(jié)構(gòu)分層方法緩存數(shù)據(jù)庫的存儲空間是一個(gè)三層結(jié)構(gòu),各層結(jié)構(gòu)存儲不同的數(shù)據(jù)子集I.易失的處理器緩存,用以存放支持各事務(wù)的工作數(shù)據(jù),是緩存數(shù)據(jù)庫的工作版本,工作版本的數(shù)據(jù)是內(nèi)存版本數(shù)據(jù)中最為常用的數(shù)據(jù)子集;II.易失的內(nèi)存,用以存儲一些活動(dòng)的臨時(shí)性數(shù)據(jù),是緩存數(shù)據(jù)庫的臨時(shí)內(nèi)存版本,內(nèi)存版本的數(shù)據(jù)是外存版本的常用數(shù)據(jù)子集;III.非易失的外部存儲器,用來存放完整的數(shù)據(jù)庫數(shù)據(jù),還要存放用作恢復(fù)的數(shù)據(jù)庫備份。存儲在非易失的外部存儲器上的數(shù)據(jù)庫數(shù)據(jù)稱為緩存數(shù)據(jù)庫的外存版本;2)數(shù)據(jù)庫物理數(shù)據(jù)組織方法由于緩存數(shù)據(jù)庫存儲空間三層結(jié)構(gòu)的存儲介質(zhì)各不相同,所以三層結(jié)構(gòu)中物理數(shù)據(jù)的組織方法也有所不同I.工作版本,以緩存行作為基本單元,作為緩存空間分配和與內(nèi)存版本進(jìn)行數(shù)據(jù)交換的單位;II.內(nèi)存版本,存儲空間劃分為和外存單元塊大小相同的段,作為內(nèi)存空間分配和與外存版本進(jìn)行數(shù)據(jù)交換的單位,段內(nèi)進(jìn)而劃分為緩存行大小相同的行;III.外存版本,以輸入輸出的塊為基本單元組織數(shù)據(jù);3)緩存數(shù)據(jù)庫的數(shù)據(jù)裝入與交換方法I.數(shù)據(jù)初始裝入,數(shù)據(jù)庫啟動(dòng)時(shí),將使用頻率最高的數(shù)據(jù)裝載到緩存中,成為工作版本,頻率較高的數(shù)據(jù)裝載到內(nèi)存中成為內(nèi)存版本;II.緩存數(shù)據(jù)庫各層數(shù)據(jù)交換,在緩存數(shù)據(jù)庫運(yùn)行中,根據(jù)數(shù)據(jù)使用頻率的變化,各層間數(shù)據(jù)即時(shí)進(jìn)行交換。
全文摘要
本發(fā)明公開了一種緩存數(shù)據(jù)庫數(shù)據(jù)組織方法。它是通過采用處理器緩存可操作的硬件新特征,實(shí)現(xiàn)一種基于預(yù)測和存儲介質(zhì)特征的緩存數(shù)據(jù)庫數(shù)據(jù)組織,其主要功能是系統(tǒng)根據(jù)數(shù)據(jù)使用頻率預(yù)測數(shù)據(jù)在未來使用的可能性,將頻繁數(shù)據(jù)裝入緩存,大幅提高頻繁數(shù)據(jù)訪問速度。并能根據(jù)數(shù)據(jù)的使用情況動(dòng)態(tài)地在各層次數(shù)據(jù)版本之間交換數(shù)據(jù)。
文檔編號G06F12/08GK1831824SQ20061005018
公開日2006年9月13日 申請日期2006年4月4日 優(yōu)先權(quán)日2006年4月4日
發(fā)明者陳天洲, 嚴(yán)力科, 蔣寧, 陳學(xué)亮 申請人:浙江大學(xué)