亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        云環(huán)境下基于XUpdate的XML更新研究

        2018-06-25 02:25:24方少卿
        關(guān)鍵詞:命令文檔指令

        張 濤,方少卿

        (銅陵職業(yè)技術(shù)學(xué)院,安徽銅陵 244061)

        [通訊作者]方少卿(1965- ),男,教授,碩士,從事Web數(shù)據(jù)挖掘研究。

        1 研究背景

        目前,云計(jì)算技術(shù)與應(yīng)用正在蓬勃發(fā)展,大數(shù)據(jù)處理技術(shù)也取得了長(zhǎng)足的進(jìn)步,企業(yè)和單位在積極進(jìn)行智慧化建設(shè),紛紛把業(yè)務(wù)處理和數(shù)據(jù)處理搬到云端,提升了數(shù)據(jù)指導(dǎo)決策的應(yīng)用價(jià)值。隨著云計(jì)算、移動(dòng)互聯(lián)網(wǎng)、物聯(lián)網(wǎng)的快速發(fā)展,數(shù)據(jù)增長(zhǎng)規(guī)模加快,半結(jié)構(gòu)化及非結(jié)構(gòu)化的數(shù)據(jù)呈指數(shù)級(jí)增長(zhǎng)。云計(jì)算、大數(shù)據(jù)時(shí)代的到來(lái)將給各行各業(yè)帶來(lái)根本性的變革。

        XML(eXtensible Markup Language),即可擴(kuò)展標(biāo)識(shí)語(yǔ)言,對(duì)結(jié)構(gòu)化、半結(jié)構(gòu)化的數(shù)據(jù)表示具有先天的優(yōu)勢(shì)。在云計(jì)算技術(shù)廣泛應(yīng)用和發(fā)展的今天,XML業(yè)已成為數(shù)據(jù)表示和交換的標(biāo)準(zhǔn)[1]。當(dāng)前,用XML描述的數(shù)據(jù)在云計(jì)算、大數(shù)據(jù)時(shí)代增長(zhǎng)迅猛,應(yīng)用領(lǐng)域也在不斷擴(kuò)大。對(duì)于云計(jì)算環(huán)境下XML的研究,大部分是基于XML查詢的[2],對(duì)XML更新研究的較少,往往借助傳統(tǒng)標(biāo)準(zhǔn)進(jìn)行實(shí)現(xiàn),缺少標(biāo)準(zhǔn)支持。因此,把XML數(shù)據(jù)遷移到云計(jì)算平臺(tái)中,對(duì)XML更新標(biāo)準(zhǔn)和技術(shù)的研究成為一項(xiàng)具有重要意義的內(nèi)容。

        2 XUpdate更新技術(shù)

        2.1 云計(jì)算與XML

        XML在云平臺(tái)上架起了各類(lèi)數(shù)據(jù)之間交互的橋梁,是不同平臺(tái)、組件間進(jìn)行數(shù)據(jù)交換、集成的中間表示形式,是配置文件的重要數(shù)據(jù)載體,信息表示方便[1]。對(duì)于XML文檔的管理方式主要有:文件系統(tǒng)平面文件、關(guān)系數(shù)據(jù)庫(kù)、面向?qū)ο髷?shù)據(jù)庫(kù)、Native XML數(shù)據(jù)庫(kù)。Native XML數(shù)據(jù)庫(kù)保存XML文檔能做到不丟失信息,在管理XML數(shù)據(jù)上具有突出優(yōu)勢(shì)。在云平臺(tái)進(jìn)行原生XML數(shù)據(jù)存儲(chǔ)和管理,對(duì)原始數(shù)據(jù)的結(jié)構(gòu)化、非結(jié)構(gòu)化的展現(xiàn)和數(shù)據(jù)安全有著重要的意義。XML技術(shù)將成為云計(jì)算、大數(shù)據(jù)發(fā)展的基礎(chǔ)技術(shù)[3]。當(dāng)前,Native XML數(shù)據(jù)庫(kù)的研究已進(jìn)入相對(duì)成熟的時(shí)期,基于DBaaS技術(shù),將Native XML數(shù)據(jù)庫(kù)與云計(jì)算平臺(tái)整合可以進(jìn)一步拓展云平臺(tái)的處理能力,并為XML數(shù)據(jù)管理提供一個(gè)良好的方式。

        2.2 XUpdate

        XPath和XQuery是W3C推薦的XML文檔查詢語(yǔ)言。更新作為管理XML數(shù)據(jù)的一個(gè)重要功能,當(dāng)前還沒(méi)有一個(gè)統(tǒng)一的語(yǔ)言和操作標(biāo)準(zhǔn),XML文檔更新實(shí)現(xiàn)主要是基于XQuery語(yǔ)言擴(kuò)展和自定義模型的更新[4]。XUpdate[5]更新語(yǔ)言為XML數(shù)據(jù)的更新操作提供了實(shí)際規(guī)范,推動(dòng)了XML更新技術(shù)以及Native XML數(shù)據(jù)庫(kù)的發(fā)展。XUpdate(XML Update Language)由XML∶DB Initiative制定,其功能是更新XML文檔中的數(shù)據(jù)。XUpdate是一種基于XML的詞匯表,類(lèi)似于XSLT,但比XSLT要簡(jiǎn)單。XUpdate語(yǔ)言僅對(duì)如何修改XML數(shù)據(jù)作了明確定義,查詢文檔節(jié)點(diǎn)是通過(guò)XPath語(yǔ)法實(shí)現(xiàn)的。

        Xupdate基于XML語(yǔ)法描述,制定的元素類(lèi)型有:xupdate∶element、xupdate∶text、xupdate∶comment、xupdate∶processing-instruction、xupdate∶variable、xupdate∶cdata、xupdate∶attribute。XUpdate制定的操作命令有:xupdate∶insert-before、xupdate∶insert-after、xupdate∶update、xupdate∶append、xupdate∶rename、xupdate∶remove、xupdate∶variable、xupdate∶value-of。

        XUpdate語(yǔ)言的命名空間是http://www.xmldb.org/xupdate,更新語(yǔ)句使用XML文檔描述,根元素為xupdate∶modifications。xupdate∶modifications元素有一個(gè)表示XUpdate使用的版本的version屬性,目前版本為1.0。xupdate∶modifications包含基本更新指令元素,用于更新XML數(shù)據(jù)。

        XUpdate更新XML數(shù)據(jù),通過(guò)XPath查詢更新節(jié)點(diǎn),更新XML文檔的操作為:insert、update、append、rename、remove等。同時(shí),為了更好地執(zhí)行更新指令,還應(yīng)包含自定的variables。

        (1)Insert指令用于向XML文檔中添加新的內(nèi)容,可在節(jié)點(diǎn)后(xupdate∶insert-after)添加和節(jié)點(diǎn)前(xupdate∶insert-before)添加數(shù)據(jù),通過(guò)XPath表達(dá)式表示的select屬性獲取待操作的節(jié)點(diǎn)。Insert指令可向XML文檔中添加的數(shù)據(jù)類(lèi)型有元素、文本、預(yù)處理指令、屬性、注解、節(jié)點(diǎn)。語(yǔ)法示例:

        xmlns∶xupdate="http://www.xmldb.org/xupdate">

        Columbia

        (2)xupdate∶append指令用于向XML文檔中追加新建的元素節(jié)點(diǎn),其select屬性用于選擇操作節(jié)點(diǎn),child屬性(整型值)用于定位新建節(jié)點(diǎn)在被選擇節(jié)點(diǎn)中子節(jié)點(diǎn)的位置(默認(rèn)為最后一個(gè)子節(jié)點(diǎn))。xupdate∶append指令可追加的元素與Insert指令類(lèi)似。語(yǔ)法示例:

        (3)xupdate∶update指令用于更新節(jié)點(diǎn)內(nèi)容,其屬性select指定待更新節(jié)點(diǎn)。語(yǔ)法示例:

        Greatest Hits

        (4)xupdate∶remove指令用來(lái)刪除XML文檔數(shù)據(jù)節(jié)點(diǎn),其屬性select獲取待刪除節(jié)點(diǎn)。語(yǔ)法示例:

        (5)xupdate∶rename指令用于對(duì)XML數(shù)據(jù)的屬性或者元素節(jié)點(diǎn)進(jìn)行重命名操作,通過(guò)select屬性(值須為元素或?qū)傩怨?jié)點(diǎn)集)獲取待重命名的節(jié)點(diǎn)。語(yǔ)法示例:

        title

        (6)xupdate∶variable元素用于自定義更新變量。變量名通過(guò)name屬性定義,變量的值可通過(guò)XPath表達(dá)式獲取。對(duì)變量的引用xupdate∶value-of元素獲取。語(yǔ)法示例:

        XUpdate的基礎(chǔ)語(yǔ)法、語(yǔ)義都簡(jiǎn)單明確,通過(guò)基礎(chǔ)更新指令間的組合,可構(gòu)建出多變的更新語(yǔ)句,為云平臺(tái)下的XML數(shù)據(jù)更新提供了一個(gè)良好的機(jī)制。

        3 XUpdate應(yīng)用實(shí)施

        3.1 XUpdate應(yīng)用架構(gòu)

        圖1 XUpdate更新架構(gòu)

        基于對(duì)Native XML數(shù)據(jù)庫(kù)的拓展,結(jié)合開(kāi)源框架類(lèi)庫(kù),對(duì)XUpdate語(yǔ)言進(jìn)行實(shí)現(xiàn)。采用模塊化、低耦合開(kāi)發(fā)實(shí)現(xiàn),處理框架見(jiàn)圖1。

        基于XUpdate更新語(yǔ)言處理XML文檔的開(kāi)發(fā)實(shí)現(xiàn)由1個(gè)協(xié)調(diào)控制器和5個(gè)子模塊組成。5個(gè)子模塊為:XUpdate語(yǔ)言編譯、XML文檔存取、XUpdate指令執(zhí)行、結(jié)果輸出以及事務(wù)處理模塊。

        XUpdate更新命令通過(guò)XUpdate語(yǔ)言編譯模塊進(jìn)行解析,轉(zhuǎn)換成內(nèi)部命令表示;基于命令中的select屬性值進(jìn)XPath表達(dá)式解析,獲取待更新的數(shù)據(jù)信息;XUpdate協(xié)調(diào)控制器調(diào)用XUpdate命令執(zhí)行模塊遍執(zhí)行命令集中的具體命令操作; XML文檔存取模塊負(fù)責(zé)把更新后的XML文檔存入存儲(chǔ)介質(zhì)(如:Native XML數(shù)據(jù)庫(kù));通過(guò)對(duì)文檔加鎖機(jī)制和延遲寫(xiě)入實(shí)現(xiàn)更新過(guò)程中的事務(wù)處理模塊。

        3.2 實(shí)現(xiàn)算法

        3.2.1 XUpdate語(yǔ)言編譯

        XUpdate更新命令以XML來(lái)描述,基于SAX解析XUpdate更新命令[6],生成基礎(chǔ)的更新處理信息,通過(guò)Vector數(shù)據(jù)結(jié)構(gòu)保存解析結(jié)果,完成內(nèi)部命令表示。主要算法思想如下:

        遍歷XUpdate更新語(yǔ)句文檔{

        對(duì)于命名空間URL,加入命名空間Vector;

        對(duì)于文本節(jié)點(diǎn),添加文本處理指令,保存到文本Vector,在文本節(jié)點(diǎn)末,添加文本處理結(jié)束標(biāo)志;

        對(duì)于元素節(jié)點(diǎn)開(kāi)始標(biāo)記,

        若該元素為更新指令元素,把指令轉(zhuǎn)化為內(nèi)部整數(shù)表示,添加該指令及其屬性分別到命令、屬性Vector;

        若為Insert、Append指令的待更新元素,在命令Vector里添加元素指示指令和屬性指示指令,對(duì)元素名進(jìn)行命名空間映射,并添加到屬性Vector中。對(duì)待更新元素的子元素進(jìn)行同樣的遍歷操作。

        對(duì)于元素節(jié)點(diǎn)結(jié)束標(biāo)記,

        若該元素為更新指令元素,在命令Vector里添加命令結(jié)束指令;

        若為Insert、Append指令的待更新元素,在命令Vector里添加元素指示結(jié)束指令;

        }

        對(duì)于下面XUpdate語(yǔ)句,解析后,更新命令Vector表示見(jiàn)表1。

        1

        Tlpt,Tongling,Anhui

        表1 更新命令Vector

        3.2.2 XML文檔更新實(shí)現(xiàn)

        更新命令表示為內(nèi)部定義的整型常量。XML文檔更新基于XUpdate編譯后Vector內(nèi)部命令對(duì)待更新的XML文檔進(jìn)行操作。XUpdate操作實(shí)現(xiàn)算法如下:

        獲取待更新的XML文檔;

        遍歷命令Vector,根據(jù)select屬性選擇上下文節(jié)點(diǎn){

        對(duì)于屬性指示指令,構(gòu)建屬性元素;

        對(duì)于文本節(jié)點(diǎn),構(gòu)建字符串元素,

        對(duì)于variable命令,把屬性seclect指定的節(jié)點(diǎn)集保存在HashTable中;

        對(duì)于其他命令,根據(jù)命令類(lèi)型,調(diào)用響應(yīng)的execute()方法執(zhí)行對(duì)應(yīng)的更新操作;

        }

        保存更新后的結(jié)果。

        XUpdate的命令主要為:插入、刪除、更新。定義一個(gè)基礎(chǔ)命令處理類(lèi),具體命令的實(shí)現(xiàn)繼承于基礎(chǔ)命令類(lèi),并改寫(xiě)自己命令的實(shí)現(xiàn),實(shí)現(xiàn)調(diào)用格式的統(tǒng)一。基本算法如下:

        (1)remove指令

        被刪除的對(duì)象為屬性,獲取其所屬節(jié)點(diǎn)元素,調(diào)用節(jié)點(diǎn)刪除屬性方法刪除;

        被刪除的對(duì)象為元素,獲取其父節(jié)點(diǎn)元素,調(diào)用節(jié)點(diǎn)刪除子節(jié)點(diǎn)方法刪除;

        (2)append指令

        獲取待追加的元素及其屬性;

        遍歷所選擇節(jié)點(diǎn)集,在child屬性指定位置,追加命令操作對(duì)象。

        (3)insert操作

        獲取待插入的元素及其屬性;

        遍歷所選擇節(jié)點(diǎn)集,在每個(gè)節(jié)點(diǎn)的前/后追加命令操作對(duì)象。

        insert-after算法與insert-before算法類(lèi)似。進(jìn)行插入操作(包括append)需要基于namespaces、characters、attributes信息創(chuàng)建新節(jié)點(diǎn),基于DOM模型構(gòu)建出attribute、element、comment、text、CDATA,processing instruction以及variable對(duì)應(yīng)的節(jié)點(diǎn)集,用于對(duì)XML文檔進(jìn)行更新。

        (4)update操作

        遍歷所選擇節(jié)點(diǎn)集{

        對(duì)于元素節(jié)點(diǎn),刪除節(jié)點(diǎn)對(duì)應(yīng)的文本節(jié)點(diǎn),在追加上更新的文本節(jié)點(diǎn);

        對(duì)于文本節(jié)點(diǎn),改變當(dāng)前節(jié)點(diǎn)的值;

        對(duì)于屬性、注釋等節(jié)點(diǎn),直接設(shè)置其替換值即可;

        }

        (5)rename操作

        遍歷所選擇節(jié)點(diǎn)集,獲取所更新節(jié)點(diǎn)的父節(jié)點(diǎn){

        對(duì)于屬性節(jié)點(diǎn),獲取屬性所屬節(jié)點(diǎn)元素,添加新屬性,刪除原有屬性;

        對(duì)于處理指令節(jié)點(diǎn),創(chuàng)建新處理指令節(jié)點(diǎn)替換原有的指令節(jié)點(diǎn);

        對(duì)于元素節(jié)點(diǎn),創(chuàng)建新元素節(jié)點(diǎn){

        遍歷待重命名元素的屬性,轉(zhuǎn)換命名空間后,在新元素節(jié)點(diǎn)上添加之;

        遍歷待重命名元素的子元素,轉(zhuǎn)換命名空間后,在新元素節(jié)點(diǎn)上添加之;

        父節(jié)點(diǎn)替換原有的元素節(jié)點(diǎn)為新創(chuàng)建的元素節(jié)點(diǎn);

        }

        }

        rename操作的對(duì)象須為元素節(jié)點(diǎn)、屬性節(jié)點(diǎn)或者處理指令。

        3.3 結(jié)果測(cè)試

        結(jié)合以上XUpdate更新處理架構(gòu),基于Java語(yǔ)言和開(kāi)源框架,在Eclipse開(kāi)發(fā)環(huán)境進(jìn)行編碼測(cè)試,結(jié)合云計(jì)算實(shí)驗(yàn)平臺(tái),通過(guò)虛擬機(jī)和PaaS平臺(tái)部署測(cè)試代碼,能夠成功地對(duì)XML數(shù)據(jù)進(jìn)行更新,為云平臺(tái)基于模板的配置文件更新、XML數(shù)據(jù)管理提供了一種有意義的方式。

        XUpdate更新實(shí)施主要包括XUpdate語(yǔ)言解析和XUpdate更新命令執(zhí)行,經(jīng)測(cè)試,對(duì)XUpdate更新文檔的解析一般為30ms左右,對(duì)常規(guī)XML文檔的處理,根據(jù)命令的復(fù)雜度和文檔規(guī)模的不同,用時(shí)一般基于200~1000ms之間。更新性能與傳統(tǒng)的基于DOM的XML文檔更新進(jìn)行比較[6],在小規(guī)模XML文檔更新上兩者相率相當(dāng),但隨著XML文檔規(guī)模的提升,基于XUpdate的更新處理顯示了較好的更新性能,效率提高15%~40%。

        4 結(jié)語(yǔ)

        云計(jì)算、大數(shù)據(jù)技術(shù)的發(fā)展進(jìn)一步促進(jìn)了XML數(shù)據(jù)的應(yīng)用和快速增長(zhǎng),本文基于XUpdate語(yǔ)言對(duì)XML文檔的更新技術(shù)進(jìn)行了研究和實(shí)施,提供了XML文檔更新操作的基礎(chǔ)規(guī)范和體系結(jié)構(gòu),對(duì)云計(jì)算環(huán)境下基于XUpdate的XML更新研究有著一定的實(shí)踐意義。XML文檔的更新是一個(gè)復(fù)雜的過(guò)程,更新時(shí)的事務(wù)處理、XML更新標(biāo)準(zhǔn)、基于云計(jì)算平臺(tái)的XML更新技術(shù)以及Native XML 數(shù)據(jù)庫(kù)、XUpdate與云平臺(tái)的融合,都是需要進(jìn)一步解決的問(wèn)題。

        [參考文獻(xiàn)]

        [1]趙偉,卓偉,李占波,等.基于云計(jì)算的一種新的數(shù)據(jù)交換架構(gòu)[J].計(jì)算機(jī)工程與科學(xué),2013(8):15-19.

        [2]魏永山,張峰,陳欣,等.一種云計(jì)算環(huán)境下的XML查詢數(shù)據(jù)服務(wù)的優(yōu)化方法[J].計(jì)算機(jī)工程與科學(xué),2013(6):31-36.

        [3]王向陽(yáng).基于Hadoop的海量小型XML數(shù)據(jù)挖掘的研究[D].西安:西安郵電大學(xué),2016.

        [4]馬程,徐海燕.基于CB+-tree的時(shí)態(tài)XML索引動(dòng)態(tài)更新方法[J].廣東石油化工學(xué)院學(xué)報(bào),2016(1):44-47.

        [5]Andreas Laux,Lars Martin.XML Update Language(XUpdate)[EB/OL].(2000-09-14)[2017-08-08].http://xmldb-org.sourceforge.net/xupdate/xupdate-wd.html.

        [6]王磊,張紅梅,姚保峰,等.XML文檔解析技術(shù)研究[J].常州工學(xué)院學(xué)報(bào),2013(5):36-41.

        猜你喜歡
        命令文檔指令
        聽(tīng)我指令:大催眠術(shù)
        只聽(tīng)主人的命令
        有人一聲不吭向你扔了個(gè)文檔
        ARINC661顯控指令快速驗(yàn)證方法
        LED照明產(chǎn)品歐盟ErP指令要求解讀
        移防命令下達(dá)后
        基于RI碼計(jì)算的Word復(fù)制文檔鑒別
        這是人民的命令
        Persistence of the reproductive toxicity of chlorpiryphos-ethyl in male Wistar rat
        坐標(biāo)系旋轉(zhuǎn)指令數(shù)控編程應(yīng)用
        日本欧美在线播放| 亚洲欧美国产精品久久| 国产丝袜在线精品丝袜| 国产美女在线一区二区三区| 丝袜美腿爆炒国产在线观看 | 人妻一区二区三区av| 最近2019年好看中文字幕视频| 无码国产精品一区二区免费16| 国产成人AV乱码免费观看| 日本综合视频一区二区| 精品亚洲成a人无码成a在线观看| 亚洲熟女少妇一区二区| 青青草视频在线视频播放| 国产真实一区二区三区| 亚洲人成色7777在线观看不卡| 亚洲精品第一页国产精品| 蜜桃视频在线免费观看一区二区| 久久精品国产88久久综合| 手机av在线播放网站| 人人妻人人澡人人爽欧美一区双| 一群黑人大战亚裔女在线播放| 91在线无码精品秘 入口九色十| 国产精品日韩av一区二区| 免费无码一区二区三区蜜桃| 久久精品国产99精品九九| 69精品人妻一区二区| 色综合久久网| 亚洲av无码专区国产乱码不卡| 精品日韩欧美一区二区三区在线播放| 少妇下面好紧好多水真爽| 麻豆╳╳╳乱女另类| 无国产精品白浆免费视| 手机在线中文字幕av| 无码av中文一区二区三区| 成人做爰69片免费看网站| 日韩精品有码在线视频| 亚洲乱码av中文一区二区| 久久久精品人妻一区二区三区蜜桃| 女人的天堂av免费看| 精品一区二区av在线| 国产精品无码久久久久久|