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

一種基于稀疏文件的數(shù)據(jù)庫存儲模型的系統(tǒng)和方法

文檔序號:10617881閱讀:233來源:國知局
一種基于稀疏文件的數(shù)據(jù)庫存儲模型的系統(tǒng)和方法
【專利摘要】本實施例提供了一種數(shù)據(jù)庫存儲模型,利用稀疏文件的特點高效存儲和檢索數(shù)據(jù)。所述實施例提供了利用文件系統(tǒng)抽象層掩蓋磁盤空間的管理復(fù)雜性的數(shù)據(jù)庫算法,也為所述數(shù)據(jù)庫提供了保持多個數(shù)據(jù)庫對象的線性和連續(xù)的邏輯地址空間。一種實施例方法包括:在邏輯稀疏文件中預(yù)分配多個固定大小和固定偏移的連續(xù)區(qū)段。在接收到將數(shù)據(jù)庫對象寫入所述區(qū)段的命令時,在數(shù)據(jù)庫目錄中映射所述數(shù)據(jù)庫對象至所述區(qū)段。該方法還包括:與文件系統(tǒng)進行連接,以初始化存儲介質(zhì)空間而將所述數(shù)據(jù)庫對象寫入所述固定偏移的區(qū)段。
【專利說明】
一種基于稀疏文件的數(shù)據(jù)庫存儲模型的系統(tǒng)和方法
技術(shù)領(lǐng)域
[0001 ]本發(fā)明一般涉及數(shù)據(jù)庫系統(tǒng),以及在特定實施例中,涉及一種基于稀疏文件的數(shù)據(jù)庫存儲模型的系統(tǒng)和方法?!颈尘凹夹g(shù)】
[0002]傳統(tǒng)的數(shù)據(jù)庫服務(wù)器使用一個或多個系統(tǒng)文件存儲各個數(shù)據(jù)庫對象?;蛘?,一些模型在裸盤存儲基礎(chǔ)上建立統(tǒng)一的存儲管理。這兩種方法都各有利弊。對于存儲有眾多數(shù)據(jù)庫(database,DB)對象的大型數(shù)據(jù)庫管理系統(tǒng)(database management system,DBMS),例如,數(shù)據(jù)庫對象多達數(shù)十萬乃至數(shù)百萬,第一種模型性能較差或容易崩潰。后一種方法則需要扎實的推動力(時間上和資源上)以構(gòu)建、實施、和穩(wěn)定數(shù)據(jù)庫存儲層。兩種方法都能夠?qū)⒄麄€可用內(nèi)存分割為特定數(shù)據(jù)庫對象區(qū)域和共享元數(shù)據(jù)區(qū)域,以便高效和有機地訪問數(shù)據(jù)庫對象中的數(shù)據(jù)。數(shù)據(jù)庫采用單獨的文件表示每個數(shù)據(jù)庫對象(如表格、索引、觸發(fā)),可能需要幾千個文件表示一種典型數(shù)據(jù)庫,甚至幾百萬個文件表示一個巨型大規(guī)模并行處理 (massively parallel processing,MPP)數(shù)據(jù)庫。管理如此巨大的單獨文件的集合以及特別是并行創(chuàng)建和刪除文件的元數(shù)據(jù)密集型操作,并非易事,尤其是在分布式集群文件系統(tǒng)環(huán)境中。因此,需要一種改進的數(shù)據(jù)庫存儲模型以解決此類問題。
【發(fā)明內(nèi)容】

