摘要:數(shù)據(jù)庫(kù)技術(shù)的發(fā)展促使其在不同領(lǐng)域得到了廣泛的應(yīng)用。包括數(shù)字圖書館等在內(nèi)的一些新的應(yīng)用領(lǐng)域?qū)?shù)據(jù)庫(kù)的應(yīng)用提出了更高的要求。而在這些新的應(yīng)用領(lǐng)域中,多會(huì)涉及到一些復(fù)雜的、非傳統(tǒng)形式的數(shù)據(jù)。而對(duì)象代理數(shù)據(jù)庫(kù)能較好地支持各種非傳統(tǒng)形式的數(shù)據(jù)類型,可以對(duì)各種復(fù)雜的數(shù)據(jù)類型實(shí)施有效的管理,而且對(duì)象代理數(shù)據(jù)庫(kù)引入的對(duì)象代理數(shù)據(jù)庫(kù)跨類查詢與代理對(duì)象查詢的索引結(jié)構(gòu),現(xiàn)在提高了數(shù)據(jù)庫(kù)跨類查詢的效率。該文主要從對(duì)象代理數(shù)據(jù)庫(kù)跨類查詢索引結(jié)構(gòu)的設(shè)計(jì)、對(duì)象代理數(shù)據(jù)庫(kù)跨類查詢索引機(jī)制的實(shí)現(xiàn)以及一種基于代理對(duì)象查詢機(jī)制索引結(jié)構(gòu)的說(shuō)明這三個(gè)方面來(lái)對(duì)對(duì)象代理數(shù)據(jù)庫(kù)跨類查詢與代理對(duì)象查詢的索引結(jié)構(gòu)作詳細(xì)的分析。
關(guān)鍵詞:對(duì)象代理數(shù)據(jù)庫(kù);庫(kù)跨類查詢;代理對(duì)象查詢;索引結(jié)構(gòu)
中圖分類號(hào):TP393文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2012)03-0502-02
1對(duì)象代理數(shù)據(jù)庫(kù)跨類查詢索引結(jié)構(gòu)的設(shè)計(jì)
1.1對(duì)象代理數(shù)據(jù)庫(kù)跨類查詢概述
在對(duì)象代理數(shù)據(jù)庫(kù)中,一個(gè)對(duì)象會(huì)對(duì)應(yīng)一個(gè)相應(yīng)的標(biāo)識(shí)符,而對(duì)象間的關(guān)系就是由相應(yīng)的對(duì)象所對(duì)應(yīng)的標(biāo)識(shí)符之間的關(guān)系來(lái)體現(xiàn)的。對(duì)象之間的關(guān)系是數(shù)據(jù)庫(kù)實(shí)現(xiàn)跨類查詢的基礎(chǔ)。通過(guò)數(shù)據(jù)庫(kù)查詢語(yǔ)言中那些支持跨類查詢的描述和支持跨類查詢處理操作的描述,從而完成對(duì)象代理數(shù)據(jù)庫(kù)跨類查詢的操作。
1.2認(rèn)識(shí)對(duì)象代理數(shù)據(jù)庫(kù)跨類查詢索引結(jié)構(gòu)
基于對(duì)象代理數(shù)據(jù)庫(kù)的對(duì)象代理數(shù)據(jù)庫(kù)跨類查詢索引結(jié)構(gòu)多是依靠對(duì)象間的雙向指針連接、跨類查詢處理以及跨類查詢描述進(jìn)行設(shè)計(jì)的。其中跨類查詢處理以及跨類查詢描述是依賴于對(duì)象間的雙向指針連接的。1.2.1對(duì)象間的雙向指針連接數(shù)據(jù)庫(kù)中的每一個(gè)對(duì)象都具有一個(gè)唯一的對(duì)象標(biāo)識(shí)符,系統(tǒng)可以根據(jù)對(duì)象相對(duì)應(yīng)的標(biāo)識(shí)符以及這些對(duì)象之間所建立的聯(lián)系,借助這些對(duì)象彼此間建立的雙向指針連接來(lái)表示這些對(duì)象之間的相互聯(lián)系。其中用于描述對(duì)象之間相互關(guān)系的雙向指針連接,包括指針連接的建立和指針連接的刪除這兩個(gè)方面。
1)指針連接的建立。當(dāng)數(shù)據(jù)庫(kù)系統(tǒng)在創(chuàng)建那些屬于不同類而且彼此之間具有相互聯(lián)系的對(duì)象時(shí),數(shù)據(jù)庫(kù)系統(tǒng)會(huì)根據(jù)相應(yīng)的對(duì)象所對(duì)應(yīng)的標(biāo)識(shí)符,通過(guò)建立這些對(duì)象彼此之間的指針連接來(lái)表示這些對(duì)象之間的相互關(guān)系。
2)指針連接的刪除。當(dāng)數(shù)據(jù)庫(kù)系統(tǒng)中某個(gè)對(duì)象被刪除時(shí),數(shù)據(jù)庫(kù)系統(tǒng)會(huì)將那些與這個(gè)被刪除的對(duì)象之間相關(guān)的指針連接自動(dòng)刪除。
1.2.2跨類查詢處理
在數(shù)據(jù)庫(kù)跨類查詢處理時(shí),會(huì)以某個(gè)初始類中的對(duì)象為出發(fā)點(diǎn),通過(guò)對(duì)象之間的指針連接,來(lái)尋找目標(biāo)類中的對(duì)象,并使用跨類查詢的目標(biāo)表達(dá)式,對(duì)目標(biāo)類中的對(duì)象進(jìn)行計(jì)算,其中的計(jì)算結(jié)果即是跨類查詢的結(jié) 果。1.2.3跨類查詢描述
在數(shù)據(jù)庫(kù)查詢語(yǔ)言中,數(shù)據(jù)庫(kù)查詢語(yǔ)言中包含描述跨類查詢的語(yǔ)法,可以有效支持跨類查詢描述定義的相關(guān)操作。其中包括路徑表達(dá)式以及和類路徑表達(dá)式相似的形式。
2對(duì)象代理數(shù)據(jù)庫(kù)跨類查詢索引機(jī)制的實(shí)現(xiàn)
2.1對(duì)象代理數(shù)據(jù)庫(kù)系統(tǒng)對(duì)對(duì)象之間的雙向指針連接自動(dòng)維護(hù)的實(shí)現(xiàn)2.1.1具有聯(lián)系的對(duì)象之間雙向指針連接的自動(dòng)創(chuàng)建數(shù)據(jù)庫(kù)系統(tǒng)在創(chuàng)建一個(gè)類中的對(duì)象時(shí)會(huì)根據(jù)其為每個(gè)對(duì)象所分配的相應(yīng)的標(biāo)識(shí)符,找到與該對(duì)象具有聯(lián)系的其他所有的對(duì)象,然后數(shù)據(jù)庫(kù)系統(tǒng)中把這些用于描述對(duì)象之間相互關(guān)系的雙向指針連接記錄下來(lái),而這些用于描述對(duì)象之間相互關(guān)系的雙向指針連接是由新創(chuàng)建對(duì)象所對(duì)應(yīng)的標(biāo)識(shí)符以及其所屬類所對(duì)應(yīng)的標(biāo)識(shí)符、關(guān)聯(lián)對(duì)象所對(duì)應(yīng)的標(biāo)識(shí)符以及關(guān)聯(lián)對(duì)象所屬類所對(duì)應(yīng)的標(biāo)識(shí)符組成的。這些對(duì)象間可能存在著1:m或1:1的關(guān)系,對(duì)于1:m的關(guān)系,則可通過(guò)多對(duì)的用于描述對(duì)象之間相互關(guān)系的雙向指針連接來(lái)記錄這些對(duì)象彼此之間的關(guān)系。而對(duì)于1:1的關(guān)系,可以通過(guò)一對(duì)用于描述對(duì)象之間相互關(guān)系的雙向指針連接來(lái)記錄這兩個(gè)對(duì)象之間的關(guān)系。
2.1.2具有聯(lián)系的對(duì)象之間雙向指針連接的自動(dòng)刪除
數(shù)據(jù)庫(kù)系統(tǒng)在刪除某個(gè)類的其中一個(gè)對(duì)象的時(shí)候,數(shù)據(jù)庫(kù)系統(tǒng)會(huì)在記錄中自動(dòng)找到那些與該被刪除的對(duì)象之間所有的指針連接,并自動(dòng)將這些指針連接從數(shù)據(jù)庫(kù)系統(tǒng)中刪除掉。2.2跨類查詢的描述在進(jìn)行跨類查詢的描述時(shí),需要具備跨類查詢的起點(diǎn)類和終點(diǎn)類、跨類查詢所要經(jīng)歷的路徑、跨類查詢的目標(biāo)表達(dá)式等幾項(xiàng)內(nèi)容。其中對(duì)跨類查詢的方向沒(méi)有明確的規(guī)定,其方向即可以是單向的也可以是雙向的。2.3跨類查詢的執(zhí)行
跨類查詢的執(zhí)行就是以某個(gè)初始類中的對(duì)象為出發(fā)點(diǎn),通過(guò)對(duì)象之間的指針連接來(lái)尋找目標(biāo)類中的對(duì)象,并使用跨類查詢的目標(biāo)表達(dá)式,將目標(biāo)對(duì)象表達(dá)式的計(jì)算結(jié)果返回??珙惒樵儓?zhí)行的具體步驟如下:
1)根據(jù)跨類查詢命令,確定目標(biāo)類與初始類之間的類路徑,然后在確定類路徑之后,還需要對(duì)其正確性進(jìn)行檢查,要檢查該類路徑中是否存在回路以及類路徑中前后兩個(gè)類之間是否具有某種語(yǔ)義上的關(guān)聯(lián)。
2)對(duì)于初始類中的每一個(gè)對(duì)象,要在跨類查詢路徑所涉及的所有類之間查找具有相互聯(lián)系的對(duì)象,一直到找到屬于目標(biāo)類的相關(guān)對(duì)象為止。由于這些具有相互聯(lián)系的對(duì)象之間可能存在著1:m或1:1的關(guān)系,對(duì)于1:m的關(guān)系,則尋找與前一個(gè)類中的某一個(gè)對(duì)象具有相互聯(lián)系的后一個(gè)類中的多個(gè)對(duì)象,然后一直重復(fù)上述的查詢處理過(guò)程,直到所有的相關(guān)對(duì)象取完為止。對(duì)于1:1的關(guān)系,則尋找與前一個(gè)類中的某一個(gè)對(duì)象具有相互聯(lián)系的后一個(gè)類中的相應(yīng)的某一個(gè)對(duì)象。
3)采用相應(yīng)的數(shù)據(jù)庫(kù)表達(dá)式計(jì)算方法,并借助跨類查詢所設(shè)定的目標(biāo)類上的表達(dá)式,來(lái)對(duì)目標(biāo)類上的對(duì)象進(jìn)行計(jì)算,完成跨類查詢的處理操作。
2.4路徑表達(dá)式的計(jì)算
對(duì)象代理數(shù)據(jù)庫(kù)查詢處理模塊的路徑表達(dá)式計(jì)算的具體步驟如下:
1)驗(yàn)證路徑表達(dá)式的正確性。一個(gè)正確的路徑表達(dá)要滿足如下兩個(gè)方面的條件:一是正確的路徑表達(dá)要求前后兩個(gè)類之間要具有直接的代理關(guān)系,其中二者可以互為代理關(guān)系,或者其中一個(gè)類為另外一個(gè)類的代理類;二是正確的路徑表達(dá)要求路徑表達(dá)式的目標(biāo)表達(dá)式必須是滿足路徑目標(biāo)類屬性要求的一個(gè)計(jì)算表達(dá)式。
2)數(shù)據(jù)庫(kù)系統(tǒng)對(duì)初始類中的每一個(gè)對(duì)象進(jìn)行掃描的時(shí)候,要根據(jù)相應(yīng)的索引結(jié)構(gòu),對(duì)路徑表達(dá)式所涉及的所有類,然后按照深度優(yōu)先遍歷算法查找這些類中具有相互聯(lián)系的對(duì)象之間的代理關(guān)系,一直到找到目標(biāo)類上的相應(yīng)的對(duì)象為止。由于路徑表達(dá)式的表達(dá)方向不明確,既可以是雙向的也可以是單向的,所以查找的源點(diǎn)即可以是源代理類,也可以是目標(biāo)代理類。
3)完成上述操作找到目標(biāo)類上的對(duì)象后,還需要結(jié)合路徑表達(dá)式的目標(biāo)表達(dá)式,按照數(shù)據(jù)庫(kù)表達(dá)式的計(jì)算方法,對(duì)目標(biāo)表達(dá)式進(jìn)行計(jì)算,并要把最終的計(jì)算結(jié)果返回。
3一種基于代理對(duì)象查詢機(jī)制的索引結(jié)構(gòu)
PNI即路徑導(dǎo)航索引是基于代理對(duì)象查詢機(jī)制而且支持路徑表達(dá)式高效計(jì)算的一種索引結(jié)構(gòu),以下就以路徑導(dǎo)航索引為例來(lái)對(duì)代理對(duì)象查詢的索引結(jié)構(gòu)進(jìn)行說(shuō)明。3.1路徑導(dǎo)航索引結(jié)構(gòu)的組成路徑導(dǎo)航索引結(jié)構(gòu)主要由Identity-Index、Path-Instance-Table、Attribute-Index這三部分組成。其中Path-Instance-Table用于存儲(chǔ)路徑的實(shí)例,而Identity-Index和Attribute-Index的建立是以Path-Instance-Table為基礎(chǔ)的,Identity-Index和Attribute-Index的建立可以有效的實(shí)現(xiàn)快速的路徑實(shí)例檢索。
3.2路徑導(dǎo)航索引結(jié)構(gòu)的說(shuō)明3.2.1 Path-Instance-Table
Path-Instance-Table翻譯成漢語(yǔ)即路徑實(shí)例表,顧名思義,路徑實(shí)例表就是一張用來(lái)存儲(chǔ)給定路徑的所有實(shí)例的表,而且路徑實(shí)例表中的每個(gè)元組對(duì)應(yīng)一個(gè)具體的路徑實(shí)例。數(shù)據(jù)庫(kù)系統(tǒng)根據(jù)對(duì)象之間的代理關(guān)系,在不同的代理層次中,會(huì)給定相應(yīng)層次的一個(gè)不同的路徑。也就是說(shuō),可以通過(guò)對(duì)象間的代理關(guān)系來(lái)確定這些對(duì)象所有的路徑實(shí)例。
路徑實(shí)例表中存儲(chǔ)的不是完整的對(duì)象實(shí)例,其中只存儲(chǔ)了組成路徑實(shí)例的所有代理對(duì)象的OID。在給定的一條路徑即P=C1→C2→…→Cn,該路徑所對(duì)應(yīng)的Path-Instance-Table的模式為[S1:OID,S2:OID,…,Sn:OID],其長(zhǎng)度路徑為n-1,是一個(gè)具有n列的路徑實(shí)例表,而且每列的數(shù)據(jù)類型都是為OID的數(shù)據(jù)類型,即是取值范圍為C1到Cn的所有實(shí)例的OID數(shù)據(jù)類型的數(shù)據(jù)集合,而路徑實(shí)例表的每一行對(duì)應(yīng)Path-Instance-Table的一個(gè)路徑實(shí)例。
其中Path-Instance-Table即路徑實(shí)例表在設(shè)計(jì)時(shí)需要做到如下兩點(diǎn):
1)對(duì)于互為逆路徑的兩條路徑,只存儲(chǔ)其中的一個(gè)路徑實(shí)例,這樣看以節(jié)省存儲(chǔ)開銷。因?yàn)閷?duì)于任意可逆路徑P及其逆路徑P′,將組成P的每一個(gè)路徑實(shí)例的對(duì)象序列進(jìn)行順序置換后就可以得到P′的路徑實(shí)例。
2)如果路徑實(shí)例表存儲(chǔ)的是完整的路徑實(shí)例,在計(jì)算路徑表達(dá)式時(shí),需要找到路徑實(shí)例的最后一個(gè)對(duì)象實(shí)例,通過(guò)投影計(jì)算,推出路徑表達(dá)式的結(jié)果。如果路徑實(shí)例表存儲(chǔ)的只是存儲(chǔ)路徑實(shí)例中的第一個(gè)和最后一個(gè)實(shí)例,需要進(jìn)行一次對(duì)象遍歷以存取路徑實(shí)例上相應(yīng)的對(duì)象實(shí)例,然后進(jìn)行路徑表達(dá)式的計(jì)算。
3.2.2 Identity-Index
在路徑實(shí)例表上建立Identity-Index,可以快速的實(shí)現(xiàn)路徑實(shí)例的檢索。其中Identity-Index是通過(guò)在路徑實(shí)例表的每一列上建立一個(gè)以O(shè)ID作為記錄關(guān)鍵字的B+樹索引來(lái)實(shí)現(xiàn)的。其中addr1到addrn是包含有記錄關(guān)鍵字OID的路徑實(shí)例對(duì)應(yīng)路徑實(shí)例表相應(yīng)元組的物理地址,PagePointer是指向索引樹下一層結(jié)點(diǎn)的指針。
3.2.3 Attribute-Index
在路徑實(shí)例表上建立Attribute-Index,可以有效減少路徑表達(dá)式計(jì)算的開銷。Attribute-Index是將路徑上某個(gè)代理類對(duì)象的屬性值映射到包含該對(duì)象的路徑實(shí)例信息上。其中Key-length是索引屬性的長(zhǎng)度,Key-value是索引記錄的關(guān)鍵字。
4結(jié)束語(yǔ)
結(jié)論:對(duì)象代理數(shù)據(jù)庫(kù)跨類查詢與代理對(duì)象查詢作為支持那些非傳統(tǒng)的復(fù)雜數(shù)據(jù)查詢的兩種重要的查詢方法,在當(dāng)前的數(shù)據(jù)庫(kù)查詢應(yīng)用領(lǐng)域得到了廣泛的應(yīng)用。而對(duì)象代理數(shù)據(jù)庫(kù)跨類查詢與代理對(duì)象查詢方法的實(shí)現(xiàn)是以其所采用的索引結(jié)構(gòu)為基礎(chǔ)的,索引結(jié)構(gòu)的設(shè)計(jì)和優(yōu)化直接決定著對(duì)象代理數(shù)據(jù)庫(kù)跨類查詢與代理對(duì)象查詢這兩種數(shù)據(jù)庫(kù)查詢方法的查詢效率,因此如何實(shí)現(xiàn)基于對(duì)象代理數(shù)據(jù)庫(kù)跨類查詢機(jī)制索引結(jié)構(gòu)的優(yōu)化以及基于代理對(duì)象查詢機(jī)制索引結(jié)構(gòu)的優(yōu)化,將成為今后數(shù)據(jù)庫(kù)數(shù)據(jù)查詢研究領(lǐng)域的一項(xiàng)重要研究課題。
參考文獻(xiàn):
[1]王國(guó)仁.路徑表達(dá)式的算法研究[J].計(jì)算