999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

云平臺中基于HBase的RDF數據存儲模型研究

2014-08-07 02:45:18王靜蕾趙明慧
中州大學學報 2014年6期

王靜蕾,趙明慧

(1.鄭州旅游職業學院 招生就業中心,鄭州 450009;2.鄭州職業技術學院 機械工程系,鄭州 450121)

1 RDF數據存儲方式分析

隨著“語義網”和關聯數據技術產生的RDF數據規模急劇增加,傳統單節點RDF數據庫必然會出現搜索性能瓶頸,研究人員從RDF存儲介質的選擇、模型定義以及查詢連接處理等方面進行了一些探索,但目前采用的常用解決方案仍是利用分布式計算的相關技術。

因為RDF數據的基本結構是簡單的三元組,即Subjeet、Predieate、Objeet,所以無論RDF數據是基于何種關系的數據庫之上,首先都必須解決如何存儲它的三元組。在眾多的存儲方案中,基于通用分布式技術的存儲方案有RDFPeers,另外還有一些是RDF數據存儲優化過的集群方案,如YARS2、4Store、ClusteredTDB。本文基于以上思路,選擇利用開源組織 Apache的Hadoop分布式計算平臺,將Hadoop與RDF相結合,設計一種合理的存儲方式將RDF存儲到列數據庫HBase中,利用Hadoop的海量存儲與并行計算能力來滿足RDF超大規模數據存儲查詢,然后通過MapReduce 編程模型實現并行化RDF 查詢操作,從而提升查詢性能,解決海量RDF 存儲和查詢面臨的可擴展性及查詢性能瓶頸問題。

2 RDF存儲系統的模型分析

按RDF數據存儲的方式,可以將其分為三種模型。

2.1 Hadoop結合平面文件,代表系統是SHARD

此系統沒有根據RDF的三元組的三個分量建立相應索引機制,而是采用平面文件的方式組織數據,將整個數據集存儲到HDFS上。缺點是不能有效處理隨機查詢以及三元組的增加刪除操作,另外,為了盡可能的訪問多個節點,SHARD將原本邏輯關系密切的三元組哈希分布到集群中的各個節點,這樣在執行SPARQL查詢時,必須在網絡上傳輸大量的數據,一定程度上影響了查詢性能。

2.2 Hadoop結合單機RDF數據庫,代表系統是HadoopRDF

該系統采用Hadoop和Sesame相結合的方式構建分布式RDF存儲系統,這里的單機RDF指的是在《Scalable SPARQL Querying of Large RDF Graphs》一文中采用的RDF-3X,它利用一種圖分區算法將RDF數據集和其可能的組合方式分散存儲到集群中的RDF-3x數據庫中,不僅如此,RDF-3X還存儲了SP、SO、PS等9種統計信息,以輔助生成較優的查詢計劃。優點是使三元組能夠存儲在同一個節點上,減少查詢時的網絡傳輸延遲。缺點是存儲多份數據必然導致對存儲空間需求的增長,這使單機RDF數據庫在存儲和查詢上都易發生性能瓶頸,影響到整個存儲系統的可擴展性。

2.3 Hadoop結合HBase本文重點闡述的存儲方案

HBase(Hadoop Database)是一個構建在HDFS上分布式的、高可靠性和容錯性、面向列的、可伸縮非結構化列數據庫,是BigTable的開源實現。鑒于它非常適合存儲超大規模稀疏數據,而RDF圖通常是稀疏的,因此采用HBase來存儲RDF數據是一種很常用的方法。目前的研究成果中無論是設計原型系統SPIDER,還是將副本存儲到幾個HBase表中,或是采用MapReduce處理SPARQL查詢,都沒有很好的解決HBase表設計模式和查詢處理策略,影響了并行查詢的性能。

3 基于HBase的RDF存儲系統設計

利用HBase存儲RDF三元組時,其優勢明顯。

3.1 數據類型簡單,其本身可作為索引的一部分

HBase只有簡單的字符串類型,字符串在底層以字節數組形式存儲,數據即索引。在存儲RDF數據集時,可將三元組的三個分量按字符串形式進行存儲,這樣可以簡化數據維護成本。作為HBase的Crud客戶端底層的HTable,即一張排序的映射表,它根據Row Key 或“RowKey,Column Family:Qualifier”快速檢索存儲單元,將數據存儲在Row Key或Qualifier中并作為索引的一部分,可以充分實現三元組模式的快速匹配。