[0003]根據(jù)一實施例,一種數(shù)據(jù)庫系統(tǒng)引擎執(zhí)行的數(shù)據(jù)庫存儲操作方法包括:在邏輯稀疏文件中預(yù)分配多個固定大小和固定偏移的連續(xù)區(qū)段。在接收到將數(shù)據(jù)庫對象寫入所述區(qū)段的命令時,在數(shù)據(jù)庫目錄中映射所述數(shù)據(jù)庫對象至所述區(qū)段。該方法還包括:與文件系統(tǒng)進行連接,以初始化存儲介質(zhì)空間而將所述數(shù)據(jù)庫對象寫入所述固定偏移的區(qū)段。
[0004]根據(jù)另一實施例,一種數(shù)據(jù)庫系統(tǒng)引擎執(zhí)行的數(shù)據(jù)庫存儲操作方法包括:配置采集文件,所述采集文件包括多個固定大小且相隔固定偏置的區(qū)段,添加所述采集文件的采集文件對象ID(collect1n file object ID,C0ID)至表空間目錄的條目。針對所述采集文件中的每個所述區(qū)段,初始化采集目錄的條目中的對象ID(object ID,0ID)和對象區(qū)段索引(object segment index,0SEG)。該方法還包括:在所述采集目錄的所述條目中添加所述 C0ID和指示所述采集文件中的所述區(qū)段的位置的采集區(qū)段索引。
[0005]根據(jù)再一實施例,一種進行數(shù)據(jù)庫存儲操作的管理組件包括至少一個處理器,以及用于存儲所述至少一個處理器執(zhí)行的編程的非瞬時性計算機可讀存儲介質(zhì)。所述編程包括的指令用于在邏輯稀疏文件中預(yù)分配多個固定大小和固定偏移的連續(xù)區(qū)段。所述編程包括的進一步的指令用于接收將數(shù)據(jù)庫對象寫入所述區(qū)段的命令,以及在數(shù)據(jù)庫目錄中映射所述數(shù)據(jù)庫對象至所述區(qū)段。所述管理組件還用于與文件系統(tǒng)組件進行連接,以初始化存儲介質(zhì)空間而將所述數(shù)據(jù)庫對象寫入所述固定偏移的區(qū)段。
[0006]上文僅粗略描述了本發(fā)明實施例的特征,以便下文中關(guān)于本發(fā)明的詳細(xì)描述能夠得到更好理解。下文中將描述本發(fā)明實施例的其他特征和優(yōu)點,構(gòu)成了本發(fā)明權(quán)利要求的內(nèi)容。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,基于此處公開的理念和具體實施例,可便利地修改和設(shè)計與本發(fā)明具有相同目的的其他結(jié)構(gòu)和過程。本領(lǐng)域技術(shù)人員也應(yīng)意識到,這些同等建構(gòu)不應(yīng)背離附帶權(quán)利要求中規(guī)定的本發(fā)明的精神和范圍。
【附圖說明】
[0007]為了更完整地理解本發(fā)明及其優(yōu)點,現(xiàn)在參考下文結(jié)合附圖進行的描述,其中:
[0008]圖1示出了一種數(shù)據(jù)庫采集文件表空間的實施例;
[0009]圖2示出了區(qū)段和子段至數(shù)據(jù)庫管理的數(shù)據(jù)庫對象的映射實施例;
[0010]圖3示出了一種創(chuàng)建數(shù)據(jù)庫系統(tǒng)目錄以管理存儲區(qū)段的方法實施例;
[0011]圖4示出了一種方法實施例以分配數(shù)據(jù)庫區(qū)段和分配磁盤空間至數(shù)據(jù)庫對象;
[0012]圖5示出了一種釋放數(shù)據(jù)庫存儲區(qū)段和解除磁盤空間分配的方法實施例;
[0013]圖6為一種可用于實施各種實施例的示例性處理系統(tǒng)的圖。
[0014]除非另有指示,否則不同圖中的對應(yīng)標(biāo)號和符號通常指代對應(yīng)部分。繪制各圖是為了清楚地說明實施例的相關(guān)方面,因此未必是按比例繪制的。
【具體實施方式】
[0015]下文將詳細(xì)論述當(dāng)前優(yōu)選實施例的制作和使用。然而,應(yīng)了解,本發(fā)明提供可在各種具體上下文中體現(xiàn)的許多適用的發(fā)明性概念。所論述的具體實施例僅僅說明用以實施和使用本發(fā)明的具體方式,而不限制本發(fā)明的范圍。
[0016]本實施例提供了一種數(shù)據(jù)庫存儲模型,利用稀疏文件的特點高效存儲和檢索數(shù)據(jù)。所述實施例提供了利用文件系統(tǒng)抽象層掩蓋磁盤空間的管理復(fù)雜性的數(shù)據(jù)庫算法,也為數(shù)據(jù)庫提供了保持多個數(shù)據(jù)庫對象的線性和連續(xù)邏輯地址空間。所述常備存儲空間能按需稀疏分配。所述實施例利用文件系統(tǒng)稀疏文件提供的軟配置或“精簡”配置(見下文)高效存儲數(shù)據(jù)庫對象,避免文件系統(tǒng)管理大量文件時的缺點。數(shù)據(jù)庫存儲層提供將數(shù)據(jù)庫對象映射至所述文件系統(tǒng)提供的固定大小的連續(xù)邏輯地址區(qū)間內(nèi)的目錄(表格)。將所述文件系統(tǒng)分類,只為提供邏輯上連續(xù)的精簡配置的地址空間,所述數(shù)據(jù)庫將所述地址空間劃分為映射至數(shù)據(jù)庫對象的多個區(qū)段。所述數(shù)據(jù)庫存儲層采用較為簡單的方法通過大型稀疏文件中的固定大小和固定偏移的邏輯“區(qū)段”來保持大量(如幾千個)數(shù)據(jù)庫對象。每個數(shù)據(jù)庫對象都能在單個的精簡配置的連續(xù)地址空間內(nèi)獨立擴展。利用稀疏文件以及改變所述數(shù)據(jù)庫存儲層和文件系統(tǒng)之間的界線,能夠潛在地應(yīng)用于任何合適的數(shù)據(jù)庫。所述底層系統(tǒng)內(nèi)存可能是或可能不是傳統(tǒng)的文件系統(tǒng),可以是任何提供精簡配置的連續(xù)地址空間的接口。
[0017]稀疏文件是底層文件系統(tǒng)提供的一種抽象文件。稀疏文件提供了較大的虛擬地址空間、可用空間管理、地址空間的非連續(xù)使用以及元數(shù)據(jù)的維持,性能可靠且具備擴展性。稀疏文件僅利用文件內(nèi)的已分配/初始化空間,而非文件的整個地址空間。例如,稀疏文件在創(chuàng)建時能夠包括I百萬兆字節(jié)(TB)的地址空間,但僅包括44千字節(jié)(KB)從地址O開始的已分配/初始化數(shù)據(jù),以及另外100KB從地址Oxffff (或64KB)開始的數(shù)據(jù)。那么,在整個ITB空間中,稀疏文件只能利用144KB,外加文件元數(shù)據(jù)的少量附加字節(jié)。
[0018]典型的,文件提供單個的連續(xù)的地址空間。在能夠支持超過4TB文件的文件系統(tǒng)中,要表示可能擴展至I千兆字節(jié)(GB)大小的對象,就要將所述IGB的對象在所述文件中間隔開來,例如,將1GB預(yù)分配至10個區(qū)段。這種方法浪費了大量的磁盤空間。對于那些從未達到IGB大小的對象,這樣分配空間也很浪費。稀疏文件提供單個的連續(xù)地址空間,最初包括未分配/未初始化的空間區(qū)域。支持稀疏文件的現(xiàn)代文件系統(tǒng)(如Ext4,XFS,Btrfs,NTFS)能夠提供直接在文件中預(yù)分配區(qū)域的系統(tǒng)接口,無需(為了實際數(shù)據(jù)使用)初始化空間。這種系統(tǒng)也能解除之前已被寫入的文件的未使用區(qū)域的分配。這些文件系統(tǒng)提供多種文件狀態(tài):未分配,已分配但未初始化,和已分配且已初始化。另外,一些文件系統(tǒng)提供“精簡”配置的稀疏文件。這就意味著這些系統(tǒng)直到數(shù)據(jù)被寫入才會為文件分配磁盤空間。上述任一系統(tǒng)都能被用于提供稀疏文件。
[0019]使用Ext4等現(xiàn)代文件系統(tǒng),每個對象都能被置于固定邏輯地址間隔的地方,且所述對象之間的未使用部分未初始化。這樣,每個所述對象的連續(xù)地址空間都能在所述邏輯地址空間中擴展而不受文件中其他對象的阻礙,從而不浪費磁盤空間。所述底層文件系統(tǒng)透明管理所述磁盤中的可用空間,提供所述磁盤中的盤區(qū)以備份寫入時的對象。當(dāng)不再需要對象內(nèi)的數(shù)據(jù)時,所述磁盤空間能夠通過系統(tǒng)呼叫返回所述文件系統(tǒng)可用空間,文件系統(tǒng)分配器能再次使用所述不需要的磁盤空間以延展其他對象。這樣使用數(shù)據(jù)庫文件的稀疏文件使得多個數(shù)據(jù)庫對象可置于單個文件內(nèi),無需產(chǎn)生為每個對象創(chuàng)建和管理文件的成本。文件系統(tǒng)元數(shù)據(jù)的更新僅反映當(dāng)表格/索引被添加/丟棄或延展/減少時的頁面附加和移除。這樣,許多(如幾千個)表格/索引都能在單個文件中表示。所述數(shù)據(jù)庫能輕松且高效地使用目錄將所述對象映射至所述文件中的連續(xù)區(qū)間。
[0020]圖1示出了一種采集文件表空間100,其在邏輯連續(xù)地址空間內(nèi)具有固定大小的區(qū)段和位于固定偏移的子段。采集文件是一種能夠包括多個表格、索引、觸發(fā)和/或其他數(shù)據(jù)庫對象的數(shù)據(jù)的稀疏文件。在傳統(tǒng)的數(shù)據(jù)庫術(shù)語中,采集文件被當(dāng)作是一種在同一存儲容器(如文件、文件系統(tǒng)、卷或磁盤)中保持多個相關(guān)的數(shù)據(jù)庫對象的表空間。所述表空間是所述元數(shù)據(jù)的一部分,在內(nèi)部目錄表格的條目中描述。所述采集文件的大小受限于其駐留的文件系統(tǒng),當(dāng)需要定位某個設(shè)備中的特定表格/索引或者數(shù)據(jù)庫較大時,可指定多個采集文件。所述采集文件可包括指示文件目的的信息頭,但采集文件中沒有描述其布局的元數(shù)據(jù)。所述文件中包括的未使用的區(qū)段和子段在使用前未被初始化。區(qū)段和子段只有在被寫入時才能顯現(xiàn)。所述描述采集文件的布局的元數(shù)據(jù)位于所述數(shù)據(jù)庫采集目錄中。
[0021]所述采集目錄是系統(tǒng)維持的目錄(如永久表格或數(shù)據(jù)結(jié)構(gòu)),包括管理所述采集文件所需的各種元數(shù)據(jù)信息以及各種數(shù)據(jù)庫對象的分配/分配。例如,所述采集目錄包括所述數(shù)據(jù)庫中每個表格/索引對象的區(qū)段的采集文件名稱和偏置。所述目錄維持在非易失性內(nèi)存中,提供合適的關(guān)系型DBMS的一致性、持久性和ACID(原子性、一致性、隔離性和持久性)語義學(xué)。所述目錄的每一行都描述了一個對象ID(object ID,0ID)表格/索引區(qū)段至采集文件區(qū)段的映射。通過所述對象ID和對象區(qū)段索引列,給所述采集目錄編索引。
[0022]所述采集文件的列對應(yīng)于所述對象ID(object ID,0ID),對象區(qū)段索引(objectsegment index,OSEG),米集文件名(col lect1n filename,CFILE),米集文件區(qū)段索引(collect1n file segment index,CSEG),區(qū)段格式(segment format,F(xiàn)MT)。在米集文件中為表格或?qū)ο髣?chuàng)建區(qū)段時,為所述OID和OSEG以及相關(guān)聯(lián)的CFILE、CSEG和采集文件區(qū)段FMT值添加表空間條目至所述采集目錄。所述OSEG是所述對象的關(guān)系中區(qū)段(區(qū)段列表)的索引。所述OSEG的范圍為O至所述關(guān)系中的最后一個區(qū)段的索引。給所述OID和OSEG列編索引以便迅速查找OID和OSEG對,或者迅速在所述采集目錄中找到未使用(如OID = O且OSEG =O)的區(qū)段。所述采集文件(collect1n f iIe,CFILE)和采集文件區(qū)段索引(collect1nfile segment index,CSEG)定義所述區(qū)段的位置。所述CFILE是所述采集文件中的所述對象ID,也稱為采集文件對象ID(collect1n file object ID,C0ID)。所述CSEG是所述采集文件中的所述區(qū)段的索引。所述FMT是描述所述區(qū)段內(nèi)容的整數(shù)值。例如,默認(rèn)FMT = O指示所述區(qū)段僅包括數(shù)據(jù),F(xiàn)MT=I用于指示所述區(qū)段僅包括初始化數(shù)據(jù),F(xiàn)MT = 2指示所述區(qū)段包括數(shù)據(jù)和可用空間映射,F(xiàn)MT = 3指示所述區(qū)段包括數(shù)據(jù)、可用空間映射和可視性映射。
[0023]圖2示出了區(qū)段和子段至所述數(shù)據(jù)庫管理的數(shù)據(jù)庫對象的映射方法200的實施例。區(qū)段是采集文件中固定大小的連續(xù)的邏輯地址區(qū)間。每個區(qū)段在偏移開始,所述偏置是所述區(qū)段大小的倍數(shù),在采集文件中可配置且固定。例如,一個16TB的包括IGB區(qū)段的采集文件包括在所述文件中每個IGB的倍數(shù)開始的區(qū)段。所述采集文件中的所述區(qū)段依次從O至16383(16TB/1G)編號。稀疏分配采集文件,意味著所述磁盤空間僅在所述區(qū)段被占用時才會分配。區(qū)段為了分配的目的而被劃分為固定大小的頁面。頁面是字節(jié)方面的可配置大小(如8KB),是區(qū)段內(nèi)為數(shù)據(jù)分配的空間的最小量。
[0024]所述數(shù)據(jù)庫通過管理固定邏輯偏移的邏輯固定大小區(qū)段來管理與數(shù)據(jù)庫對象相關(guān)聯(lián)的空間。所述數(shù)據(jù)庫將這些區(qū)段映射至稀疏文件中的偏移,所述映射存儲在數(shù)據(jù)庫元數(shù)據(jù)目錄中。某一給定對象的所述區(qū)段列表從O開始依次編號。當(dāng)所述對象擴展至充滿整個區(qū)段,所述采集文件中的可用區(qū)段被分配至所述對象且給與下一個對象區(qū)段索引(objectsegment index,0SEG)。當(dāng)分配所述采集文件中的所述區(qū)段時,保留對應(yīng)的邏輯地址區(qū)間,但不分配所述磁盤空間。當(dāng)數(shù)據(jù)被寫入所述對象時,所述文件系統(tǒng)為之后的區(qū)段分配真實的磁盤空間。
[0025]在固定邏輯地址邊界上映射所述區(qū)段,使得所述文件能夠在所述邏輯地址空間內(nèi)擴展至最大程度,而不覆蓋所述采集文件中的下一區(qū)段。由于區(qū)段擴展可能不會超過為所述區(qū)段分配的空隙,所述數(shù)據(jù)庫無需鎖定邏輯地址區(qū)間以形成區(qū)段。區(qū)段內(nèi)的已分配數(shù)據(jù)無需將其可用的整個邏輯地址區(qū)間都填滿。但是,由于未被分配(至所述磁盤或存儲介質(zhì)),一個區(qū)段數(shù)據(jù)的末尾和下一區(qū)段的開始之間的未寫入空間沒有浪費。所述底層文件系統(tǒng)為所述區(qū)段處理不相連物理磁盤空間的秘密分配,無需告知所述數(shù)據(jù)庫系統(tǒng)或所述數(shù)據(jù)庫系統(tǒng)無需參與,從而大大簡化數(shù)據(jù)庫的實現(xiàn)。
[0026]子段是區(qū)段內(nèi)頁面子集的一個連續(xù)地址區(qū)間。子段可用作駐留在區(qū)段內(nèi)的特殊目的的數(shù)據(jù)庫元數(shù)據(jù)區(qū)域。例如,區(qū)段內(nèi)的可用頁面維持在可用空間映射(free-space-map,F(xiàn)SM)子段。每個對象具有兩個子段,一個數(shù)據(jù)子段,一個FSM子段。一些對象還具有各種特定對象目的的附加子段。例如,表格對象可能包括為表提供初始化數(shù)據(jù)的初始化子段(初-子段),或指示所述表數(shù)據(jù)(行)的哪些部分對于用戶事務(wù)是可見或不可見的可視性子段。所述元數(shù)據(jù)子段的大小是預(yù)先確定的,以足夠表示所述區(qū)段內(nèi)的最大數(shù)據(jù)。每一種元數(shù)據(jù)子段在區(qū)段內(nèi)都具有指定的固定位置和大小。
[0027]類似于區(qū)段的例子,所述區(qū)段內(nèi)的所述元數(shù)據(jù)子段的所述固定大小和位置簡化了對所述子段的磁盤空間管理。子段未被充滿時沒有造成磁盤空間的浪費是因為只有使用時空間才會被所述文件系統(tǒng)分配。隨著對象數(shù)據(jù)的增長,添加附加區(qū)段至所述數(shù)據(jù)庫,每個附加區(qū)段都包括所述附加數(shù)據(jù)子段所需要的數(shù)據(jù)和元數(shù)據(jù)子段的附加空間。例如,一個表格對象中,有8KB的頁面和IGB的區(qū)段,所述可視性子段需要不超過4個頁面,所述FSM子段需要大約32個頁面。任一區(qū)段要保持這兩個子段都需要不超過64個頁面。因此,在每個IGB區(qū)段中,前面的4個頁面(32KB)為所述可視性子段保留,60個頁面(32KB至512KB)為所述FSM子段保留。所述區(qū)段中剩余的131008個頁面(1GB至512KB)為所述數(shù)據(jù)保留。初-子段(針對初始化數(shù)據(jù))等元數(shù)據(jù)子段所需的磁盤空間,可以不需要預(yù)先確定,無論是在總量方面還是基于單個區(qū)段的所需方面。這些子段存儲在各自的區(qū)段中,這些區(qū)段的分配受到類似于其他區(qū)段的所述采集目錄的管理。
[0028]采集文件無需預(yù)先格式化。所述采集文件表空間的文件名和屬性都存儲在所述數(shù)據(jù)庫表空間目錄中。描述所述采集文件內(nèi)的所述區(qū)段邊界的所述數(shù)據(jù)庫元數(shù)據(jù)以及為其分配的對象都存儲在所述數(shù)據(jù)庫采集目錄中。最初,所述采集目錄中的所述區(qū)段都是未使用的(分配至對象ID = O)。所述采集目錄在創(chuàng)建第一個采集文件時創(chuàng)建。
[0029]圖3示出了一種創(chuàng)建數(shù)據(jù)庫系統(tǒng)目錄以管理存儲區(qū)段的方法300的實施例。步驟110中,該方法300開始于為表空間獲取新0ID。利用“CREATE TABLESPACE”的命令添加采集文件至數(shù)據(jù)庫。步驟120中,在所述CREATE TABLESPACE的命令指定下的文件夾中創(chuàng)建空的采集文件(如僅包括信息頭)。采集文件信息頭也被寫入所述文件中。步驟130中,添加包括所述新建表空間的名稱及其對象ID的條目至數(shù)據(jù)庫表空間目錄。步驟131中,該方法300確定所述采集目錄是否存在。若所述采集目錄存在,該方法300繼續(xù)至步驟160。否則,步驟140中,創(chuàng)建采集目錄(如,數(shù)據(jù)庫系統(tǒng)表)。步驟150中,為所述采集目錄創(chuàng)建索引。通過所述對象ID(object ID,0ID)和對象區(qū)段索引(object segment index,0SEG)列,給所述采集目錄編索引。步驟160中,為所述采集文件中所述邏輯地址區(qū)間的每個區(qū)段偏置添加未使用的區(qū)段條目(從OID = O,OSEG = O,CSEG = O開始至最大FMT = O)至所述采集目錄。
[0030]當(dāng)添加采集文件至所述數(shù)據(jù)庫時,添加所述采集文件中所有未使用區(qū)段的條目至所述采集目錄。例如,為了添加最大16TB和包括IGB區(qū)段的采集文件,添加16KB的區(qū)段條目至所述采集目錄文件。所述添加的區(qū)段未被使用,分配的對象ID為0,對象區(qū)段索引(objectsegment index,0SEG)為O。每個區(qū)段的采集文件對象ID和采集文件偏置都設(shè)置為參考所述采集文件中的每個可用區(qū)段。當(dāng)添加所述采集文件表空間至所述數(shù)據(jù)庫時,不分配磁盤空間至所述采集文件。僅添加所述可用區(qū)段的描述至所述采集目錄。只有在頁面被寫入所述采集文件時才可以分配磁盤空間。所述子段為所述區(qū)段內(nèi)預(yù)定義的連續(xù)頁面的區(qū)間。所述區(qū)段直到被寫入時才被實例化。直到使用時才分配磁盤空間至所述子段。維持所述目錄中未使用區(qū)段和已分配區(qū)段的映射是一種可能的實現(xiàn)。也可使用其他實現(xiàn)。例如,在其他實現(xiàn)中,所述采集目錄中沒有也不需要未使用區(qū)段的條目。相反,所述數(shù)據(jù)庫目錄為所述已分配區(qū)段保持記錄。
[0031]當(dāng)頁面被寫入還未分配的區(qū)段中的數(shù)據(jù)子段頁面偏置時,為對象分配區(qū)段以保持所述數(shù)據(jù)和元數(shù)據(jù)。為表格/索引關(guān)系分配新的區(qū)段需要在所述采集文件目錄中為所述采集文件尋找第一個未使用區(qū)段。由于所有區(qū)段都具有相同的固定尺寸和固定位置,因為不需要搜尋合適大小的空隙,分配新區(qū)段較為簡單。數(shù)據(jù)庫只需要對關(guān)系中的區(qū)段的位置和索引保持記錄。邏輯連續(xù)的地址空間的偏置可通過簡單計算獲得,該簡單計算的變量為所述頁面偏置和區(qū)段位置。當(dāng)之前未寫入的磁盤頁面被寫入時,所述底層文件系統(tǒng)透明分配所述常備磁盤空間。所述文件系統(tǒng)的工作是為所述區(qū)段提供連續(xù)的邏輯頁面和管理不相連的物理磁盤盤區(qū)。
[0032]圖4示出了一種方法400的實施例以分配數(shù)據(jù)庫區(qū)段和分配磁盤空間至數(shù)據(jù)庫對象。該方法400可用于寫頁面至對象關(guān)系中的某一偏置。在步驟210中,通過將對象偏置除以子段大小,計算出對象區(qū)段索引(object segment index,OSEG)。通過所述對象偏置模(% )所述子段大小,計算出子段內(nèi)頁面。步驟220中,該方法400查詢采集目錄中的對象ID和對象區(qū)段索引對。步驟221中,該方法400確定所述區(qū)段是否已經(jīng)分配。若所述區(qū)段已被分配,則該方法400繼續(xù)至步驟260。否則,步驟130中,該方法嘗試在所述采集目錄中找到任一未分配的子段(OID = O且OSEG = O)。步驟231中,該方法300檢查是否找到未分配區(qū)段。如果沒有找到,則該方法400在步驟240中上報指示表空間中沒有可用磁盤空間,且該方法400繼續(xù)至步驟260。但是,如果找到了未分配區(qū)段,則在步驟250中,通過設(shè)置所述對象ID和計算出的對象區(qū)段索引,分配該區(qū)段至所述對象。在步驟260中,該方法400對目的采集文件區(qū)段和計算出的頁面進行頁面寫。如果新的頁面從未被寫過,文件系統(tǒng)自動分配延展區(qū)段內(nèi)容所需的空間以保持所述新頁面。如果頁面已經(jīng)存在,文件系統(tǒng)在指示的偏置上寫頁面。數(shù)據(jù)庫系統(tǒng)無需發(fā)起任何特殊的系統(tǒng)呼叫去寫文件。如果實際磁盤寫入失敗,該方法的寫入及其相關(guān)的事務(wù)失敗。
[0033]當(dāng)表格、索引或者其他數(shù)據(jù)庫對象從數(shù)據(jù)庫丟棄或者縮小,未使用區(qū)段從對象的關(guān)系中分離。圖5示出了一種表格內(nèi)釋放數(shù)據(jù)庫存儲區(qū)段和解除磁盤空間分配的方法500的實施例。步驟310中,該方法開始于刪除區(qū)間內(nèi)的第一區(qū)段,(在采集文件中)釋放與給定對象ID的對象相關(guān)聯(lián)的區(qū)段。步驟320中,該方法500在采集目錄中查詢對象ID和對象區(qū)段索弓丨。步驟321中,該方法檢查是否找到所述區(qū)段。如果沒有找到所述區(qū)段,則該方法500結(jié)束。如果找到所述區(qū)段,則通過在步驟330中將所述對象ID和對象區(qū)段索引都設(shè)為0,更新或釋放所述區(qū)段。步驟340中,該方法500(或數(shù)據(jù)庫系統(tǒng))通過系統(tǒng)呼叫通知底層文件系統(tǒng)解除采集文件中CSEG偏移的子段的分配。然后,所述文件系統(tǒng)可釋放底層磁盤空間。對于任何指向所述區(qū)段的讀,所述文件系統(tǒng)上報零,在其他區(qū)段被寫入時可按需分配磁盤空間。因此,無需清空所述區(qū)段中的數(shù)據(jù)。步驟350中,該方法繼續(xù)至下一個待釋放區(qū)段(如果找到的話),并返回至步驟320。
[0034]上述方法的執(zhí)行者為連接在數(shù)據(jù)庫系統(tǒng)和主機或文件系統(tǒng)之間的所述DBMS的數(shù)據(jù)存儲引擎。如上述方法所述,所述引擎可以為所述DBMS的應(yīng)用軟件編程接口(applicat1n programming interface,API),用于創(chuàng)建、讀取、更新和刪除數(shù)據(jù)庫中的數(shù)據(jù)。在實施例中,通過ACID事務(wù)更新數(shù)據(jù)庫目錄中維持的數(shù)據(jù)庫元數(shù)據(jù),以自動達到一致性/恢復(fù)。所述數(shù)據(jù)庫元數(shù)據(jù)和駐留在采集文件中的對象區(qū)段和子段上寫的數(shù)據(jù)也可以通過ACID事務(wù)進行更新,以及自動恢復(fù)??梢岳萌罩咎幚砘蛉罩居涗浳募到y(tǒng)維持文件系統(tǒng)元數(shù)據(jù)的完整性。映射邏輯連續(xù)區(qū)段至不相連物理磁盤盤區(qū)的文件系統(tǒng)元數(shù)據(jù)可以通過ACID事務(wù)進行更新,以及自動恢復(fù)。由于數(shù)據(jù)庫數(shù)據(jù)和元數(shù)據(jù)的完整性由數(shù)據(jù)庫事務(wù)在運行時保護,所述文件系統(tǒng)無需恢復(fù)數(shù)據(jù)。但是,所述文件系統(tǒng)可能需要確保所述文件系統(tǒng)元數(shù)據(jù)在數(shù)據(jù)庫恢復(fù)時保持一致。當(dāng)所述文件系統(tǒng)在數(shù)據(jù)庫重新啟動和恢復(fù)之前掛載時,首先恢復(fù)所述文件系統(tǒng)元數(shù)據(jù)。
[0035]圖6為可用于實施各種實施例的處理系統(tǒng)600的方框圖。所述處理系統(tǒng)可以是智能手機等移動個人用戶設(shè)備的一部分或者與其相對應(yīng)。特定裝置可利用所有所示的組件或所述組件的僅一子集,且裝置之間的集成程度可能不同。此外,設(shè)備可以包括部件的多個實例,例如多個處理單元、處理器、存儲器、發(fā)射器、接收器等。處理系統(tǒng)600可以包括配備一個或多個輸入/輸出設(shè)備,例如揚聲器、麥克風(fēng)、鼠標(biāo)、觸摸屏、按鍵、鍵盤、打印機、顯示器等的處理單元601。處理單元601可包括中央處理器(CPU)610、存儲器620、大容量存儲設(shè)備630、視頻適配器640,以及連接到總線的輸入/輸出(I/O)接口690。所述總線可以為任何類型的若干總線架構(gòu)中的一個或多個,包括存儲總線或者存儲控制器、外設(shè)總線等等。
[0036]所述CPU610可包括任何類型的電子數(shù)據(jù)處理器。存儲器620可包括任意類型的系統(tǒng)存儲器,例如靜態(tài)隨機存取存儲器(static random access memory,SRAM)、動態(tài)隨機存取存儲器(dynamic random access memory,DRAM)、同步DRAM( synchronous DRAM,SDRAM)、只讀存儲器(read-only memory,ROM)或其組合等等。在實施例中,存儲器620可包括在開機時使用的ROM以及在執(zhí)行程序時使用的存儲程序和數(shù)據(jù)的DRAM。大容量存儲器設(shè)備630可包括任意類型的存儲設(shè)備,其用于存儲數(shù)據(jù)、程序和其它信息,并使這些數(shù)據(jù)、程序和其它信息通過總線訪問。大容量存儲器設(shè)備630可包括如下項中的一種或多種:固態(tài)磁盤、硬盤驅(qū)動器、磁盤驅(qū)動器、光盤驅(qū)動器等等。
[0037]視頻適配器640以及1/0接口690提供接口以將外部輸入以及輸出裝置耦合到處理單元上。如圖所示,輸入輸出設(shè)備的示例包括耦合至視頻適配器640的顯示器660和耦合至1/0接口 670的鼠標(biāo)/鍵盤/打印機690的任意組合。其它設(shè)備可以耦合至處理單元601,可以利用附加的或更少的接口卡。舉例來說,串行接口卡(未圖示)可以用于為打印機提供串行接口。
[0038]處理單元601還包括一個或多個網(wǎng)絡(luò)接口 650,網(wǎng)絡(luò)接口650可包括以太網(wǎng)電纜等有線鏈路,和/或到接入節(jié)點或者一個或多個網(wǎng)絡(luò)680的無線鏈路。網(wǎng)絡(luò)接口 650允許處理單元601通過網(wǎng)絡(luò)680與遠(yuǎn)程單元通信。例如,網(wǎng)絡(luò)接口450可以通過一個或多個發(fā)射器/發(fā)射天線以及一個或多個接收器/接收天線提供無線通信。在一個實施例中,處理單元601耦合到局域網(wǎng)或廣域網(wǎng)上以用于數(shù)據(jù)處理以及與遠(yuǎn)程裝置通信,所述遠(yuǎn)程裝置例如其它處理單元、因特網(wǎng)、遠(yuǎn)程存儲設(shè)施或其類似者。
[0039]雖然本發(fā)明中已提供若干實施例,但應(yīng)理解,在不脫離本發(fā)明的精神或范圍的情況下,本發(fā)明所公開的系統(tǒng)和方法可以以許多其他特定形式來體現(xiàn)。本發(fā)明的實例應(yīng)被視為說明性而非限制性的,且本發(fā)明并不限于本文本所給出的細(xì)節(jié)。例如,各種元件或部件可以在另一系統(tǒng)中組合或合并,或者某些特征可以省略或不實施。
[0040]此外,在不脫離本發(fā)明的范圍的情況下,各種實施例中描述和說明為離散或單獨的技術(shù)、系統(tǒng)、子系統(tǒng)和方法可以與其它系統(tǒng)、模塊、技術(shù)或方法進行組合或合并。展示或論述為彼此耦合或直接耦合或通信的其它項也可以采用電方式、機械方式或其它方式通過某一接口、設(shè)備或中間部件間接地耦合或通信。其他變化、替代和改變的示例可以由本領(lǐng)域的技術(shù)人員在不脫離本文精神和所公開的范圍的情況下確定。
【主權(quán)項】
1.一種數(shù)據(jù)庫系統(tǒng)引擎執(zhí)行的數(shù)據(jù)庫存儲操作方法,其特征在于,該方法包括:在邏輯稀疏文件中預(yù)分配多個固定大小和固定偏移的連續(xù)區(qū)段;接收將數(shù)據(jù)庫對象寫入所述區(qū)段的命令;在數(shù)據(jù)庫目錄中映射所述數(shù)據(jù)庫對象至所述區(qū)段;與文件系統(tǒng)進行連接,以初始化存儲介質(zhì)空間而將所述數(shù)據(jù)庫對象寫入所述固定偏移 的區(qū)段。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述區(qū)段是在沒有為所述區(qū)段初始化所述 存儲介質(zhì)空間的情況下預(yù)分配在所述邏輯稀疏文件中。3.根據(jù)權(quán)利要求1所述的方法,其特征在于,在所述數(shù)據(jù)庫目錄中,通過使用指示所述 數(shù)據(jù)庫對象的對象ID的索引和與所述數(shù)據(jù)庫目錄中的所述對象ID相關(guān)的對象區(qū)段索引,所 述數(shù)據(jù)庫對象被映射至所述區(qū)段。4.根據(jù)權(quán)利要求3所述的方法,其特征在于,還包括:通過刪除所述數(shù)據(jù)庫對象或釋放 所述區(qū)段的命令,將所述指示所述對象ID的所述索引和所述對象區(qū)段索引初始化為零。5.根據(jù)權(quán)利要求1所述的方法,其特征在于,還包括:根據(jù)設(shè)定的頁面偏置和子段大小計算所述區(qū)段中的子段的頁面位置;將所述數(shù)據(jù)庫對象分配至所述頁面位置處的所述子段。6.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述區(qū)段的大小大于所述數(shù)據(jù)庫對象,其 中,所述數(shù)據(jù)庫對象在所述邏輯稀疏文件中的所述區(qū)段的所述固定偏移開始。7.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述數(shù)據(jù)庫系統(tǒng)引擎是一種應(yīng)用軟件編程 接口,所述接口與所述文件系統(tǒng)相互作用,用于為所述邏輯稀疏文件管理存儲介質(zhì)操作。8.根據(jù)權(quán)利要求1所述的方法,其特征在于,還包括:使用原子性、一致性、隔離性和持 久性(atomicity,consistency,isolat1n,and durability,ACID)事務(wù)更新所述數(shù)據(jù)庫目 錄中維持的數(shù)據(jù)庫元數(shù)據(jù)以及寫入所述邏輯稀疏文件的所述區(qū)段中的數(shù)據(jù)和元數(shù)據(jù)。9.根據(jù)權(quán)利要求1所述的方法,其特征在于,還包括:在接收到將所述數(shù)據(jù)庫對象寫入 所述區(qū)段的命令時,在文件系統(tǒng)引擎中初始化存儲介質(zhì)空間以將所述數(shù)據(jù)庫對象寫入在所 述固定偏移開始的區(qū)段。10.根據(jù)權(quán)利要求1所述的方法,其特征在于,還包括:使用原子性、一致性、隔離性和持 久性(atomicity,consistency,isolat1n,and durability,ACID)事務(wù)更新所述區(qū)段至不 相連物理磁盤盤區(qū)的映射。11.根據(jù)權(quán)利要求1所述的方法,其特征在于,還包括:在日志文件中浸泡所述文件系統(tǒng) 的元數(shù)據(jù)。12.—種數(shù)據(jù)庫系統(tǒng)引擎執(zhí)行的數(shù)據(jù)庫存儲操作方法,其特征在于,該方法包括:配置采集文件,所述采集文件包括多個固定大小且相隔固定偏置的區(qū)段;添加所述采集文件的采集文件對象ID(collect1n file object ID,C0ID)至表空間 目錄的條目;針對所述采集文件中的每個所述區(qū)段,初始化采集目錄的條目中的對象ID(object ID,0ID)和對象區(qū)段索引(object segment index,OSEG);在所述采集目錄的所述條目中添加所述C0ID和指示所述采集文件中的所述區(qū)段的位 置的采集區(qū)段索引。13.根據(jù)權(quán)利要求12所述的方法,其特征在于,還包括:接收將數(shù)據(jù)庫對象寫入所述采集文件中的所述多個區(qū)段中的一個區(qū)段的命令,其中, 所述數(shù)據(jù)庫對象被分配有OID值;通過將頁面偏置除以為所述多個區(qū)段設(shè)定的子段大小,計算與所述區(qū)段的所述OID值 相關(guān)的OSEG值;通過所述頁面偏置模所述子段大小,計算所述區(qū)段中的頁面位置;在所述采集目錄中搜索與所述OID值和所述OSEG值匹配的條目。14.根據(jù)權(quán)利要求13所述的方法,其特征在于,還包括:在所述采集目錄中找到匹配所 述OID值和所述OSEG值的條目時,對所述頁面位置的所述區(qū)段執(zhí)行頁面寫。15.根據(jù)權(quán)利要求13的方法,其特征在于,還包括:在所述采集目錄中未找到匹配所述 0ID值和所述OSEG值的條目時,在所述采集目錄中搜索指示未分配區(qū)段和包括所述初始化 0ID和OSEG的條目。16.根據(jù)權(quán)利要求15所述的方法,其特征在于,還包括:在找到所述指示未分配區(qū)段的 條目時,通過設(shè)置所述條目中的所述0ID值和所述OSEG值將所述未分配區(qū)段分配至所述數(shù) 據(jù)庫對象;對所述采集文件中的所述頁面位置的所述區(qū)段執(zhí)行頁面寫。17.根據(jù)權(quán)利要求16所述的方法,其特征在于,還包括:添加指示所述區(qū)段的格式的區(qū) 段格式,其中,所述區(qū)段的格式僅為數(shù)據(jù),僅為初始化數(shù)據(jù),為數(shù)據(jù)和可用空間映射,或者為 數(shù)據(jù)、可用空間映射和可視性映射的組合。18.根據(jù)權(quán)利要求15所述的方法,其特征在于,還包括:在未找到指示未分配區(qū)段和包 括所述初始化0ID和OSEG的條目時,上報指示所述采集文件中沒有可用磁盤空間。19.根據(jù)權(quán)利要求12所述的方法,其特征在于,還包括:接收在所述采集文件中釋放所有分配給具有給定0ID值的數(shù)據(jù)庫對象的區(qū)段的命令;在所述采集目錄中搜索每個匹配所述0ID值的條目;在找到匹配所述0ID值的條目時,發(fā)送系統(tǒng)呼叫,解除對應(yīng)所述條目中的所述采集區(qū)段 索引的所述采集文件中偏移的區(qū)段的分配;對所述采集目錄中的條目中的所述0ID和所述OSEG進行重新初始化。20.—種進行數(shù)據(jù)庫存儲操作的管理組件,其特征在于,所述管理組件包括:至少一個處理器;用于存儲所述至少一個處理器執(zhí)行的編程的非瞬時性計算機可讀存儲介質(zhì),所述編程 包括的指令用于:在邏輯稀疏文件中預(yù)分配多個固定大小和固定偏移的連續(xù)區(qū)段;接收將數(shù)據(jù)庫對象寫入所述區(qū)段的命令;在數(shù)據(jù)庫目錄中映射所述數(shù)據(jù)庫對象至所述區(qū)段;與文件系統(tǒng)進行連接,以初始化存儲介質(zhì)空間而將所述數(shù)據(jù)庫對象寫入所述固定偏移 的區(qū)段。21.根據(jù)權(quán)利要求20所述的管理組件,其特征在于,所述編程包括的進一步的指令用 于,在將所述區(qū)段預(yù)分配至所述邏輯稀疏文件中后,以及接收到所述將所述數(shù)據(jù)庫對象寫 入所述區(qū)段的命令后,初始化存儲介質(zhì)空間,以將所述數(shù)據(jù)庫對象寫入在所述固定偏移開始的區(qū)段。22.根據(jù)權(quán)利要求20所述的管理組件,其特征在于,所述在所述邏輯稀疏文件中預(yù)分配 所述區(qū)段的指令包括在沒有為所述區(qū)段初始化所述存儲介質(zhì)空間的情況下預(yù)分配所述邏 輯稀疏文件中的所述區(qū)段的指令。23.根據(jù)權(quán)利要求20所述的管理組件,其特征在于,所述在所述數(shù)據(jù)庫目錄中映射所述 數(shù)據(jù)庫對象至所述區(qū)段的指令包括在所述數(shù)據(jù)庫目錄中添加指示所述數(shù)據(jù)庫對象的對象 ID的索引和與所述邏輯稀疏文件中的所述對象ID相關(guān)的對象區(qū)段索引的指令。24.根據(jù)權(quán)利要求20所述的管理組件,其特征在于,所述區(qū)段包括多個固定大小和固定 子段偏移的連續(xù)子段。25.根據(jù)權(quán)利要求20所述的管理組件,其特征在于,所述數(shù)據(jù)庫目錄維持在非易失性存 儲介質(zhì)中。
【文檔編號】G06F17/30GK105981013SQ201580007886
【公開日】2016年9月28日
【申請日】2015年2月24日
【發(fā)明人】雅克·厄爾·赫伯特, 甘嘎瓦拉·普拉薩德·瓦拉庫汝
【申請人】華為技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1