吳 鵬
(四川工程職業(yè)技術(shù)學(xué)院,德陽 618000)
對等計算對文件共享系統(tǒng)具有較大的貢獻(xiàn)??墒?,用戶在這種文件共享系統(tǒng)中只得利用文件標(biāo)示符做出查找,很多時候無法獲得期望的效果。因此,結(jié)構(gòu)化數(shù)據(jù)這一概念就規(guī)劃至對等計算范疇里,P2P數(shù)據(jù)管理系統(tǒng)應(yīng)運(yùn)而生[1,2]。
在P2P數(shù)據(jù)管理系統(tǒng)中,有多個數(shù)據(jù)源,也就是說它是多數(shù)據(jù)的一個管理系統(tǒng)。但如若數(shù)據(jù)源不一致,就算面對真實世界中同一個實體,也會出現(xiàn)不一致的表述和描述形式。因此,語義異構(gòu)的問題就隨之而來。
通常,信息集成領(lǐng)域傳統(tǒng)做法是采用中介系統(tǒng)——集中式的方式對語義異構(gòu)問題進(jìn)行闡述。采用物化的方式,把全部數(shù)據(jù)源集中至核心;把全局查詢查詢分析后向數(shù)據(jù)源發(fā)送;利用全局模式對所有的數(shù)據(jù)進(jìn)行統(tǒng)一的管理。
P2P數(shù)據(jù)管理系統(tǒng)并沒有中心控制結(jié)點(diǎn),它是通過動態(tài)廣域網(wǎng)進(jìn)行處理的,不能形成全局、統(tǒng)一的視圖。如需在該系統(tǒng)中對語義異構(gòu)問題進(jìn)行處理,達(dá)到數(shù)據(jù)整合的目的,就應(yīng)當(dāng)在各個數(shù)據(jù)元之間構(gòu)建語義映射。
通常語義映射是通過單一數(shù)據(jù)表當(dāng)做運(yùn)算單位??墒浅33霈F(xiàn)查詢一次就會牽涉數(shù)據(jù)庫里諸多數(shù)據(jù)表的情況,還出現(xiàn)了一種情況是必須同時得到全部需奧數(shù)據(jù)表,查詢指令才能進(jìn)行的現(xiàn)象。執(zhí)行多表查詢定位指令時,應(yīng)把其余的多個數(shù)據(jù)庫中名字相重的表去除。所以,要執(zhí)行多表定位,仍然具有諸多問題要處理。
基于上述情況,本文進(jìn)行深入的探討,指出利用分層索引機(jī)制的方式來處理。另外,利用多節(jié)點(diǎn)集群P2P系統(tǒng)[3]以及通過舉例數(shù)據(jù)表的查詢算法[4],能夠在P2P數(shù)據(jù)管理系統(tǒng)里成功運(yùn)行單表甚至是多表的范圍以及精確匹配的查詢工作。
另外,把數(shù)據(jù)表的查詢、數(shù)據(jù)庫的定位以及元組的發(fā)現(xiàn)分開運(yùn)行,獨(dú)立實現(xiàn)。本課題對數(shù)據(jù)表的查詢以及數(shù)據(jù)庫定位問題進(jìn)行探討。
本文通過研究,就P2P數(shù)據(jù)管理系統(tǒng)的特性進(jìn)行多節(jié)點(diǎn)幾圈P2P系統(tǒng)的設(shè)計。在該體系里,多節(jié)點(diǎn)相互匯聚,成為集群。圖1表明了集群是當(dāng)做一個整體,進(jìn)行hordc53環(huán)的形成過程。
圖1 多節(jié)點(diǎn)集群P2P系統(tǒng)
顯然,每個集群內(nèi),擁有諸多節(jié)點(diǎn)。它們能夠按照需求,構(gòu)筑成為許多小的子系統(tǒng)。假若有個集群里的節(jié)點(diǎn)數(shù)量偏少,就將其兩兩結(jié)合組成網(wǎng)絡(luò)。假若有個集群里節(jié)點(diǎn)數(shù)量偏多,而要進(jìn)行數(shù)據(jù)共享,就將運(yùn)用隨意P2P算法構(gòu)筑P2P子網(wǎng)絡(luò)。
通常,多節(jié)點(diǎn)的集群P2P網(wǎng)絡(luò)體系在構(gòu)成時,能夠把一樣的數(shù)據(jù)位于集群里增添一些備份,以期提升數(shù)據(jù)的下載速度以及增加安全性。此外,能夠把和語義有關(guān)的數(shù)據(jù)向相同的集群進(jìn)行分配,進(jìn)而使得語義聚集能夠運(yùn)行。
因此,本文下述討論與研究,均為基于多節(jié)點(diǎn)的集群P2P網(wǎng)絡(luò)開展的。
在P2P數(shù)據(jù)管理體系里,將有多個節(jié)點(diǎn)擁有數(shù)據(jù)庫共享的功能。將一個數(shù)據(jù)庫內(nèi)的多節(jié)點(diǎn)緩存,構(gòu)筑集群,如此就可以在查詢功能執(zhí)行時,若尋到其中一個節(jié)點(diǎn),對于找尋另外的節(jié)點(diǎn)就比較便捷了,即查詢算法的簡化。而對于在一個數(shù)據(jù)庫里含有多個數(shù)據(jù)表進(jìn)行緩存,而關(guān)于集群子網(wǎng)絡(luò)中進(jìn)行緩存的分布方法,緩存子網(wǎng)能夠利用所有一個結(jié)構(gòu)化P2P算法進(jìn)行運(yùn)行。而運(yùn)行集群子網(wǎng)采用Chord協(xié)議的方式,描繪成如圖2所示。
圖2 緩存數(shù)據(jù)源節(jié)點(diǎn)子網(wǎng)
通常P2P數(shù)據(jù)管理體系里含有多組數(shù)據(jù)源,而數(shù)據(jù)源存在一定的差異,其對于現(xiàn)實中相同的實物,仍然具有不一樣的表述與描述,因此,語義異構(gòu)這一問題的產(chǎn)生也是因上述差異而導(dǎo)致的。
要處理語義異構(gòu)的問題,需在各個數(shù)據(jù)源節(jié)點(diǎn),就要在共享的數(shù)據(jù)表屬性以及表名中隊一些列關(guān)鍵字進(jìn)行定義,以此當(dāng)做語義映射的媒介。而關(guān)鍵字一樣的異構(gòu)數(shù)據(jù)源[5],其間將構(gòu)建自動的映射關(guān)系。上述相同的關(guān)鍵字,即當(dāng)做數(shù)據(jù)共享的外模式。經(jīng)外模式的合理運(yùn)用,先前產(chǎn)生的數(shù)據(jù)就成為了名稱相似的多組數(shù)據(jù)。而外模式在節(jié)點(diǎn)內(nèi)并沒有徹底的物化成視圖,它僅僅構(gòu)筑了內(nèi)、外雙模式,即數(shù)據(jù)表中真實的一種模式間互相對應(yīng)的一種關(guān)系。系統(tǒng)執(zhí)行查詢過程中,運(yùn)用下文闡述的算法,把通過外模式運(yùn)行的查詢程序向通過內(nèi)模式運(yùn)行的查詢程序進(jìn)行替換,再運(yùn)行程序。
通常外模式表述的文件生產(chǎn)以及維護(hù),通過數(shù)據(jù)源節(jié)點(diǎn)管理員,使用半自動的運(yùn)行模式得以實現(xiàn),其通過描述文件的方式在節(jié)點(diǎn)里存儲。假若數(shù)據(jù)表的緩存通過所節(jié)點(diǎn)得以儲存,詳見圖2表明的T2參數(shù),則外模式描述文件通過儲存表的歸類方式的節(jié)點(diǎn)得以儲存以及輸送。假若數(shù)據(jù)表的緩存通過其中一個節(jié)點(diǎn)得以儲存,詳見圖2表明的T1參數(shù),則外模式描述文件通過此節(jié)點(diǎn)進(jìn)行儲存以及輸送。
此外,除了錄入表和屬性的名稱,外模式還錄入數(shù)據(jù)表屬于的集群標(biāo)識符,以及輸送描述文件節(jié)點(diǎn)的IP地址。圖3舉例說明外模式描述文件:
圖3 外模式描述文件示例
而外模式描述文件生成以后,應(yīng)把其輸送至整套P2P網(wǎng)絡(luò)體系里。因外模式描述文件保存的節(jié)點(diǎn)都根據(jù)數(shù)據(jù)表的全部名稱,通過哈希運(yùn)算[6]得到,例如圖3所表明的外模式描述文件,根據(jù)表“同學(xué)信息表”或者“學(xué)生信息表”,其文件標(biāo)識符就是通過哈希運(yùn)算取得。再把外模式描述文件向?qū)?yīng)的后記集群進(jìn)行傳遞。
后繼集群接收該文件以后,把它保存至集群里的節(jié)點(diǎn),以便查詢過程可以使用。
通常會有名字一樣的數(shù)據(jù)表存在于各個數(shù)據(jù)庫中,而外模式描述文件,按照數(shù)據(jù)表名稱,運(yùn)用哈希運(yùn)算獲取文件標(biāo)識符同時向P2P網(wǎng)絡(luò)進(jìn)行傳送。所以上述名字相同卻來自于各個數(shù)據(jù)庫的表,其外模式文件將向一個集群匯聚。
指的是通過外模式描述文件當(dāng)做前提而執(zhí)行的。按照查詢所牽涉的數(shù)據(jù)表數(shù)目,能夠劃成單表以及多表查詢。
通常外模式描述文件按數(shù)據(jù)表名稱當(dāng)做關(guān)鍵字,運(yùn)用哈希運(yùn)算向P2P網(wǎng)絡(luò)進(jìn)行分布。假若數(shù)據(jù)表處于外模式文件里存在K個名稱,應(yīng)把外模式描述文件根據(jù)各個名稱當(dāng)做關(guān)鍵字執(zhí)行哈希運(yùn)算,再向網(wǎng)絡(luò)進(jìn)行分布,備份數(shù)量為K。
所有數(shù)據(jù)表在外模式描述文件中都有幾個別名,而屬性在數(shù)據(jù)表里也都有幾個別名。假若各個表名—屬性名均有完整的一份數(shù)據(jù)備份對應(yīng)。則會有大量的冗余數(shù)據(jù)生成,進(jìn)而使得系統(tǒng)開發(fā)以及儲存成本提升。
為提升查詢效率,減弱復(fù)雜程度,將按照外模式描述文件修改查詢條件,進(jìn)而做到提升數(shù)據(jù)資源的使用效率,降低備份數(shù)目的目標(biāo)。
圖3所示為外模式描述文件。有關(guān)真實數(shù)據(jù)模式有:學(xué)號、姓名、年齡、身高,即學(xué)生信息表的相關(guān)內(nèi)容按上文闡述,學(xué)生信息表有其他的別人,而里面的4個屬性都有另外的別名。假若5個參數(shù)組合都有一個備份,則共有2×3×3×3×2=108個數(shù)據(jù)備份。這是不合理的。所以,外模式描述文件尋獲后,將會查詢條件作出替換,把全部別名轉(zhuǎn)換成數(shù)據(jù)表里學(xué)生真實姓名,之后的查詢均采取轉(zhuǎn)換后查詢條件。
按數(shù)據(jù)表執(zhí)行查詢應(yīng)對相關(guān)因素進(jìn)行充分的考慮。按上述提及的查詢舉例,具體闡述查詢的整個運(yùn)行流程:
2)如后繼集群里并未產(chǎn)生對應(yīng)的外模式描述文件,那么顯示查詢失敗。否則,進(jìn)行后續(xù)工作。
3)開啟獲得的外模式描述文件,執(zhí)行有沒有叫“學(xué)生信息表”的表名,同時要包含“學(xué)生序號,姓名,學(xué)生身高,Age”這些屬性內(nèi)容,若無,查詢失敗。否則,進(jìn)行后續(xù)工作。
4)替換查詢條件。把查詢條件里的名稱轉(zhuǎn)變成<TableInofrmation>下第一個表名。把全部屬性名稱轉(zhuǎn)變成< Shuxing>下第一個屬性名。
5)傳送外模式描述文件的IP地址以及節(jié)點(diǎn),也是在共享這個數(shù)據(jù)表的集群里。和節(jié)點(diǎn)構(gòu)建連結(jié),假若連結(jié)成功,將執(zhí)行元組查詢。否則,進(jìn)入下個步驟。
6)假若連結(jié)失敗,原因或許是節(jié)點(diǎn)失效,但此時共享數(shù)據(jù)表集群或許還是有效的。按照已獲得的外模式描述文件里的Cluster ID,即集群標(biāo)識符,進(jìn)行數(shù)據(jù)表集群的查詢。假若找到,即執(zhí)行與阿奴查詢。否則,退出運(yùn)行程序。
所謂多表查詢,指的是不止一個數(shù)據(jù)表,經(jīng)一個及一個以上屬性的連結(jié)而執(zhí)行的查詢。其中最為簡潔的即2個數(shù)據(jù)表,經(jīng)單個數(shù)據(jù)連結(jié)而做出的查詢。舉例:數(shù)據(jù)表M、N,經(jīng)M,x和N,y屬性執(zhí)行查詢,則為Select * Fromm,N Where M.x = N.y。
多表查詢,顧名思義將牽涉多個數(shù)據(jù)表。所以應(yīng)保證其中的數(shù)據(jù)表以及其數(shù)據(jù)均所屬于同一數(shù)據(jù)庫,才可以執(zhí)行下一步的查詢工作。需要注意的是,外模式描述文件通過數(shù)據(jù)表當(dāng)做單位,向網(wǎng)絡(luò)進(jìn)行分布,而數(shù)據(jù)表所在集群即使確定,也不能保證多表查詢一定能夠順利準(zhǔn)確的運(yùn)行。
所以,應(yīng)就查詢進(jìn)行做出調(diào)整。運(yùn)用上文闡述的方式核實第一個表屬于哪個數(shù)據(jù)庫。把查詢指令傳遞至數(shù)據(jù)庫所屬的集群。再判別查詢所涉的另外數(shù)據(jù)表有無在集群范圍內(nèi)。也就是通過數(shù)據(jù)表的名稱為關(guān)鍵詞,進(jìn)行集群子網(wǎng)范圍的查詢。假若存在相應(yīng)元數(shù)據(jù)的外模式描述文件,且所需屬性均包含,就執(zhí)行元組查詢。如若不然,顯示查詢失敗。
就數(shù)據(jù)表定位以及語義異構(gòu)相關(guān)研究,不同的學(xué)者也有相應(yīng)的一些解決意見。
PeerDB[7]項目運(yùn)用關(guān)鍵字進(jìn)行屬性名以及關(guān)系名標(biāo)注的方式,體現(xiàn)異構(gòu)數(shù)據(jù)源應(yīng)語義映射。另外,就所有關(guān)鍵字均構(gòu)建一定的物化視網(wǎng)。另外,PeerDB項目通過非結(jié)構(gòu)化P2P網(wǎng)絡(luò)為前提,相同數(shù)據(jù)庫內(nèi)的數(shù)據(jù)表,無法構(gòu)成語義聚集。不能處理多表查詢。另外,所有關(guān)鍵字均構(gòu)建一定的物化視圖,提升查詢效率。另外也增添數(shù)據(jù)冗余,使得系統(tǒng)靈活性減弱。
Hyperion[8]項目將復(fù)雜的映射表達(dá)式、ECA[9]以及映射表有關(guān)規(guī)則控制節(jié)點(diǎn)相互信息轉(zhuǎn)化進(jìn)行定義,妥善處理了P2P范疇中有關(guān)的語義異構(gòu),上述任務(wù)應(yīng)由專家在節(jié)點(diǎn)中在查詢發(fā)起前,以及增添網(wǎng)絡(luò)期間進(jìn)行構(gòu)建,所以系統(tǒng)運(yùn)作成本頗高。
PIER[10]項目提出系統(tǒng)里的全部節(jié)點(diǎn)均適用于普用的標(biāo)準(zhǔn)全局模式,并未確定特定的算法進(jìn)行節(jié)點(diǎn)間語義異構(gòu)問題的處理。
由于其管理系統(tǒng)里的節(jié)點(diǎn)自治性問題使得數(shù)據(jù)模式出現(xiàn)了異構(gòu)問題,P2P數(shù)據(jù)管理系統(tǒng)需要進(jìn)行數(shù)據(jù)集合,給予用戶一個統(tǒng)一的查詢?nèi)肟凇?/p>
課題在所有數(shù)據(jù)源節(jié)點(diǎn)就共享的數(shù)據(jù)表的名稱以及屬性進(jìn)行定義。而語義映射的媒介就是關(guān)鍵字。其中標(biāo)的相同的關(guān)鍵字結(jié)合即構(gòu)成共享數(shù)據(jù)的外模式。這種方式的處理將先前共享的數(shù)據(jù),看起來就像是有著類似名字的數(shù)據(jù)??墒窃诠?jié)點(diǎn)內(nèi),斌給把外模式徹底物化成視圖。卻僅僅構(gòu)建了內(nèi)、外模式間互相對應(yīng)的連結(jié)。
完成定義的關(guān)鍵字列表,執(zhí)行外模式描述文件,向網(wǎng)絡(luò)進(jìn)行分散,而外模式描述文件在生成時,就涵括了數(shù)據(jù)表以及屬性全部的別名,還把外模式描述文件根據(jù)數(shù)據(jù)表的別名向P2P網(wǎng)絡(luò)進(jìn)行分布。而在進(jìn)行查詢時,外模式描述文件尋求之后,即刻便把查詢請求里的全部別名向真實數(shù)據(jù)表以及屬性名進(jìn)行轉(zhuǎn)化,因此,不但可以便捷的根據(jù)任何名字尋求所需數(shù)據(jù)表,還能夠降低數(shù)據(jù)備份數(shù)目,簡化算法,提升運(yùn)行效率。
[1] 余敏, 李戰(zhàn)懷, 張龍波.P2P數(shù)據(jù)管理[J].軟件學(xué)報, 2006,17(8): 1717-1730.
[2] 余敏, 李戰(zhàn)懷, 張龍波.P2P數(shù)據(jù)管理研究趨勢[J].計算機(jī)應(yīng)用研究, 2006, 23(8): 4-7.
[3] 姚佳麗, 張坤龍, 王珊.基于P2P的數(shù)據(jù)索引與查詢[J].計算機(jī)科學(xué), 2005, 32(3): 69-72.
[4] Zhao Dan.Mylopoulos[J] An ECA Rule Rewriting Mechanism for Peer Data Management, 2006.
[5] 周婧, 王意潔, 李思昆.一種基于數(shù)據(jù)相關(guān)性的優(yōu)化數(shù)據(jù)一致性維護(hù)方法[J].計算機(jī)學(xué)報, 2008, 315: 741-754.
[6] 凌波, 周水庚, 周傲英.P2P信息檢索系統(tǒng)的查詢結(jié)果排序與合并策略[J].計算機(jī)學(xué)報, 2007, 30(3): 405-414.
[7] Karger, Lehman Consistent hashing and random trees Distributed caching protocols for relieving hot spots on the World Wide Web 1997.
[8] Stoica t.Morris R Chord.A Scalable Peer-to-peer Lookup Protocol for Interne: Applications[J], 2003, (01).
[9] 蔣卓明, 周旭, 許榕生.基于ISP-Join的動態(tài)P2P流量優(yōu)化模型[J].北京理工大學(xué)學(xué)報, 2010(1): 64-68.
[10] 湯天亮, 張曉龍, 陳珂, 等.一種高效的P2P環(huán)境中的窗口查詢算法[J].計算機(jī)研究與發(fā)展, 2009, z(2).