王立峰
摘要:云計算技術(shù)基于這樣一種思想——將大量計算資源組織起來進(jìn)行統(tǒng)一調(diào)度,形成一個計算資源池,向用戶提供按需計算的服務(wù)。數(shù)據(jù)共享技術(shù)可以在集成各種資源時,在系統(tǒng)各組成部分間共享數(shù)據(jù),提高系統(tǒng)的協(xié)作能力。該文研究了數(shù)據(jù)共享的關(guān)鍵技術(shù),并深入分析當(dāng)前主要的數(shù)據(jù)共享模型,和HBase數(shù)據(jù)共享模型。
關(guān)鍵詞:Hadoop;數(shù)據(jù)共享模型;HBase
中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2014)22-5165-02
1 數(shù)據(jù)共享關(guān)鍵技術(shù)
XML等數(shù)據(jù)轉(zhuǎn)換技術(shù)可以實(shí)現(xiàn)異構(gòu)系統(tǒng)之間的通信,完成數(shù)據(jù)共享;XML技術(shù)本質(zhì)上是一種數(shù)據(jù)轉(zhuǎn)換技術(shù),數(shù)據(jù)轉(zhuǎn)換又分為語義轉(zhuǎn)換和格式轉(zhuǎn)換兩種。格式轉(zhuǎn)換是將非結(jié)構(gòu)化的數(shù)據(jù)轉(zhuǎn)換為結(jié)構(gòu)化數(shù)據(jù)的方法,一般包括XML技術(shù)、JSON技術(shù)以及AJAX技術(shù)等。傳統(tǒng)的異構(gòu)數(shù)據(jù)系統(tǒng)中共享數(shù)據(jù)時,一般使用XML作為其數(shù)據(jù)轉(zhuǎn)換技術(shù),由于XML技術(shù)不會受到特定的數(shù)據(jù)格式要求、操作系統(tǒng)等等的限制,所以可以在異構(gòu)系統(tǒng)間實(shí)現(xiàn)數(shù)據(jù)共享。
XML技術(shù)的全稱是“可擴(kuò)展的標(biāo)記語言”,在描述數(shù)據(jù)時使用一些特定的標(biāo)記;之所以說XML技術(shù)是可擴(kuò)展的,是因?yàn)樵赬ML文件中可以自由擴(kuò)充標(biāo)簽元素。XML標(biāo)記用一對尖括號(<>)包含起來,“<”是開始標(biāo)記,“/>”是結(jié)束標(biāo)記,例如
XML技術(shù)在描述其文檔結(jié)構(gòu)時,使用的是一種稱為“文檔類型定義”(DTD)的技術(shù),它包含了XML文檔中元素及其屬性的定義規(guī)則、能夠使用的實(shí)體以及元素之間的關(guān)系等。由于DTD文檔描述了這些與格式相關(guān)的規(guī)則,所以異構(gòu)系統(tǒng)間可以使用通用的DTD驗(yàn)證系統(tǒng)外的XML數(shù)據(jù)是否有效,從而進(jìn)行數(shù)據(jù)共享。DTD在進(jìn)行數(shù)據(jù)共享時存在一定的局限性,由于它并不遵循XML技術(shù)的語法結(jié)構(gòu),所以DTD可以共享的數(shù)據(jù)類型有限;另外DTD不支持命名空間,所以可能會有命名沖突。Schema技術(shù)部分解決了DTD在數(shù)據(jù)共享上的局限性,在支持XML語法結(jié)構(gòu)的同時,Schema本身就是一個XML文件,而且支持比DTD更細(xì)粒度的數(shù)據(jù)共享類型。XML中的文檔轉(zhuǎn)換技術(shù)指的是“可擴(kuò)展樣式表語言”(XSL),除了可以設(shè)置XML文檔的格式外,還能夠在XML文檔格式和其他文檔格式之間進(jìn)行轉(zhuǎn)換。XSL主要包括XSLT、XSL-FO以及XPath三部分,其中XSLT實(shí)現(xiàn)XML文檔轉(zhuǎn)換的功能,XSL-FO進(jìn)行XML文檔的格式化工作,而XPath可以進(jìn)行XML內(nèi)容的查詢,以提取XML文檔的信息。
基本的數(shù)據(jù)共享技術(shù)在進(jìn)行數(shù)據(jù)的共享時,需要相互調(diào)用數(shù)據(jù),在異構(gòu)系統(tǒng)間進(jìn)行數(shù)據(jù)交互的技術(shù)有Web Service技術(shù)、中間件技術(shù)等。Web Service技術(shù)通過WEB提供服務(wù),由于它提供的是標(biāo)準(zhǔn)接口,所以即使是不同的應(yīng)用、不同的業(yè)務(wù)之間,也可以進(jìn)行數(shù)據(jù)的調(diào)用和共享,而不需要其他軟硬件的支持。Web Service技術(shù)在應(yīng)用時主要包括三種角色[1]:服務(wù)提供者、服務(wù)代理以及服務(wù)請求者。服務(wù)提供者就是提供Web Service服務(wù)的角色,它向服務(wù)代理描述了Web Service服務(wù)的內(nèi)容和規(guī)范,并明確說明Web Service服務(wù)的類型、地址以及服務(wù)的格式等;服務(wù)代理類似于一個中介,其作用是接收服務(wù)提供者發(fā)布的Web Service服務(wù),并向服務(wù)請求者提供服務(wù)查詢功能。服務(wù)請求者根據(jù)查詢請求向服務(wù)代理查詢Web Service服務(wù),并根據(jù)相關(guān)服務(wù)的描述和服務(wù)提供者綁定,以進(jìn)行后續(xù)服務(wù)調(diào)用。Web Service技術(shù)提供服務(wù)的體系結(jié)構(gòu)圖如圖1所示:
中間件是位于操作系統(tǒng)和應(yīng)用層之間的一層軟件,其目的是屏蔽不同操作系統(tǒng)間的差異。按照不同的用途,可以將中間件技術(shù)分為不同的應(yīng)用種類,如遠(yuǎn)程過程調(diào)用技術(shù)、數(shù)據(jù)庫訪問技術(shù)等。在進(jìn)行系統(tǒng)集成時,中間件技術(shù)的作用是接收并將應(yīng)用的請求轉(zhuǎn)換為要訪問的系統(tǒng)可以處理的模式,起到一個橋梁的作用。
2 數(shù)據(jù)共享模型
異構(gòu)信息系統(tǒng)間在進(jìn)行數(shù)據(jù)共享時,要將共享的信息展現(xiàn)給其他系統(tǒng),數(shù)據(jù)集成的共享模型主要有數(shù)據(jù)倉庫共享模型、中間件共享模型以及P2P數(shù)據(jù)共享模型[2]。
在全局視圖上,中間件技術(shù)提供了一種數(shù)據(jù)共享模型,由不同的中間件軟件組成了一個中間件集成平臺,以此隱藏異構(gòu)數(shù)據(jù)源之間的數(shù)據(jù)差別。中間件數(shù)據(jù)集成平臺能夠集成結(jié)構(gòu)化、非結(jié)構(gòu)化的數(shù)據(jù),在融合異構(gòu)系統(tǒng)數(shù)據(jù)上具有比較好的效果。在中間件數(shù)據(jù)共享模型中,不僅可以提供各個成員應(yīng)用子系統(tǒng)的數(shù)據(jù)共享,而且能夠使各個成員數(shù)據(jù)庫系統(tǒng)實(shí)現(xiàn)本地系統(tǒng)自治。中間件數(shù)據(jù)共享模型的核心是中間件和封裝器,封裝器的作用是封裝各個子系統(tǒng)應(yīng)用的數(shù)據(jù)源,并將轉(zhuǎn)換為整個中間件數(shù)據(jù)共享模型系統(tǒng)可用的通用模型。中間件數(shù)據(jù)共享模型在數(shù)據(jù)共享上有很大的優(yōu)勢[3]:(1) 數(shù)據(jù)訪問的透明化。當(dāng)應(yīng)用中間件數(shù)據(jù)共享模型時,某一個子應(yīng)用系統(tǒng)如果想要請求其他應(yīng)用系統(tǒng)的數(shù)據(jù),它們之間不能直接進(jìn)行數(shù)據(jù)通信,而要通過中間件層來實(shí)現(xiàn);這樣做的好處是分離了應(yīng)用程序和其他數(shù)據(jù)源,對應(yīng)用系統(tǒng)來說,異構(gòu)系統(tǒng)的數(shù)據(jù)庫是透明的,如果異構(gòu)數(shù)據(jù)發(fā)生變化,應(yīng)用程序不需要修改。(2) 方便管理數(shù)據(jù)源。當(dāng)使用中間件數(shù)據(jù)共享系統(tǒng)時,中間件層維護(hù)全局?jǐn)?shù)據(jù)視圖,各成員系統(tǒng)不需要管理數(shù)據(jù)源,減輕了各成員系統(tǒng)的負(fù)擔(dān)。(3) 較好的安全性。使用中間件數(shù)據(jù)共享技術(shù)的集成系統(tǒng)中,各成員應(yīng)用系統(tǒng)之間是相互獨(dú)立的,不能直接訪問異構(gòu)系統(tǒng)間的應(yīng)用,所以具有較高的安全性。雖然中間件數(shù)據(jù)共享模型有上述優(yōu)勢,但在構(gòu)造中間件數(shù)據(jù)共享模型時也存在一定的困難,比如如何構(gòu)造全局視圖、如何實(shí)現(xiàn)中間件的視圖和數(shù)據(jù)源之間的映射等。
數(shù)據(jù)倉庫數(shù)據(jù)共享模型不僅存儲了異構(gòu)系統(tǒng)中的數(shù)據(jù),而且還會另外存儲一份需要共享的數(shù)據(jù)的副本;在數(shù)據(jù)倉庫中存儲的數(shù)據(jù)要借助ETL工具進(jìn)行數(shù)據(jù)的抽取和轉(zhuǎn)換?;跀?shù)據(jù)倉庫共享模型的數(shù)據(jù)共享方式復(fù)制了多個異構(gòu)數(shù)據(jù)源的數(shù)據(jù),并對外提供統(tǒng)一的接口,這樣用戶在訪問數(shù)據(jù)時就無需直接訪問原始數(shù)據(jù),而只需要訪問數(shù)據(jù)倉庫中的數(shù)據(jù)即可。數(shù)據(jù)倉庫中的共享數(shù)據(jù)還具有面向應(yīng)用的特性。在獲取數(shù)據(jù)時,ETL工具具有重要的作用,完成數(shù)據(jù)的抽取、轉(zhuǎn)換和清洗的功能[4]:(1) 數(shù)據(jù)抽取。顧名思義,數(shù)據(jù)抽取的作用就是從異構(gòu)數(shù)據(jù)源中抽取(復(fù)制)需要共享的數(shù)據(jù),不同數(shù)據(jù)源的數(shù)據(jù)遵循不同的規(guī)則,所以需要進(jìn)一步處理。(2) 數(shù)據(jù)轉(zhuǎn)換和清洗。不同數(shù)據(jù)源的數(shù)據(jù)在語義、類型以及格式上存在一定的差異,所以需要進(jìn)行分離、集成或聚集操作,以提高異構(gòu)數(shù)據(jù)源的質(zhì)量。(3) 數(shù)據(jù)的加載。共享數(shù)據(jù)處理完畢后,可以加載到數(shù)據(jù)倉庫中,方便用戶的共享使用。雖然數(shù)據(jù)倉庫共享模型方便共享數(shù)據(jù)的集中管理,但它也有一定的缺陷,比如因?yàn)橐?jīng)過諸如數(shù)據(jù)的抽取、轉(zhuǎn)換以及清洗的過程,所以性能上可能無法滿足實(shí)時性的要求。
3 HBase數(shù)據(jù)共享模型
單純的數(shù)據(jù)倉庫數(shù)據(jù)共享模型,采用的數(shù)據(jù)倉庫是公共數(shù)據(jù)庫,也就是說其數(shù)據(jù)共享方式是基于公共數(shù)據(jù)庫的。公共數(shù)據(jù)庫指的是可以被多于兩個的應(yīng)用系統(tǒng)公共使用的數(shù)據(jù)庫,在云計算應(yīng)用系統(tǒng)中,一般而言數(shù)據(jù)都有多個備份,Hadoop開源框架上HBase數(shù)據(jù)庫可以作為一個較好的公共數(shù)據(jù)庫。
HBase數(shù)據(jù)庫作為公共數(shù)據(jù)庫時,可以進(jìn)行數(shù)據(jù)的標(biāo)準(zhǔn)化,以此建立統(tǒng)一的數(shù)據(jù)共享格式;另外,多個副本機(jī)制還可以實(shí)現(xiàn)共享數(shù)據(jù)的高效存取。HBase數(shù)據(jù)庫是一種列式存儲的數(shù)據(jù)庫,可以面向稀疏數(shù)據(jù),由于它可以利用大量廉價服務(wù)器搭建大規(guī)模的集群環(huán)境,所以可以實(shí)現(xiàn)對海量數(shù)據(jù)的共享和處理。不像中間件數(shù)據(jù)共享模型以及數(shù)據(jù)倉庫共享模型那樣,HBase數(shù)據(jù)共享模型在存取共享數(shù)據(jù)時需要的時間比較短,比中間件共享模型少了數(shù)據(jù)轉(zhuǎn)換的時間,比數(shù)據(jù)倉庫數(shù)據(jù)共享模型少了數(shù)據(jù)抽取以及數(shù)據(jù)清洗的時間,只需要對HBase數(shù)據(jù)庫中共享數(shù)據(jù)進(jìn)行增刪改查操作就可以使各子應(yīng)用系統(tǒng)中的數(shù)據(jù)保持一致。
在讀寫性能上,HBase數(shù)據(jù)共享模型處理共享數(shù)據(jù)所需要的時間更短。傳統(tǒng)的數(shù)據(jù)共享模型中的數(shù)據(jù)庫一般都是關(guān)系型數(shù)據(jù)庫,而HBase等Nosql數(shù)據(jù)庫技術(shù)在處理海量數(shù)據(jù)上更有優(yōu)勢,淘寶、百度等大型互聯(lián)網(wǎng)公司都開始使用HBase數(shù)據(jù)庫作為共享數(shù)據(jù)庫。HBase數(shù)據(jù)共享模型的優(yōu)勢主要體現(xiàn)在[5]:(1) 數(shù)據(jù)插入速度與數(shù)據(jù)量無關(guān)。隨著數(shù)據(jù)量的增大,關(guān)系型數(shù)據(jù)庫的數(shù)據(jù)插入速度會明顯降低,而HBase數(shù)據(jù)庫的數(shù)據(jù)插入速度幾乎保持不變。(2) 支持共享數(shù)據(jù)需求的變化。HBase數(shù)據(jù)庫是列式存儲的,所以當(dāng)數(shù)據(jù)共享需求發(fā)生變化時,可以方便地進(jìn)行擴(kuò)展。例如要增加一個新的字段時,完全可以增加一個新的列簇,而無需修改原來的數(shù)據(jù)結(jié)構(gòu)。(3) 增強(qiáng)了共享系統(tǒng)的可靠性。HBase數(shù)據(jù)庫的數(shù)據(jù)在存儲時,并不像關(guān)系型數(shù)據(jù)庫那樣將所有的數(shù)據(jù)存在在一個數(shù)據(jù)節(jié)點(diǎn)上,而是會將同樣的數(shù)據(jù)存儲到多個HRegion服務(wù)器,保存數(shù)據(jù)的多個副本。
4 結(jié)論
本文首先研究了實(shí)現(xiàn)數(shù)據(jù)共享的關(guān)鍵技術(shù),比如XML技術(shù)和Web Service技術(shù)等,然后分析了中間件數(shù)據(jù)模型、數(shù)據(jù)倉庫共享模型等主要的數(shù)據(jù)共享模型,最后說明了基于HBase技術(shù)的數(shù)據(jù)共享模型,可以為后續(xù)數(shù)據(jù)共享技術(shù)提供一定的幫助。
參考文獻(xiàn):
[1] 王海豹.基于Hadoop架構(gòu)的數(shù)據(jù)共享模型研究[D].北京工業(yè)大學(xué),2013.
[2] 陳文青.DFS技術(shù)在企業(yè)數(shù)據(jù)共享中的應(yīng)用研究[J].計算機(jī)光盤軟件與應(yīng)用,2013,10(15).
[3] 張雷,何險峰,陸冬云.基于Web Services技術(shù)的科學(xué)數(shù)據(jù)共享研究[J].計算機(jī)與應(yīng)用化學(xué),2012,5(28).
[4] 王巍.XML/GML在WebGIS數(shù)據(jù)共享中的應(yīng)用研究[D].西南交通大學(xué),2014.
[5] 蔡昌.基于XML技術(shù)的網(wǎng)絡(luò)教學(xué)管理系統(tǒng)的研究與實(shí)現(xiàn)[J].2014,4(24).