摘要:提出一種P2P網(wǎng)絡(luò)環(huán)境下基于RDF/S 數(shù)據(jù)模型的數(shù)據(jù)庫(kù)語義查詢?cè)拖到y(tǒng),可以有效地對(duì)各種基于ODBC的異構(gòu)數(shù)據(jù)源進(jìn)行語義查詢#65377;首先數(shù)據(jù)內(nèi)容經(jīng)RDF/S描述成RDF/S schema片斷形式,然后對(duì)片段進(jìn)行編碼,再把編碼雜湊到DHT中,就可以使用Chord協(xié)議定位目標(biāo)節(jié)點(diǎn)#65377;
關(guān)鍵詞:資源描述框架模式; 視圖; 分布式哈希表; 結(jié)構(gòu)化覆蓋網(wǎng)
中圖分類號(hào):TP311.13文獻(xiàn)標(biāo)志碼:A
文章編號(hào):1001-3695(2007)10-0260-03
0引言
典型的P2P系統(tǒng)如Napster和Gnutella等,僅支持基于文件標(biāo)志或內(nèi)容的查詢#65377;數(shù)據(jù)查詢的粒度較大,管理數(shù)據(jù)的能力較差#65377;P2P系統(tǒng)與數(shù)據(jù)庫(kù)技術(shù)的結(jié)合,必然會(huì)降低數(shù)據(jù)查詢的粒度,提高管理數(shù)據(jù)的能力#65377;
Pizza[1]和PeerDB[2]是兩個(gè)基于P2P的數(shù)據(jù)管理系統(tǒng),但它們?nèi)匀皇腔陉P(guān)鍵字的查詢,不能表示和查詢結(jié)構(gòu)化或半結(jié)構(gòu)化的復(fù)雜語義數(shù)據(jù)#65377;RDF/S[3]非常適合建立語義覆蓋網(wǎng),被稱為資源描述框架模式語言(resource description framework and schema language),簡(jiǎn)稱為資源描述框架模式(RDF/S schema),是W3C推薦的一種簡(jiǎn)單的本體表示語言#65377;使用RDF/S建立數(shù)據(jù)模型,可以彌補(bǔ)關(guān)鍵字查詢的不足,豐富系統(tǒng)的數(shù)據(jù)管理手段#65377;本文提出了一種新的在P2P環(huán)境下基于RDF/S schema的數(shù)據(jù)庫(kù)語義查詢?cè)拖到y(tǒng)#65377;
1基于RDF/S schema的數(shù)據(jù)模型
基于RDF/S schema的數(shù)據(jù)模型[4]描述語義的數(shù)據(jù)內(nèi)容,形成格式化的若干三元組#65377;這些三元組按其語義關(guān)系,可構(gòu)成一張有向多邊圖(RDF/S schema graph),并可編碼構(gòu)建鄰接蘊(yùn)涵立方體(AdjSub cube)#65377;
RDF/S schema非常適合建立語義覆蓋網(wǎng)(SON),建立的數(shù)據(jù)模型具有良好的可移植性#65377;在基于模式的P2P系統(tǒng)中,不可能預(yù)先構(gòu)建統(tǒng)一的全局模式,但是鄰近節(jié)點(diǎn)間可以通過映射它們的類和屬性的語義,建立局部模式#65377;另外,節(jié)點(diǎn)也可以支持結(jié)構(gòu)化描述#65377;
1.1資源描述框架模式語言
RDF/S是對(duì)RDF的擴(kuò)展,是一種詞匯描述語言,可以表達(dá)描述性的數(shù)據(jù),如簡(jiǎn)單的詞匯或復(fù)雜的參考模型等#65377;RDF/S把事物的種類稱為類#65377;通過定義屬性(properties)刻畫類#65377;類之間#65380;屬性之間都可通過蘊(yùn)涵關(guān)系(subsumption)相關(guān)聯(lián)#65377;
在RDF/S schema中,每個(gè)屬性都有一個(gè)定義域(擁有此屬性的類)和值域(屬性的值)#65377;屬性#65380;定義域和值域構(gòu)成一個(gè)三元組,記為(domain(p),p,range(p))#65377;RDF/S schema是一個(gè)三元組集合,可以表示成一張有向多邊圖,記為RDF/S schema 圖#65377;在圖中,節(jié)點(diǎn)表示類,用類名標(biāo)記;邊表示屬性,用屬性名標(biāo)記,邊由定義域指向值域#65377;
2.1節(jié)點(diǎn)的加入#65380;退出和更新
每個(gè)節(jié)點(diǎn)加入網(wǎng)絡(luò)時(shí)都將發(fā)布一個(gè)RDF/S schema 片斷,片斷只需保存在本地#65377;待加入的節(jié)點(diǎn)以view為參數(shù),發(fā)出一系列的lookup(view)請(qǐng)求,查找有view或蘊(yùn)涵該view的后繼節(jié)點(diǎn);然后發(fā)出存儲(chǔ)請(qǐng)求store(view,IP)給這些后繼節(jié)點(diǎn),以便后繼節(jié)點(diǎn)加入或更新待加入節(jié)點(diǎn)的view#65377;
當(dāng)節(jié)點(diǎn)離開系統(tǒng)時(shí),為了保持DHT索引的一致性,必須把該節(jié)點(diǎn)的關(guān)鍵字標(biāo)志符傳遞給它的后繼節(jié)點(diǎn)#65377;還要通知與退出節(jié)點(diǎn)view相關(guān)的所有節(jié)點(diǎn):該節(jié)點(diǎn)的view不再有效#65377;
有兩種方式處理節(jié)點(diǎn)視圖的更新:最簡(jiǎn)單的方式是把更新視為該節(jié)點(diǎn)先退出再加入;另一種方式適合細(xì)微的更新,如只添加或刪除一個(gè)三元組,只須考慮哪些DHT索引要改變#65377;
2.2查找服務(wù)
查找服務(wù)就是定位擁有被該查詢水平蘊(yùn)涵的視圖的所有節(jié)點(diǎn):a)使用與查詢請(qǐng)求完全相同的所謂精確視圖(strict view),采用Chord協(xié)議的lookup(strict view)定位存有(strict view,{peers})對(duì)的初始節(jié)點(diǎn);b)使用sublookup()找到被精確視圖水平蘊(yùn)涵的所有視圖#65377;前述編碼可以保證所有被蘊(yùn)涵的視圖的關(guān)鍵字標(biāo)志符比精確視圖的標(biāo)志符大#65377;因此,在Chord環(huán)上所有保存被水平蘊(yùn)涵的視圖對(duì)(view,peer)的節(jié)點(diǎn)都是初始節(jié)點(diǎn)的后繼者#65377;
在N個(gè)節(jié)點(diǎn)的網(wǎng)絡(luò)中,每個(gè)查找請(qǐng)求定位初始節(jié)點(diǎn)的路由跳數(shù)為O(log N)#65377;因此找到的所有相關(guān)節(jié)點(diǎn)的總的路由跳數(shù)是定位初始節(jié)點(diǎn)的O(log N)加上S×O(log N)#65377;S是被蘊(yùn)涵視圖個(gè)數(shù),取決于蘊(yùn)涵層次的大小#65377;然而,當(dāng)視圖只有很少的三元組時(shí),被蘊(yùn)涵視圖的節(jié)點(diǎn)在Chord環(huán)上是鄰近的,實(shí)際路由跳數(shù)可能少于O(log N)步#65377;
3體系結(jié)構(gòu)簡(jiǎn)介
本原型系統(tǒng)按照如上所述的RDF/S schema數(shù)據(jù)模型進(jìn)行構(gòu)建#65377;模擬程序主要由C++編寫,模擬實(shí)驗(yàn)在兩臺(tái)PC機(jī)上完成#65377;一臺(tái)使用Linux操作系統(tǒng),模擬P2P網(wǎng)絡(luò)環(huán)境;另一臺(tái)使用Windows XP,存放SQL Server 2000#65380;Access等數(shù)據(jù)庫(kù)#65377;整個(gè)系統(tǒng)的體系結(jié)構(gòu)分為用戶接口層#65380;RDF/S處理層#65380;P2P網(wǎng)絡(luò)層和數(shù)據(jù)庫(kù)訪問層四層#65377;體系結(jié)構(gòu)如圖5所示#65377;
3.1用戶接口層
RQL[7]是一種高效查詢RDF/S schema和數(shù)據(jù)圖的資源查詢語言,且可以定義RDF/S schema圖的視圖#65377;本文中的視圖采用這種語言來提取RDF/S schema片斷#65377;
在用戶接口層,用戶提交RQL查詢語句,RQL解析器結(jié)合RDF/S文檔把查詢語句轉(zhuǎn)換成RDF/S查詢視圖,然后把它交給RDF/S處理層#65377;本層的主要功能模塊就是RQL解析器#65377;目前成熟的工具有Sesame,支持RQL#65380;SeRQL和RDQL三種語言,并且提供了Java_API#65377;
3.2RDF/S處理層
本層的主要功能是在RDF/S schema基礎(chǔ)上進(jìn)行各種轉(zhuǎn)換#65377;其主要功能模塊有RDF/S解析器#65380;RDF/S生成器和SQL語句生成器#65377;
RDF/S解析器解析RDF/S文檔的一個(gè)簡(jiǎn)單方法是,使用現(xiàn)有的XML解析器將RDF/S文檔中的每一個(gè)元素提取出來,然后將這些元素裝配成三元組#65377;但是這樣容易破壞數(shù)據(jù)語義關(guān)系#65377;所以本系統(tǒng)采用專門的解析器,可以讀取出完整的語義視圖#65377;目前開發(fā)出的RDF/S解析器很多,如DAML dontnetAPI#65380;Jena#65380;RDF API和Sesame等#65377;本系統(tǒng)調(diào)用RDF API開發(fā)自己的解析器#65377;
RDF/S生成器的主要功能是把數(shù)據(jù)庫(kù)模式轉(zhuǎn)換成RDF/S文檔#65377;數(shù)據(jù)庫(kù)模式是數(shù)據(jù)庫(kù)中所有對(duì)象的集合#65377;RDF/S文檔是對(duì)數(shù)據(jù)庫(kù)模式的描述,即是對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)表的描述#65377;由于本系統(tǒng)還處于試驗(yàn)開發(fā)階段,RDF/S生成器暫時(shí)采用手工方式生成RDF/S文檔,并把文檔存儲(chǔ)在本地?cái)?shù)據(jù)庫(kù)中#65377;
SQL語句生成器的主要功能是把RDF/S查詢視圖轉(zhuǎn)換成SQL語句#65377;本系統(tǒng)采用自行開發(fā)的SQLGenerator#65377;其主要實(shí)現(xiàn)的是詞法分析和轉(zhuǎn)換#65377;
3.3P2P網(wǎng)絡(luò)層
本層采用改進(jìn)的P2Psim模擬器建立Chord網(wǎng)絡(luò)環(huán)境#65377;為了使它能夠更好地與RDF/S schema數(shù)據(jù)模型相結(jié)合#65377;首先要建立(view,{peers})對(duì)的數(shù)據(jù)結(jié)構(gòu),使每個(gè)節(jié)點(diǎn)都可以發(fā)布或保存RDF/S schema片斷視圖;其次能夠?qū)崟r(shí)動(dòng)態(tài)地計(jì)算視圖/片段的特征值N,以便映射到Chord環(huán)的關(guān)鍵字標(biāo)志符#65377;
3.4數(shù)據(jù)庫(kù)訪問層
本層采用ODBC API作為數(shù)據(jù)庫(kù)的訪問接口#65377;在P2P環(huán)境下要使各節(jié)點(diǎn)都只使用同一種DBMS是不現(xiàn)實(shí)的,所以本文提出一種以統(tǒng)一的方式來操作所有數(shù)據(jù)庫(kù)的方法#65377;ODBC提供了一組對(duì)數(shù)據(jù)庫(kù)訪問的標(biāo)準(zhǔn)API,并且支持SQL語言#65377;對(duì)數(shù)據(jù)庫(kù)的操作不依賴任何DBMS,不直接與DBMS打交道,所有的數(shù)據(jù)庫(kù)操作由對(duì)應(yīng)的DBMS的ODBC驅(qū)動(dòng)程序完成#65377;
4結(jié)束語
本文詳細(xì)介紹了一種基于RDF/S schema的語義數(shù)據(jù)模型#65377;該模型可以有效地組織和管理結(jié)構(gòu)化或半結(jié)構(gòu)化數(shù)據(jù),突破了傳統(tǒng)的基于關(guān)鍵字的查詢方式#65377;由于采用了結(jié)構(gòu)化的Chord網(wǎng)絡(luò)覆蓋模型,查找的復(fù)雜度只有O(log N),具有良好的可擴(kuò)展性和較高的查找效率#65377;經(jīng)模擬實(shí)驗(yàn)取得了一定的成果,但仍然存在一些缺點(diǎn)#65377;當(dāng)網(wǎng)絡(luò)規(guī)模增大,視圖蘊(yùn)涵層次加大時(shí),查找效率會(huì)出現(xiàn)較大的波動(dòng)#65377;本系統(tǒng)具有很高的研究?jī)r(jià)值,在將來的工作中將對(duì)其作進(jìn)一步的改進(jìn)和完善#65377;
參考文獻(xiàn):
[1]HALEVY A Y, IVES Z G, SUCIU D, et al. Schema mediation in peer data management systems[C]//DAYAL U. Proc of the 19th Int’l Conf on Data Engineering. Bangalore: IEEE Computer Society, 2003:505-516.
[2]NG W S, OOI B C, TAN K L, et al. PeerDB: a P2Pbased system for distributed data sharing[C]//Proc of the 19th ICDE. Bangalore:[s.n.], 2003:633-644.
[3]W3C.RDF primer recommendation[EB/OL].[2006-0710].http://www.w3.org/TR/rdfprimer.
[4]SIDIROURGOS L E. Indexing views to route and plan queries in a peer data management system[D].[S.l.]: University of Crete Computer Science Department, 2005.
[5]MORRIS S R, KARGER D, KAASHOEDK M F, et al. Chord: a scalable peertopeer lookup service for Internet applications[C]//Proc of the ACM SIGCOMM. New York: ACM Press, 2001:149160.
[6]CATES J. Robust and efficient data management for a distributed hash table[D].[S.l.]:Massachusetts Institute of Technology, 2003.
[7]KARVOUNARAKIS G, ALEXAKI S, CHRISTOPHIDES V, et al. RQL: a declarative query language for RDF[C]//Proc of the 11th World Wide Web Conference 2002. Honolulu, Hawaii:[s.n.], 2002:127146.
“本文中所涉及到的圖表、注解、公式等內(nèi)容請(qǐng)以PDF格式閱讀原文”