3.2 按列存儲稀疏數據,存儲利用率高

如前所述RDF數據是稀疏的,如果利用關系數據庫來存儲會產生很多空值,造成空間浪費。而HBase是基于列存儲的,不同行之間可以有不同列,并且空白列不予存儲,這樣存儲空間利用率高。

3.3 提供了MapReduce編程的相關接口,易實現編程模型的集成

HBase只有簡單的查詢、刪除和清空等操作,不存在表和表之間的關系,可以通過MapReduce 編程模型對連接操作進行優化以提高響應速度。

3.4 具有良好的可伸縮所性,適合海量數據存儲

HBase的特征之一是靈活的擴展性,可以輕松實現RDF的分布式存儲。HBase數據表被設計存儲到不同的Region中,一個Region對應一個HRegionServer,Region的個數隨著表的增大而增大,均衡分布在集群中的HRegionServer中。由于過程是透明的,用戶不必參與負載均衡、數據冗余等操作,當集群滿負荷時,只需通過添加硬件資源來應對數據的持續增長。

因此,本文的思路是要實現海量RDF數據的分布式、擴展性、高效性存儲與查詢,設計基于HBase的RDF的存儲系統,基于MapReduce對SPARQL查詢中的連接操作進行并行化。

4 基于HBase的RDF存儲系統設計

RDF數據均衡存儲在構建于HDFS之上的HBase 集群節點中,HRegionServer(域服務器)維護HBase的集群節點并存儲RDF數據域(Region)。系統對外主要由兩個模塊組成,一是RDF 數據映射模塊,它的作用是將RDF數據加載到HBase集群以及刪除和更新三元組等功能,其中數據加載操作是利用MapReduce 機制實現并行加載; 一是數據查詢處理模塊,它的作用是提供 SPARQL 查詢處理功能,采用 Jena ARQ解析SPARQL。其中,對只有一個三元組模式的查詢,直接由三元組模式查詢模塊響應,而對于非一個三元組模式的查詢,則由基本圖模式查詢模塊響應。

由“生成查詢計劃”模塊和“執行查詢計劃”模塊組成基本圖模式的查詢主體,本文擬使用 Hadoop 的 MapReduce 框架來解決與HBase相關的數據處理問題,基于MapReduce編程模型實現連接操作的并行求解方式,解決提升查詢計劃描述的一系列連接(Join)任務操作時花費的時間。MapReduce 實現并行查詢時只需要一個副本即可,因此,通過一個HBase 表存儲一個副本實現海量RDF數據的存儲,對于不能進行索引的檢索,利用HBase客戶端提供的一種高效的表數據存儲的數據結構HBaseFilter來解決,它具有僅次于索引的檢索速度。對于RDF的存儲模式的設計,RDF數據的基本結構為非常簡單的三元組,不管RDF數據依托哪種存儲系統,首先必須解決如何組織這些三元組。下面從分析三元組的索引策略開始。

4.1 副本及索引策略分析

如表1所示,三元組以的形式描述數據,最多可以存儲六個副本,對于SPO類型的三元組模型,可以選擇任一個副本進行匹配,而后通過建立索引實現不同類型三元組模式的快速匹配。

采用這種方案中,當數據量較小的時候,逐行解析并加載到 HBase表中,優點是設計簡單、便于理解,很容易實現且具有很好的通用性。可是在海量數據存儲的情況下,RDF數據集三元組一般都是至少百萬級別,采用串行加載方式會耗費較長時間,同時也會造成過多的副本和自連接, HBase 列數據庫本身不具有 ACID特性,很難保證多副本的一致性,從而導致查詢結果不全或出現錯誤,嚴重影響查詢性能。針對這種海量 RDF 數據集的加載問題,采取并行加載方案,主要包括兩個步驟,第一步將RDF數據集合并上傳到HDFS,第二步將RDF數據集由 HDFS 并行加載到 HBase。

表1 索引和功能

4.2 RDF 存儲模型設計

