專利名稱:一種支持表模式可變的元數(shù)據(jù)管理方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種數(shù)據(jù)庫中元數(shù)據(jù)管理方法。
背景技術(shù):
元數(shù)據(jù)是描述數(shù)據(jù)庫內(nèi)數(shù)據(jù)的結(jié)構(gòu)以及數(shù)據(jù)庫中數(shù)據(jù)建立方法的數(shù)據(jù)。在數(shù)據(jù)庫系統(tǒng)中,元數(shù)據(jù)可以幫助數(shù)據(jù)庫管理員和數(shù)據(jù)庫開發(fā)人員方便地找到他們所關(guān)心的數(shù)據(jù), 因此,元數(shù)據(jù)是數(shù)據(jù)庫的靈魂,如何以高效的方式對它們進(jìn)行管理和訪問就變得尤為重要。 解決這一問題的關(guān)鍵是對元數(shù)據(jù)的存儲結(jié)構(gòu)進(jìn)行科學(xué)有效的設(shè)計和管理。數(shù)據(jù)庫系統(tǒng)存儲層技術(shù)主要分為列存儲和行存儲,現(xiàn)有數(shù)據(jù)庫系統(tǒng)元數(shù)據(jù)表大都采用行存儲方式。然而,采用目前現(xiàn)有的元數(shù)據(jù)組織策略,元數(shù)據(jù)表一旦創(chuàng)建,無法修改表模式。如果表模式變更,需對涉及的表進(jìn)行重建。尤其當(dāng)表中已插入數(shù)據(jù)信息,需為表中原有數(shù)據(jù)備份,按照新的表模式創(chuàng)建表,數(shù)據(jù)重新插入。由于元數(shù)據(jù)為查詢處理器等數(shù)據(jù)庫管理系統(tǒng)運行提供必要的信息,因此元數(shù)據(jù)表重建過程中,系統(tǒng)無法維持正常的運行,由此帶來的損失將非常大。而隨著系統(tǒng)的不斷運行,應(yīng)用需求的變化,不可避免的出現(xiàn)原有表模式不再適應(yīng)需求,需進(jìn)行擴充等問題。雖然設(shè)計預(yù)留字段可以對上述問題進(jìn)行處理,然而在實際應(yīng)用中,難以準(zhǔn)確的確定預(yù)留字段的個數(shù)。如何設(shè)計支持表模式可變的元數(shù)據(jù)組織和管理策略成為一項迫切需要解決的任務(wù)。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種支持表模式可變的元數(shù)據(jù)組織和管理策略。為了達(dá)到上述目的,本發(fā)明的技術(shù)方案是提供了一種支持表模式可變的元數(shù)據(jù)管理方法,其特征在于,步驟為步驟I、所有元數(shù)據(jù)表按列存儲在一個元數(shù)據(jù)文件中,該步驟包括步驟I. I、依次為每個元數(shù)據(jù)表分配不同的表ID ;步驟I. 2、各元數(shù)據(jù)表的每一列數(shù)據(jù)連續(xù)存儲在一個數(shù)據(jù)段中,每個數(shù)據(jù)段中設(shè)置段控制塊,段控制塊包含段表ID,將段表ID設(shè)置為與該數(shù)據(jù)段相對應(yīng)的元數(shù)據(jù)表的表ID, 即段表ID相同的數(shù)據(jù)段存儲的是相同元數(shù)據(jù)表中不同列的數(shù)據(jù)步驟2、數(shù)據(jù)庫系統(tǒng)啟動時,將元數(shù)據(jù)讀入元數(shù)據(jù)緩沖區(qū),并進(jìn)行數(shù)據(jù)按行組織,該步驟包括步驟2. I、將元數(shù)據(jù)文件中各個數(shù)據(jù)段中的數(shù)據(jù)依次讀入元數(shù)據(jù)緩沖區(qū),同一數(shù)據(jù)段中數(shù)據(jù)順序存放;步驟2. 2、段表ID相同的不同數(shù)據(jù)段中的數(shù)據(jù)使用行指針鏈接成數(shù)據(jù)行,每行第一個數(shù)據(jù)項設(shè)置記錄標(biāo)志位;步驟3、分析用戶的元數(shù)據(jù)請求,若為對元數(shù)據(jù)表數(shù)據(jù)記錄的查詢、更新、刪除命令,轉(zhuǎn)步驟4,若為調(diào)整表模式結(jié)構(gòu)請求,轉(zhuǎn)步驟5 ;步驟4、返回用戶查詢結(jié)果,對添加、刪除、更新數(shù)據(jù)記錄在緩沖區(qū)中進(jìn)行標(biāo)記,該步驟包括沿行指針,進(jìn)行數(shù)據(jù)記錄的添加、刪除及更新,隨后設(shè)置進(jìn)行過添加、刪除及更新的數(shù)據(jù)行的記錄標(biāo)志位;步驟5、對元數(shù)據(jù)表進(jìn)行添加、刪除字段,轉(zhuǎn)換為對列的添加、刪除,執(zhí)行用戶請求, 更新表模式。步驟6、數(shù)據(jù)庫關(guān)閉時,將元數(shù)據(jù)緩沖區(qū)中數(shù)據(jù)按列寫回元數(shù)據(jù)文件。優(yōu)選地,所述步驟2中的緩沖區(qū)采用順序與鏈?zhǔn)交旌系臄?shù)據(jù)組織方式。優(yōu)選地,所述步驟5包括步驟5. I、若元數(shù)據(jù)表Ti存在新增字段,在元數(shù)據(jù)文件結(jié)尾追加一個新的數(shù)據(jù)段 SAi,并將該數(shù)據(jù)段SAi的段表ID設(shè)置為元數(shù)據(jù)表Ti的表ID,將數(shù)據(jù)段SAi內(nèi)的數(shù)據(jù)依次寫入數(shù)據(jù)段SAi中,數(shù)據(jù)段SAi中每一行的位置與元數(shù)據(jù)表Ti中其他數(shù)據(jù)段的相同行的位置相對應(yīng),即保證元數(shù)據(jù)表Ti中所有數(shù)據(jù)段的相同行具有相同的行號;步驟5. 2、將新增字段讀入元數(shù)據(jù)緩沖區(qū),進(jìn)行數(shù)據(jù)組織;步驟5. 3、若元數(shù)據(jù)表Ti存在刪除字段,將與該列數(shù)據(jù)所對應(yīng)的數(shù)據(jù)段的段表ID 置空,從而使得該數(shù)據(jù)段不屬于任何一個元數(shù)據(jù)表。本發(fā)明提供了一種基于列存儲技術(shù)的元數(shù)據(jù)存儲方法和管理策略,其特點為支持表模式可變同時保持較高的查詢效率,從而克服傳統(tǒng)方法的局限性,提高了數(shù)據(jù)庫管理系統(tǒng)中元數(shù)據(jù)管理的靈活性。
具體實施例方式為使本發(fā)明更明顯易懂,茲以一優(yōu)選實施例詳細(xì)說明如下。本發(fā)明提供了一種支持表模式可變的元數(shù)據(jù)管理方法,本發(fā)明能針對元數(shù)據(jù)管理中,表模式更改時代價較大的問題,提供支持表模式可變的元數(shù)據(jù)管理方法,提高了管理元數(shù)據(jù)的靈活性,其步驟為步驟I、所有元數(shù)據(jù)表按列存儲在一個元數(shù)據(jù)文件中I. I)依次為每個元數(shù)據(jù)表分配不同的表ID ;I. 2)各元數(shù)據(jù)表的每一列數(shù)據(jù)連續(xù)存儲在一個數(shù)據(jù)段中;I. 3)每個數(shù)據(jù)段中設(shè)置段控制塊,段控制塊包含段表ID ;I. 4)將段表ID設(shè)置為與該數(shù)據(jù)段相對應(yīng)的元數(shù)據(jù)表的表ID,即段表ID相同的數(shù)據(jù)段存儲的是相同元數(shù)據(jù)表中不同列的數(shù)據(jù)。步驟2、數(shù)據(jù)庫系統(tǒng)啟動時,將元數(shù)據(jù)讀入元數(shù)據(jù)緩沖區(qū),并按照段表ID進(jìn)行行數(shù)據(jù)組織。2. I)緩沖區(qū)中采用順序與鏈?zhǔn)交旌系臄?shù)據(jù)組織方式。每個元數(shù)據(jù)表都對應(yīng)有一個元數(shù)據(jù)表描述結(jié)點TAB_DESC。所有元數(shù)據(jù)表描述結(jié)點 TAB_DESC使用指針連接起來。每個元數(shù)據(jù)表描述結(jié)點TAB_DESC中都有個指向其表第一列數(shù)據(jù)的指針。元數(shù)據(jù)表描述結(jié)點TAB_DESC的定義如表I所示
權(quán)利要求
1.一種支持表模式可變的元數(shù)據(jù)管理方法,其特征在于,步驟為步驟I、所有元數(shù)據(jù)表按列存儲在一個元數(shù)據(jù)文件中,該步驟包括步驟I. I、依次為每個元數(shù)據(jù)表分配不同的表ID ;步驟I. 2、各元數(shù)據(jù)表的每一列數(shù)據(jù)連續(xù)存儲在一個數(shù)據(jù)段中,每個數(shù)據(jù)段中設(shè)置段控制塊,段控制塊包含段表ID,將段表ID設(shè)置為與該數(shù)據(jù)段相對應(yīng)的元數(shù)據(jù)表的表ID,即段表ID相同的數(shù)據(jù)段存儲的是相同元數(shù)據(jù)表中不同列的數(shù)據(jù)步驟2、數(shù)據(jù)庫系統(tǒng)啟動時,將元數(shù)據(jù)讀入元數(shù)據(jù)緩沖區(qū),并進(jìn)行數(shù)據(jù)按行組織,該步驟包括步驟2. I、將元數(shù)據(jù)文件中各個數(shù)據(jù)段中的數(shù)據(jù)依次讀入元數(shù)據(jù)緩沖區(qū),同一數(shù)據(jù)段中數(shù)據(jù)順序存放;步驟2. 2、段表ID相同的不同數(shù)據(jù)段中的數(shù)據(jù)使用行指針鏈接成數(shù)據(jù)行,每行第一個數(shù)據(jù)項設(shè)置記錄標(biāo)志位;步驟3、分析用戶的元數(shù)據(jù)請求,若為對元數(shù)據(jù)表數(shù)據(jù)記錄的查詢、更新、刪除命令,轉(zhuǎn)步驟4,若為調(diào)整表模式結(jié)構(gòu)請求,轉(zhuǎn)步驟5 ;步驟4、返回用戶查詢結(jié)果,對添加、刪除、更新數(shù)據(jù)記錄在緩沖區(qū)中進(jìn)行標(biāo)記,該步驟包括沿行指針,進(jìn)行數(shù)據(jù)記錄的添加、刪除及更新,隨后設(shè)置進(jìn)行過添加、刪除及更新的數(shù)據(jù)行的記錄標(biāo)志位;步驟5、對元數(shù)據(jù)表進(jìn)行添加、刪除字段,轉(zhuǎn)換為對列的添加、刪除,執(zhí)行用戶請求,更新表模式。步驟6、數(shù)據(jù)庫關(guān)閉時,將元數(shù)據(jù)緩沖區(qū)中數(shù)據(jù)按列寫回元數(shù)據(jù)文件。
2.如權(quán)利要求I所述的一種支持表模式可變的元數(shù)據(jù)管理方法,其特征在于,所述步驟2中的緩沖區(qū)采用順序與鏈?zhǔn)交旌系臄?shù)據(jù)組織方式。
3.如權(quán)利要求I所述的一種支持表模式可變的元數(shù)據(jù)管理方法,其特征在于,所述步驟5包括步驟5. I、若元數(shù)據(jù)表Ti存在新增字段,在元數(shù)據(jù)文件結(jié)尾追加一個新的數(shù)據(jù)段SAi,并將該數(shù)據(jù)段SAi的段表ID設(shè)置為元數(shù)據(jù)表Ti的表ID,將數(shù)據(jù)段SAi內(nèi)的數(shù)據(jù)依次寫入數(shù)據(jù)段SAi中,數(shù)據(jù)段SAi中每一行的位置與元數(shù)據(jù)表Ti中其他數(shù)據(jù)段的相同行的位置相對應(yīng), 即保證元數(shù)據(jù)表Ti中所有數(shù)據(jù)段的相同行具有相同的行號;步驟5. 2、將新增字段讀入元數(shù)據(jù)緩沖區(qū),進(jìn)行數(shù)據(jù)組織;步驟5. 3、若元數(shù)據(jù)表Ti存在刪除字段,將與該列數(shù)據(jù)所對應(yīng)的數(shù)據(jù)段的段表ID置空, 從而使得該數(shù)據(jù)段不屬于任何一個元數(shù)據(jù)表。
全文摘要
本發(fā)明提供了一種支持表模式可變的元數(shù)據(jù)存儲方法和管理策略,其特征在于包括以下步驟所有元數(shù)據(jù)表按列存儲在一個元數(shù)據(jù)文件中,一個字段對應(yīng)數(shù)據(jù)文件中一個段。定義元數(shù)據(jù)緩沖區(qū)結(jié)構(gòu)。數(shù)據(jù)庫系統(tǒng)啟動時,將元數(shù)據(jù)讀入元數(shù)據(jù)緩沖區(qū),并進(jìn)行數(shù)據(jù)按行組織。分析用戶的元數(shù)據(jù)請求。返回用戶查詢結(jié)果,對添加、刪除、更新數(shù)據(jù)記錄在緩沖區(qū)中進(jìn)行標(biāo)記。對元數(shù)據(jù)表進(jìn)行添加、刪除字段,轉(zhuǎn)換為對列的添加、刪除,執(zhí)行用戶請求,更新表模式。數(shù)據(jù)庫關(guān)閉時,將元數(shù)據(jù)緩沖區(qū)中數(shù)據(jù)按列寫回元數(shù)據(jù)文件。本發(fā)明能針對元數(shù)據(jù)管理中,表模式更改時代價較大的問題,提供支持表模式可變的元數(shù)據(jù)管理方法,同時,保持元數(shù)據(jù)查詢效率,提高管理元數(shù)據(jù)靈活性。
文檔編號G06F17/30GK102609492SQ201210019950
公開日2012年7月25日 申請日期2012年1月21日 優(yōu)先權(quán)日2012年1月21日
發(fā)明者樂嘉錦, 夏小玲, 王梅 申請人:東華大學(xué)