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