考慮對RDF數據中多對多關系的支持以及對批量加載、更新操作的支持,如在RDF數據集中,謂詞兩端的主語和賓語通常是多對多的關系,即同一個謂詞可能在不同的三元組中出現。以“淘寶網”用戶和網店之間的關系“user”為例,一個用戶可以選擇多家網店,而同一個網店也可能有多個用戶。本文以謂詞和賓語為關鍵字的存儲模式,將RDF三元組存儲在具有一個列族的HBase表中,謂詞和賓語存儲在RowKey字段,Qualifier字段存儲主語,Value字段設為空值。每個KeyValue是一個輕量級的存儲單元,存儲單元中只存儲一個RDF三元組。

這種方式有四個方面優點:一是利用了RowKey按字典排序的特性,通過謂詞檢索可以得到所有以該謂詞為前綴的RowKey,再通過RowKey檢索所有的Qualifier,也即實現了二級索引結構。二是利用了HBase表中Value字段變長存儲的特性,Value字段為 null 不會造成存儲空間的浪費。三是在插入三元組時直接插入即可,如果存在則會自動覆蓋,用戶不用關心該數據是否已經存在。最后,在刪除和更新操作時也是在輕量級 KeyValue 存儲單元上實現的,不會出現字段內容過大而導致請求超時的情況。

5 RDF存儲系統原型的實現

如前圖1所示,基于HBase的RDF存儲系統主要由兩部分組成,一是RDF數據映射模塊,二是RDF數據查詢模塊。下面依次介紹兩個模塊的設計原型。

5.1 映射模塊

包括將加載RDF數據集、刪除和更新RDF中的三元組。數據集較小時,逐行解析和加載便可。對于海量數據集,首先解決是RDF數據上傳到HDFS,本文使用HBase的Bulk Load工具,思路是利用MapReduce采用分而治之,先生成HBase內部文件HFile,通過一個遞歸實現將本地RDF小文件合并上傳到HDFS,使用RDFLoad類完成,具體由圖1所示的LoadRDF to HDFS()方法實現,每次遞歸中將每個文件作為輸入流,將其傳送到HDFS上的同一個目標路徑生成的輸入流中,最終將實現將整個 RDF 數據集中的小文件完全加載到HDFS中。

解決RDF數據集由HDFS并行加載到 HBase中,方法是通過MapReduce作業將其加載到HBase。對于每個HFile文件,使用HBase的Completebulkload命令將HFile文件上傳到HBase集群中。Bulk Load命令會遍歷HFile文件里的文件,為里面的每一個文件尋找該文件匹配的HBase Region,并通知該Region所屬的Region Server將該文件拷貝到指定存儲區域中,同時通知客戶端可以獲取該數據。

圖1 RDF數據加載至HDFS流程圖

5.2 查詢模塊

由于HBase不支持查詢語言,但提供Java API對其進行查詢與更新,因此本文采用HBase Java API實現SPARQL查詢與更新操作。其最重要的兩個概念是三元組模式(Triple Pattern)和基本圖模式(Basic Graph Pattern, BGP),其中基本圖模式是一組三元組模式的集合。本文采用Jena ARQ解析SPARQL語句,在此用一個例子說明整個BGP查詢過程。假設user類有三個實例 user0,user1 和 user2,那么以這三個實例為主語的三元組有六個,分別為:

"jingleiw"

"maxiao"

"jingleiw"

這里Commodity0和Commodity1為Commodity類的實例。如查詢名字為"jingleiw"的用戶以及他所購買的商品。首先要進行BGP的排序,根據共享變量優先與選擇度最高原則,將BGP中的所有Triple Pattern進行重排,方法如下:

BGP: {

tp1:?X’ rdf:type, user.

tp2:?X’ subscriber Of, ?Y.

tpy.?X’ name, "jingleiw ". }

BGP: {

tp1: ?X, name, "jingleiw ".

tp2: ?X, rdf:type, Buysale.

tp3: ?X, subscriber Of, ?Y. }

接下來是按順序查詢每條Triple Pattern。在這里要調用一個推理算法來將輸入的Triple Pattern添加到推理結果集中,不再詳述,對tp1推理的結果為S1: {(?X, name, "jingleiw")},然后再調用查詢算法QueryTP(主語未知,謂詞已知)查詢每個Triple Pattern,合并查詢結果。

R1: {(,name, "jingleiw"),(< user2>, name,"jingleiw")},

R: {(,name, "jingleiw"),(,name,"jingleiw")}。

