• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    云平臺(tái)中基于HBase的RDF數(shù)據(jù)存儲(chǔ)模型研究

    2014-08-07 02:45:18王靜蕾趙明慧
    中州大學(xué)學(xué)報(bào) 2014年6期
    關(guān)鍵詞:三元組副本存儲(chǔ)系統(tǒng)

    王靜蕾,趙明慧

    (1.鄭州旅游職業(yè)學(xué)院 招生就業(yè)中心,鄭州 450009;2.鄭州職業(yè)技術(shù)學(xué)院 機(jī)械工程系,鄭州 450121)

    1 RDF數(shù)據(jù)存儲(chǔ)方式分析

    隨著“語(yǔ)義網(wǎng)”和關(guān)聯(lián)數(shù)據(jù)技術(shù)產(chǎn)生的RDF數(shù)據(jù)規(guī)模急劇增加,傳統(tǒng)單節(jié)點(diǎn)RDF數(shù)據(jù)庫(kù)必然會(huì)出現(xiàn)搜索性能瓶頸,研究人員從RDF存儲(chǔ)介質(zhì)的選擇、模型定義以及查詢連接處理等方面進(jìn)行了一些探索,但目前采用的常用解決方案仍是利用分布式計(jì)算的相關(guān)技術(shù)。

    因?yàn)镽DF數(shù)據(jù)的基本結(jié)構(gòu)是簡(jiǎn)單的三元組,即Subjeet、Predieate、Objeet,所以無(wú)論RDF數(shù)據(jù)是基于何種關(guān)系的數(shù)據(jù)庫(kù)之上,首先都必須解決如何存儲(chǔ)它的三元組。在眾多的存儲(chǔ)方案中,基于通用分布式技術(shù)的存儲(chǔ)方案有RDFPeers,另外還有一些是RDF數(shù)據(jù)存儲(chǔ)優(yōu)化過(guò)的集群方案,如YARS2、4Store、ClusteredTDB。本文基于以上思路,選擇利用開(kāi)源組織 Apache的Hadoop分布式計(jì)算平臺(tái),將Hadoop與RDF相結(jié)合,設(shè)計(jì)一種合理的存儲(chǔ)方式將RDF存儲(chǔ)到列數(shù)據(jù)庫(kù)HBase中,利用Hadoop的海量存儲(chǔ)與并行計(jì)算能力來(lái)滿足RDF超大規(guī)模數(shù)據(jù)存儲(chǔ)查詢,然后通過(guò)MapReduce 編程模型實(shí)現(xiàn)并行化RDF 查詢操作,從而提升查詢性能,解決海量RDF 存儲(chǔ)和查詢面臨的可擴(kuò)展性及查詢性能瓶頸問(wèn)題。

    2 RDF存儲(chǔ)系統(tǒng)的模型分析

    按RDF數(shù)據(jù)存儲(chǔ)的方式,可以將其分為三種模型。

    2.1 Hadoop結(jié)合平面文件,代表系統(tǒng)是SHARD

    此系統(tǒng)沒(méi)有根據(jù)RDF的三元組的三個(gè)分量建立相應(yīng)索引機(jī)制,而是采用平面文件的方式組織數(shù)據(jù),將整個(gè)數(shù)據(jù)集存儲(chǔ)到HDFS上。缺點(diǎn)是不能有效處理隨機(jī)查詢以及三元組的增加刪除操作,另外,為了盡可能的訪問(wèn)多個(gè)節(jié)點(diǎn),SHARD將原本邏輯關(guān)系密切的三元組哈希分布到集群中的各個(gè)節(jié)點(diǎn),這樣在執(zhí)行SPARQL查詢時(shí),必須在網(wǎng)絡(luò)上傳輸大量的數(shù)據(jù),一定程度上影響了查詢性能。

    2.2 Hadoop結(jié)合單機(jī)RDF數(shù)據(jù)庫(kù),代表系統(tǒng)是HadoopRDF

    該系統(tǒng)采用Hadoop和Sesame相結(jié)合的方式構(gòu)建分布式RDF存儲(chǔ)系統(tǒng),這里的單機(jī)RDF指的是在《Scalable SPARQL Querying of Large RDF Graphs》一文中采用的RDF-3X,它利用一種圖分區(qū)算法將RDF數(shù)據(jù)集和其可能的組合方式分散存儲(chǔ)到集群中的RDF-3x數(shù)據(jù)庫(kù)中,不僅如此,RDF-3X還存儲(chǔ)了SP、SO、PS等9種統(tǒng)計(jì)信息,以輔助生成較優(yōu)的查詢計(jì)劃。優(yōu)點(diǎn)是使三元組能夠存儲(chǔ)在同一個(gè)節(jié)點(diǎn)上,減少查詢時(shí)的網(wǎng)絡(luò)傳輸延遲。缺點(diǎn)是存儲(chǔ)多份數(shù)據(jù)必然導(dǎo)致對(duì)存儲(chǔ)空間需求的增長(zhǎng),這使單機(jī)RDF數(shù)據(jù)庫(kù)在存儲(chǔ)和查詢上都易發(fā)生性能瓶頸,影響到整個(gè)存儲(chǔ)系統(tǒng)的可擴(kuò)展性。

    2.3 Hadoop結(jié)合HBase本文重點(diǎn)闡述的存儲(chǔ)方案

    HBase(Hadoop Database)是一個(gè)構(gòu)建在HDFS上分布式的、高可靠性和容錯(cuò)性、面向列的、可伸縮非結(jié)構(gòu)化列數(shù)據(jù)庫(kù),是BigTable的開(kāi)源實(shí)現(xiàn)。鑒于它非常適合存儲(chǔ)超大規(guī)模稀疏數(shù)據(jù),而RDF圖通常是稀疏的,因此采用HBase來(lái)存儲(chǔ)RDF數(shù)據(jù)是一種很常用的方法。目前的研究成果中無(wú)論是設(shè)計(jì)原型系統(tǒng)SPIDER,還是將副本存儲(chǔ)到幾個(gè)HBase表中,或是采用MapReduce處理SPARQL查詢,都沒(méi)有很好的解決HBase表設(shè)計(jì)模式和查詢處理策略,影響了并行查詢的性能。

    3 基于HBase的RDF存儲(chǔ)系統(tǒng)設(shè)計(jì)

    利用HBase存儲(chǔ)RDF三元組時(shí),其優(yōu)勢(shì)明顯。

    3.1 數(shù)據(jù)類(lèi)型簡(jiǎn)單,其本身可作為索引的一部分

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

    3.2 按列存儲(chǔ)稀疏數(shù)據(jù),存儲(chǔ)利用率高

    如前所述RDF數(shù)據(jù)是稀疏的,如果利用關(guān)系數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)會(huì)產(chǎn)生很多空值,造成空間浪費(fèi)。而HBase是基于列存儲(chǔ)的,不同行之間可以有不同列,并且空白列不予存儲(chǔ),這樣存儲(chǔ)空間利用率高。

    3.3 提供了MapReduce編程的相關(guān)接口,易實(shí)現(xiàn)編程模型的集成

    HBase只有簡(jiǎn)單的查詢、刪除和清空等操作,不存在表和表之間的關(guān)系,可以通過(guò)MapReduce 編程模型對(duì)連接操作進(jìn)行優(yōu)化以提高響應(yīng)速度。

    3.4 具有良好的可伸縮所性,適合海量數(shù)據(jù)存儲(chǔ)

    HBase的特征之一是靈活的擴(kuò)展性,可以輕松實(shí)現(xiàn)RDF的分布式存儲(chǔ)。HBase數(shù)據(jù)表被設(shè)計(jì)存儲(chǔ)到不同的Region中,一個(gè)Region對(duì)應(yīng)一個(gè)HRegionServer,Region的個(gè)數(shù)隨著表的增大而增大,均衡分布在集群中的HRegionServer中。由于過(guò)程是透明的,用戶不必參與負(fù)載均衡、數(shù)據(jù)冗余等操作,當(dāng)集群滿負(fù)荷時(shí),只需通過(guò)添加硬件資源來(lái)應(yīng)對(duì)數(shù)據(jù)的持續(xù)增長(zhǎng)。

    因此,本文的思路是要實(shí)現(xiàn)海量RDF數(shù)據(jù)的分布式、擴(kuò)展性、高效性存儲(chǔ)與查詢,設(shè)計(jì)基于HBase的RDF的存儲(chǔ)系統(tǒng),基于MapReduce對(duì)SPARQL查詢中的連接操作進(jìn)行并行化。

    4 基于HBase的RDF存儲(chǔ)系統(tǒng)設(shè)計(jì)

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

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

    4.1 副本及索引策略分析

    如表1所示,三元組以的形式描述數(shù)據(jù),最多可以存儲(chǔ)六個(gè)副本,對(duì)于SPO類(lèi)型的三元組模型,可以選擇任一個(gè)副本進(jìn)行匹配,而后通過(guò)建立索引實(shí)現(xiàn)不同類(lèi)型三元組模式的快速匹配。

    采用這種方案中,當(dāng)數(shù)據(jù)量較小的時(shí)候,逐行解析并加載到 HBase表中,優(yōu)點(diǎn)是設(shè)計(jì)簡(jiǎn)單、便于理解,很容易實(shí)現(xiàn)且具有很好的通用性??墒窃诤A繑?shù)據(jù)存儲(chǔ)的情況下,RDF數(shù)據(jù)集三元組一般都是至少百萬(wàn)級(jí)別,采用串行加載方式會(huì)耗費(fèi)較長(zhǎng)時(shí)間,同時(shí)也會(huì)造成過(guò)多的副本和自連接, HBase 列數(shù)據(jù)庫(kù)本身不具有 ACID特性,很難保證多副本的一致性,從而導(dǎo)致查詢結(jié)果不全或出現(xiàn)錯(cuò)誤,嚴(yán)重影響查詢性能。針對(duì)這種海量 RDF 數(shù)據(jù)集的加載問(wèn)題,采取并行加載方案,主要包括兩個(gè)步驟,第一步將RDF數(shù)據(jù)集合并上傳到HDFS,第二步將RDF數(shù)據(jù)集由 HDFS 并行加載到 HBase。

    表1 索引和功能

    4.2 RDF 存儲(chǔ)模型設(shè)計(jì)

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

    這種方式有四個(gè)方面優(yōu)點(diǎn):一是利用了RowKey按字典排序的特性,通過(guò)謂詞檢索可以得到所有以該謂詞為前綴的RowKey,再通過(guò)RowKey檢索所有的Qualifier,也即實(shí)現(xiàn)了二級(jí)索引結(jié)構(gòu)。二是利用了HBase表中Value字段變長(zhǎng)存儲(chǔ)的特性,Value字段為 null 不會(huì)造成存儲(chǔ)空間的浪費(fèi)。三是在插入三元組時(shí)直接插入即可,如果存在則會(huì)自動(dòng)覆蓋,用戶不用關(guān)心該數(shù)據(jù)是否已經(jīng)存在。最后,在刪除和更新操作時(shí)也是在輕量級(jí) KeyValue 存儲(chǔ)單元上實(shí)現(xiàn)的,不會(huì)出現(xiàn)字段內(nèi)容過(guò)大而導(dǎo)致請(qǐng)求超時(shí)的情況。

    5 RDF存儲(chǔ)系統(tǒng)原型的實(shí)現(xiàn)

    如前圖1所示,基于HBase的RDF存儲(chǔ)系統(tǒng)主要由兩部分組成,一是RDF數(shù)據(jù)映射模塊,二是RDF數(shù)據(jù)查詢模塊。下面依次介紹兩個(gè)模塊的設(shè)計(jì)原型。

    5.1 映射模塊

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

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

    圖1 RDF數(shù)據(jù)加載至HDFS流程圖

    5.2 查詢模塊

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

    "jingleiw"

    "maxiao"

    "jingleiw"

    這里Commodity0和Commodity1為Commodity類(lèi)的實(shí)例。如查詢名字為"jingleiw"的用戶以及他所購(gòu)買(mǎi)的商品。首先要進(jìn)行BGP的排序,根據(jù)共享變量?jī)?yōu)先與選擇度最高原則,將BGP中的所有Triple Pattern進(jìn)行重排,方法如下:

    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. }

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

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

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

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

    R: {

    (, name, "jingleiw"),

    (, name, "jingleiw"),

    (, rdf:type, user)}。

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

    R:{

    (, name,"jingleiw"),

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

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

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

    6 結(jié)束語(yǔ)

    本文主要研究了RDF數(shù)據(jù)集在HBase中的存儲(chǔ)方式,具體分析了存儲(chǔ)結(jié)構(gòu)和查詢方法,但仍有許多問(wèn)題未詳細(xì)論述,如在進(jìn)行查詢推理時(shí)所涉及的函數(shù)設(shè)計(jì),這都需要在以后進(jìn)行進(jìn)一步研究。

    參考文獻(xiàn):

    [1]朱敏,程佳,柏文陽(yáng).一種基于HBase的RDF數(shù)據(jù)存儲(chǔ)模型[J].計(jì)算機(jī)研究與發(fā)展,2013(S1):23-31.

    [2]宋紀(jì)成.海量RDF數(shù)據(jù)存儲(chǔ)與查詢技術(shù)的研究與實(shí)現(xiàn)[D].北京工業(yè)大學(xué),2013.

    [3]程佳.一種基于Hadoop的RDF數(shù)據(jù)劃分與存儲(chǔ)研究[D].南京大學(xué),2013.

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

    猜你喜歡
    三元組副本存儲(chǔ)系統(tǒng)
    基于語(yǔ)義增強(qiáng)雙編碼器的方面情感三元組提取
    軟件工程(2024年12期)2024-12-28 00:00:00
    基于帶噪聲數(shù)據(jù)集的強(qiáng)魯棒性隱含三元組質(zhì)檢算法*
    分布式存儲(chǔ)系統(tǒng)在企業(yè)檔案管理中的應(yīng)用
    哈爾濱軸承(2020年2期)2020-11-06 09:22:36
    關(guān)于余撓三元組的periodic-模
    面向流媒體基于蟻群的副本選擇算法①
    天河超算存儲(chǔ)系統(tǒng)在美創(chuàng)佳績(jī)
    副本放置中的更新策略及算法*
    華為震撼發(fā)布新一代OceanStor 18000 V3系列高端存儲(chǔ)系統(tǒng)
    一種基于STM32的具有斷電保護(hù)機(jī)制的采集存儲(chǔ)系統(tǒng)設(shè)計(jì)
    樹(shù)形網(wǎng)絡(luò)中的副本更新策略及算法*
    临安市| 炎陵县| 汾西县| 南京市| 玉门市| 哈巴河县| 调兵山市| 浦江县| 庆云县| 安乡县| 宣城市| 南安市| 扶沟县| 耒阳市| 桃江县| 朝阳市| 松桃| 新宾| 秦安县| 昆明市| 浪卡子县| 石城县| 神池县| 衡阳市| 商丘市| 吉木乃县| 德化县| 云阳县| 龙海市| 安康市| 壶关县| 神池县| 环江| 商都县| 凤山县| 富锦市| 东乡族自治县| 丘北县| 巴彦县| 西昌市| 天镇县|