對tp2進行推理查詢, tp2與tp1有共享變量?X,用R中變量?X的已有值user0, user1分別替代中tp2中的變量?X得替代后的tp2的集合TP:{(< user0>, rdf:type, buysale),(< user2>,rdf:type, buysale)}。調用函數 ReasonTP依次查詢中的每個Triple Pattern, 對(,rdf:type, buysale)進行推理,由Buysale的子類User類推理可得S2.1{(,rdf:type.Buysale),(,rdf:type. Buysale)}。接著調用函數QueryTP查詢S2.1中的每個Triple Pattern, R2.1:{(, rdf:type, user)},將 R2.1并入結果集得:

R: {

(, name, "jingleiw"),

(, name, "jingleiw"),

(, rdf:type, user)}。

以 (,rdf:type, user)的推理同理可得S2.2 {(, rdfitype.Buysale), (, rdf:type, user)}。再次調用QueryTP查詢S2.2中的每個Triple Pattern,依次類推查詢tp3最后BGP查詢結果為

R:{

(, name,"jingleiw"),

(< user0>, rdf:type. user0),

(< user0>, subscriber Of, < Commodity0>),

(< subscriber0>,subscriber Of, < Commodity1>)}

6 結束語

本文主要研究了RDF數據集在HBase中的存儲方式,具體分析了存儲結構和查詢方法,但仍有許多問題未詳細論述,如在進行查詢推理時所涉及的函數設計,這都需要在以后進行進一步研究。

參考文獻:

[1]朱敏,程佳,柏文陽.一種基于HBase的RDF數據存儲模型[J].計算機研究與發展,2013(S1):23-31.

[2]宋紀成.海量RDF數據存儲與查詢技術的研究與實現[D].北京工業大學,2013.

[3]程佳.一種基于Hadoop的RDF數據劃分與存儲研究[D].南京大學,2013.

[4]Manola F,Miller E,McBride B.RDF Primer[EB/OL].[2004-02-10].http://www.w3.org/TR/rdf-primer/.

主站蜘蛛池模板: 精品免费在线视频| 久久综合结合久久狠狠狠97色| 欧美国产三级| 亚洲无码久久久久| 国产在线观看99| 国产网站一区二区三区| 亚洲精品图区| 天堂在线www网亚洲| 日本高清视频在线www色| 韩日免费小视频| 综合成人国产| 国产极品嫩模在线观看91| 超级碰免费视频91| 亚洲性视频网站| 久久这里只精品热免费99| 性69交片免费看| 激情综合激情| 思思热在线视频精品| 色网站在线视频| 99热精品久久| 色婷婷国产精品视频| 69国产精品视频免费| 日韩午夜片| 99手机在线视频| 台湾AV国片精品女同性| 无码区日韩专区免费系列| 亚洲av中文无码乱人伦在线r| 午夜一区二区三区| 欧美国产综合色视频| 色综合久久综合网| 欧美日韩福利| 欧美成人影院亚洲综合图| 欧美日本视频在线观看| 2021国产在线视频| 91蜜芽尤物福利在线观看| 欧美、日韩、国产综合一区| 国产区网址| 亚洲a级在线观看| 91在线日韩在线播放| 国产精品不卡片视频免费观看| 国产一级二级三级毛片| 激情爆乳一区二区| 99久久国产综合精品女同| 高清免费毛片| 国产精品久久久久久搜索| 国产在线精彩视频论坛| 日韩亚洲综合在线| 国产丝袜91| 国产精品视频白浆免费视频| аv天堂最新中文在线| 国产后式a一视频| 国产a在视频线精品视频下载| 国产欧美日韩视频一区二区三区| 538精品在线观看| 国产精品久久久久久影院| 国产青青草视频| 国产精品女在线观看| 天天色综网| 97青草最新免费精品视频| 91 九色视频丝袜| 免费视频在线2021入口| 亚洲第一福利视频导航| 国产乱人激情H在线观看| 91精品专区| 欧美福利在线观看| 久久成人18免费| 国产精品主播| 黑色丝袜高跟国产在线91| 国产91小视频在线观看| 亚洲AV人人澡人人双人| www.亚洲色图.com| 国产色爱av资源综合区| 国产区人妖精品人妖精品视频| 日韩激情成人| 在线亚洲精品自拍| 欧美精品亚洲日韩a| 国产欧美日韩va另类在线播放| 欧美日韩在线成人| 日韩无码黄色网站| 一级毛片在线免费视频| 亚洲第一在线播放| 国产自在线播放|