為論文《xml數(shù)據(jù)庫在移動(dòng)系統(tǒng)中應(yīng)用研究》所做的文獻(xiàn)綜述報(bào)告_第1頁
為論文《xml數(shù)據(jù)庫在移動(dòng)系統(tǒng)中應(yīng)用研究》所做的文獻(xiàn)綜述報(bào)告_第2頁
為論文《xml數(shù)據(jù)庫在移動(dòng)系統(tǒng)中應(yīng)用研究》所做的文獻(xiàn)綜述報(bào)告_第3頁
為論文《xml數(shù)據(jù)庫在移動(dòng)系統(tǒng)中應(yīng)用研究》所做的文獻(xiàn)綜述報(bào)告_第4頁
為論文《xml數(shù)據(jù)庫在移動(dòng)系統(tǒng)中應(yīng)用研究》所做的文獻(xiàn)綜述報(bào)告_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、為論文xml數(shù)據(jù)庫在移動(dòng)系統(tǒng)中應(yīng)用研究所做的文獻(xiàn)綜述報(bào)告數(shù)據(jù)庫技術(shù)在信息管理當(dāng)中的地位不言而喻,它已經(jīng)成為先進(jìn)信息技術(shù)的重要組成部分,是現(xiàn)代計(jì)算機(jī)信息系統(tǒng)和計(jì)算機(jī)應(yīng)用系統(tǒng)的基礎(chǔ)和核心。數(shù)據(jù)庫技術(shù)最初產(chǎn)生于20世紀(jì)60年代中期,根據(jù)數(shù)據(jù)模型的發(fā)展,可以劃分為若干個(gè)階段:從第一代的網(wǎng)狀數(shù)據(jù)庫系,到層次數(shù)據(jù)庫系統(tǒng),到關(guān)系數(shù)據(jù)庫系統(tǒng),到當(dāng)代的以面向?qū)ο竽P蜑橹饕卣鞯臄?shù)據(jù)庫系統(tǒng)。當(dāng)代數(shù)據(jù)庫,1盡管由于互聯(lián)網(wǎng)應(yīng)用的興起,導(dǎo)致XML數(shù)據(jù)的大量出現(xiàn),但就目前來講關(guān)系型數(shù)據(jù)庫依舊占據(jù)主流的地位,可隨著數(shù)據(jù)庫更廣泛的應(yīng)用,以及和多學(xué)科技術(shù)的結(jié)合,新的數(shù)據(jù)庫技術(shù)是層出不窮,如面向?qū)ο笈c對(duì)象-關(guān)系數(shù)據(jù)庫系統(tǒng)、移動(dòng)數(shù)

2、據(jù)庫系統(tǒng)、實(shí)時(shí)數(shù)據(jù)庫系統(tǒng)、XML和半結(jié)構(gòu)化數(shù)據(jù)庫系統(tǒng)、并行和分布式數(shù)據(jù)庫系統(tǒng)、多媒體數(shù)據(jù)庫等等。本報(bào)告將闡述與移動(dòng)數(shù)據(jù)庫和XML數(shù)據(jù)庫相關(guān)的內(nèi)容。1.移動(dòng)數(shù)據(jù)庫的由來社會(huì)進(jìn)入信息時(shí)代,人們的生活方式也發(fā)生了巨大的變化,現(xiàn)代科技已經(jīng)為人們的交流和溝通提供了方便的工具,時(shí)代要求人們隨時(shí)隨地訪問信息并得到服務(wù),實(shí)現(xiàn)無約束自由通信和共享資源的理想目標(biāo),這是一種更加靈活、復(fù)雜的分布計(jì)算環(huán)境,人們稱之為移動(dòng)計(jì)算(Mobile Computing) 。移動(dòng)計(jì)算系統(tǒng)不同于傳統(tǒng)分布計(jì)算系統(tǒng),它是由固定結(jié)點(diǎn)和移動(dòng)結(jié)點(diǎn)構(gòu)成的分布計(jì)算系統(tǒng),具有移動(dòng)性,頻繁斷接性,網(wǎng)絡(luò)條件多樣性、網(wǎng)絡(luò)通信的非對(duì)稱性、系統(tǒng)的高伸縮性和低

3、可靠性以及電源能力的有限性等特點(diǎn)。這些特點(diǎn)使得傳統(tǒng)的分布式數(shù)據(jù)庫技術(shù)不能支持或是不能有效地支持移動(dòng)計(jì)算環(huán)境。因此,必須對(duì)已有的傳統(tǒng)的分布式數(shù)據(jù)庫加以改進(jìn),或者重新設(shè)計(jì),形成一種能全面支持移動(dòng)計(jì)算環(huán)境的數(shù)據(jù)庫技術(shù),即移動(dòng)數(shù)據(jù)庫(Mobile Database)。52.移動(dòng)數(shù)據(jù)庫典型系統(tǒng)模型移動(dòng)數(shù)據(jù)庫系統(tǒng)由三類結(jié)點(diǎn)組成,即:(1 ) 服務(wù)器( Server,簡(jiǎn)稱SVR) : 一般為固定結(jié)點(diǎn), 每個(gè)服務(wù)器維護(hù)一個(gè)本地?cái)?shù)據(jù)庫,服務(wù)器之間由可靠的高速互聯(lián)網(wǎng)絡(luò)連接在一起,構(gòu)成一個(gè)傳統(tǒng)意義上的分布式數(shù)據(jù)庫系統(tǒng)。 服務(wù)器可以處理客戶的聯(lián)機(jī)請(qǐng)求, 并可以保持所有請(qǐng)求的歷史記錄。(2) 移動(dòng)支持結(jié)點(diǎn)(Mobile

4、 Support Station , 簡(jiǎn)稱MSS) :MSS 也位于高速網(wǎng)絡(luò)中,并具有無線聯(lián)網(wǎng)能力,它們用于支持一個(gè)無線網(wǎng)絡(luò)單元(cell) ,該單元內(nèi)的移動(dòng)客戶機(jī)既可以通過無線鏈路與一個(gè)MSS 通信, 從而與整個(gè)固定網(wǎng)絡(luò)連通,也可以接收由MSS 發(fā)送的廣播信息。 服務(wù)器與MSS 可以是同一臺(tái)機(jī)器。(3) 移動(dòng)客戶機(jī)(Mobile Client ,簡(jiǎn)稱MC) :MC 的處理能力與存儲(chǔ)能力相對(duì)于服務(wù)器來說非常有限,且具有移動(dòng)性(即可以出現(xiàn)在任意一個(gè)無線單元中) ,經(jīng)常與服務(wù)器斷接(指MC 無法與服務(wù)器聯(lián)機(jī)通信) 。 即使在與服務(wù)器保持連接時(shí),由于MC 所處的網(wǎng)絡(luò)環(huán)境多變,MC 與服務(wù)器之間的網(wǎng)絡(luò)

5、帶寬相差很大,且可靠性較低、網(wǎng)絡(luò)延遲較大。3.移動(dòng)數(shù)據(jù)庫技術(shù)的發(fā)展現(xiàn)狀以及發(fā)展趨勢(shì)3.  1       移動(dòng)數(shù)據(jù)庫的關(guān)鍵技術(shù)移動(dòng)數(shù)據(jù)庫涉及的理論和技術(shù)涵蓋了當(dāng)今通信和計(jì)算機(jī)發(fā)展的最新成果,其中,在移動(dòng)環(huán)境下如何進(jìn)行數(shù)據(jù)管理是實(shí)現(xiàn)移動(dòng)數(shù)據(jù)庫的關(guān)鍵,根據(jù)目前國際上有關(guān)機(jī)構(gòu)的研究表明,這些關(guān)鍵技術(shù)主要集中在如下幾個(gè)方面: 復(fù)制與緩存技術(shù),數(shù)據(jù)廣播技術(shù),移動(dòng)查詢優(yōu)化和事務(wù)處理技術(shù),移動(dòng)數(shù)據(jù)庫的安全技術(shù)。53.2         嵌入式移動(dòng)數(shù)據(jù)

6、庫,移動(dòng)數(shù)據(jù)庫系統(tǒng)中的一個(gè)組成部分翻閱諸多資料,發(fā)現(xiàn)不少作者籠統(tǒng)地把嵌入式移動(dòng)數(shù)據(jù)庫和移動(dòng)數(shù)據(jù)庫混為一談,甚至說嵌入式移動(dòng)數(shù)據(jù)庫簡(jiǎn)稱為移動(dòng)數(shù)據(jù)庫。我發(fā)現(xiàn)其實(shí)這兩者是相關(guān)而不相同的概念。我認(rèn)為移動(dòng)數(shù)據(jù)庫是一個(gè)更為抽象一點(diǎn)的概念。我們可以理解凡是涉及移動(dòng)環(huán)境中所需的數(shù)據(jù)庫,就可以稱為移動(dòng)數(shù)據(jù)庫。而嵌入式移動(dòng)數(shù)據(jù)庫的概念我認(rèn)為是在移動(dòng)技術(shù)應(yīng)用環(huán)境中所產(chǎn)生的一個(gè)概念。由于人們面向不同的應(yīng)用而去開發(fā)移動(dòng)數(shù)據(jù)庫時(shí),數(shù)據(jù)庫的管理模型設(shè)計(jì)得有所不同,有的數(shù)據(jù)庫模型用分布式的特點(diǎn),有的使用智能代理,有的用B/A/S多層結(jié)構(gòu)等等。而目前移動(dòng)數(shù)據(jù)庫比較典型的應(yīng)用模式是三級(jí)數(shù)據(jù)庫應(yīng)用模式。下面兩個(gè)圖一個(gè)給出一個(gè)比較典

7、型應(yīng)用的三級(jí)移動(dòng)數(shù)據(jù)庫系統(tǒng)結(jié)構(gòu)圖,12另一個(gè)則清晰地表示出在數(shù)據(jù)庫三級(jí)應(yīng)用模式中嵌入式移動(dòng)數(shù)據(jù)庫系統(tǒng)部分。4 可以看到,人們將嵌入于移動(dòng)設(shè)備當(dāng)中的數(shù)據(jù)庫部分稱為嵌入式移動(dòng)數(shù)據(jù)庫,它只是整個(gè)移動(dòng)數(shù)據(jù)庫系統(tǒng)中的一個(gè)組成部分。(1) 數(shù)據(jù)庫服務(wù)器DBSVR (Database Server) : 可以是大型數(shù)據(jù)庫系統(tǒng), 如: O racle, Sybase, DB2, SQL Server, 一般為固定結(jié)點(diǎn)。每個(gè)DBSVR 上維護(hù)本地?cái)?shù)據(jù)庫的一個(gè)完整的副本, 服務(wù)器之間由可靠的高速互聯(lián)網(wǎng)連接在一起, 構(gòu)成一個(gè)傳統(tǒng)意義上的分布數(shù)據(jù)庫系統(tǒng)。( 2 ) 移動(dòng)支持結(jié)點(diǎn)MSS (Mob ile Suppo r

8、t Stat ion ) : 進(jìn)行分布式事務(wù)處理, 控制EMDB 和DBSVR 之間的數(shù)據(jù)交換并支持一個(gè)無線單元(cell) , 具有無線聯(lián)網(wǎng)能力和同步功能,MSS 也位于高速網(wǎng)絡(luò)中。服務(wù)器可以與MSS 為同一臺(tái)機(jī)器。(3) 位置服務(wù)器L S (Locat ion Server).(4) 可信部分: 由固定網(wǎng)絡(luò)以及網(wǎng)絡(luò)上的固定主機(jī)組成, 固定主機(jī)分為兩類: 一類是不帶無線通訊的主機(jī), 如DSSVR 和LS; 另一類是帶有無線通訊接口MSS.(5) 移動(dòng)客戶機(jī)MC (Mob ile Clien t) :MC 的處理能力與存儲(chǔ)能力相對(duì)于服務(wù)器來說非常有限, 且具有移動(dòng)性(即可以出現(xiàn)在任意一個(gè)無線單

9、元中) , 在它上面保存一部分?jǐn)?shù)據(jù)庫副本, 并通過EMDB 對(duì)本地?cái)?shù)據(jù)進(jìn)行管理, 可以通過無線鏈路與一個(gè)M SS 通信, 通過M SS 上的ODBC 接口, EMDB 可以與DBSVR 進(jìn)行數(shù)據(jù)交換。從而與整個(gè)固定網(wǎng)絡(luò)連通, 也可以接受由MSS 發(fā)送的廣播信息。它會(huì)經(jīng)常與服務(wù)器斷接(指MC 無法與任意一個(gè)聯(lián)機(jī)通信) 即使在與服務(wù)器保持連接時(shí), 由于MC所處的網(wǎng)絡(luò)環(huán)境多變,MC 與服務(wù)器之間的網(wǎng)絡(luò)帶寬相差很大, 且可靠性較低, 網(wǎng)絡(luò)延遲較大。(6) 本地?cái)?shù)據(jù)庫Rep (Rep licat ion) : 數(shù)據(jù)庫副本。(7) EMDB: 嵌入式移動(dòng)數(shù)據(jù)庫, 工作方式為: 每當(dāng)MC 發(fā)出一個(gè)查詢請(qǐng)求Q

10、 1 時(shí), 它首先查詢本地?cái)?shù)據(jù)庫(移動(dòng)子集上) , 若滿足查詢條件要求則直接返回給MC, 否則就向VS 提交查詢請(qǐng)求, 由VS 代替MC 完成查詢并將結(jié)果返回給MC (前提是兩者處于連接狀態(tài))。若MC 處于斷接狀態(tài), 則也只能在MC 上執(zhí)行本地查詢。若在斷接期間更新了MC 上的數(shù)據(jù),則該數(shù)據(jù)將在VS 再次連接時(shí), 進(jìn)行數(shù)據(jù)重集成, 通過一致性維護(hù)算法來保證一致性。12主要EMDB 的應(yīng)用模式都是立足于嵌入式設(shè)備作客戶端, 在嵌入式設(shè)備上運(yùn)行一個(gè)精巧的EMDB, 在通過同步或復(fù)制技術(shù)與企業(yè)級(jí)數(shù)據(jù)庫連接。這種應(yīng)用模式在支持嵌入式設(shè)備的同時(shí), 還支持移動(dòng)設(shè)備, 甚至無線移動(dòng)設(shè)備, 構(gòu)成基于移動(dòng)環(huán)境的

11、應(yīng)用。在數(shù)據(jù)庫三級(jí)應(yīng)用模式中, EMDB 系統(tǒng)一般采用EMDB + 同步/復(fù)制服務(wù)器+ 企業(yè)級(jí)DB, 如圖2 所示。3.3         移動(dòng)數(shù)據(jù)庫技術(shù)的發(fā)展現(xiàn)狀:從研究走向應(yīng)用移動(dòng)數(shù)據(jù)庫技術(shù)固然還存在有待于進(jìn)一步研究改進(jìn)的地方,不過隨著市場(chǎng)的需求,以及技術(shù)研究方面取得的諸多成就,移動(dòng)數(shù)據(jù)庫技術(shù)已經(jīng)從研究領(lǐng)域向廣泛的應(yīng)用領(lǐng)域發(fā)展。各種嵌入式移動(dòng)數(shù)據(jù)庫產(chǎn)品紛紛涌現(xiàn)。尤其是對(duì)移動(dòng)數(shù)據(jù)處理和管理需求的不斷提高,緊密結(jié)合各種智能設(shè)備的嵌入式移動(dòng)數(shù)據(jù)庫技術(shù)已經(jīng)得到了學(xué)術(shù)界、工業(yè)界、軍事領(lǐng)域、民用部門等各方面的重視,不斷實(shí)用

12、化。73.4         嵌入式移動(dòng)數(shù)據(jù)庫應(yīng)用中的特點(diǎn)和關(guān)鍵技術(shù)從上述的嵌入式移動(dòng)數(shù)據(jù)庫的數(shù)據(jù)管理模式中,可以看到嵌入式移動(dòng)數(shù)據(jù)庫是一個(gè)一端嵌入在移動(dòng)設(shè)備中,另一端是固定的同步/復(fù)制數(shù)據(jù)庫的分布式數(shù)據(jù)庫系統(tǒng)。移動(dòng)設(shè)備這端的數(shù)據(jù)庫一方面需要進(jìn)行移動(dòng)終端設(shè)備上的數(shù)據(jù)處理查詢事務(wù)等,一方面解決和同步/復(fù)制數(shù)據(jù)庫的數(shù)據(jù)一致性問題,而同步/復(fù)制數(shù)據(jù)庫則既要和移動(dòng)終端交互,也要和企業(yè)DB進(jìn)行交互。嵌入式移動(dòng)數(shù)據(jù)庫管理系統(tǒng)在移動(dòng)計(jì)算的環(huán)境下應(yīng)用在嵌入式操作系統(tǒng)之上,由于移動(dòng)設(shè)備的資源限制,它一般和應(yīng)用系統(tǒng)集成在一起,作為整個(gè)

13、應(yīng)用系統(tǒng)的前端而存在,而它所管理的數(shù)據(jù)集可能是后端服務(wù)器中數(shù)據(jù)集的子集或子集的副本,所以它有自己的特征以及必須要解決的關(guān)鍵技術(shù):718l         微小內(nèi)核結(jié)構(gòu):考慮到嵌入式設(shè)備的資源有限,EMDBMS應(yīng)采用微型化技術(shù)實(shí)現(xiàn),在滿足應(yīng)用的前提下緊縮其系統(tǒng)結(jié)構(gòu)以滿足嵌入式應(yīng)用的需求。l         事務(wù)處理:EMDBMS應(yīng)具有事務(wù)處理功能,自動(dòng)維護(hù)事務(wù)的完整性、原子性等特性;支持實(shí)體完整性和引用完整性,但事務(wù)處理應(yīng)盡可能地簡(jiǎn)單化,

14、在整個(gè)應(yīng)用系統(tǒng)中可能需要結(jié)合移動(dòng)計(jì)算環(huán)境的特征進(jìn)行事務(wù)處理控制。l         備份恢復(fù):嵌入式數(shù)據(jù)庫的備份和恢復(fù)與大型DBMS管理數(shù)據(jù)庫不同,不能簡(jiǎn)單以獨(dú)立的服務(wù)或類似形式進(jìn)行,而要按照某種簡(jiǎn)化方式完成。EMDBMS應(yīng)具有自動(dòng)恢復(fù)功能,基本無需人工干預(yù)進(jìn)行嵌入式數(shù)據(jù)庫管理并能夠提供數(shù)據(jù)的備份和恢復(fù),保證用戶數(shù)據(jù)的安全可靠。l         完善的數(shù)據(jù)同步機(jī)制:數(shù)據(jù)同步是嵌入式數(shù)據(jù)庫最重要的特點(diǎn)。通過數(shù)據(jù)復(fù)制,可以將嵌入式數(shù)據(jù)庫或

15、主數(shù)據(jù)庫的變化情況應(yīng)用到對(duì)方,保證了數(shù)據(jù)的一致性。移動(dòng)數(shù)據(jù)庫的一個(gè)顯著特點(diǎn)是移動(dòng)終端之間以及與服務(wù)器之間的連接是一種弱連接,即低帶寬、長(zhǎng)延遲、不穩(wěn)定和經(jīng)常性的斷開。為了支持用戶在弱環(huán)境下對(duì)數(shù)據(jù)庫的操作,現(xiàn)在普遍采用樂觀復(fù)制方法(Optimistic replication 或 Lazy replication)允許用戶對(duì)本地緩存上的數(shù)據(jù)副本進(jìn)行操作。待網(wǎng)絡(luò)重新連接后再與數(shù)據(jù)庫服務(wù)器或其他終端交換數(shù)據(jù)修改信息,并通過沖突檢測(cè)和協(xié)調(diào)來恢復(fù)數(shù)據(jù)的一致性。l         支持多種連接協(xié)議:EMDBMS應(yīng)支持多種通信連接

16、協(xié)議??梢酝ㄟ^串行通信、TCP/IP、紅外傳輸、藍(lán)牙等多種連接方式實(shí)現(xiàn)與嵌入式設(shè)備和數(shù)據(jù)庫服務(wù)器的連接。l         支持多種嵌入式操作系統(tǒng):嵌入式移動(dòng)DBMS應(yīng)能支持Windows CE、Palm OS等多種目前流行的嵌入式操作系統(tǒng),這樣才能使嵌入式移動(dòng)數(shù)據(jù)庫管理系統(tǒng)不受移動(dòng)終端的限制。l         安全性:許多應(yīng)用領(lǐng)域的嵌入式設(shè)備是系統(tǒng)中數(shù)據(jù)管理或處理的關(guān)鍵設(shè)備,因此嵌入式設(shè)備上的數(shù)據(jù)庫系統(tǒng)對(duì)存取權(quán)限的控制較嚴(yán)格。同時(shí),

17、許多嵌入式設(shè)備具有較高的移動(dòng)性、便攜性和非固定的工作環(huán)境,也帶來潛在的不安全因素。同時(shí),某些數(shù)據(jù)的個(gè)人隱私性又很高,因此在防止碰撞、磁場(chǎng)干擾、遺失、盜竊等對(duì)個(gè)人數(shù)據(jù)安全的威脅上需要提供充分的安全性保證。保證數(shù)據(jù)安全的主要措施是 :第一,對(duì)移動(dòng)終端進(jìn)行認(rèn)證,防止非法終端的欺騙性接入 ;第二 ,對(duì)無線通信進(jìn)行加密,防止數(shù)據(jù)信息泄漏 ;第三,對(duì)下載的數(shù)據(jù)副本加密存儲(chǔ),以防移動(dòng)終端物理丟失后的數(shù)據(jù)泄密。l         系統(tǒng)快速啟動(dòng):嵌入/移動(dòng)設(shè)備的系統(tǒng)可靠性和可用性相對(duì)于固定主機(jī)而言一般相對(duì)偏低,因此發(fā)生系統(tǒng)故障的概率

18、可能大大提高。因此,在這樣的計(jì)算環(huán)境或計(jì)算平臺(tái)上必須保證系統(tǒng)在發(fā)生不可軟件糾錯(cuò)的情況下能夠通過硬件進(jìn)行系統(tǒng)的快速啟動(dòng)。l         接口簡(jiǎn)明實(shí)用:EMDBMS和應(yīng)用一體,必需提供支持應(yīng)用開發(fā)的接口。l         支持JAVA技術(shù):目前在很多智能手機(jī)上有基于Java的開發(fā)應(yīng)用,應(yīng)該考慮Java或類似支持。l         有效的系統(tǒng)處理優(yōu)化:在硬

19、件存在較強(qiáng)限制的情況下,EDBMS必需實(shí)現(xiàn)某些查詢優(yōu)化技術(shù),如使用簡(jiǎn)單索引等。l         此外,如果系統(tǒng)所嵌入的某種移動(dòng)設(shè)備支持實(shí)時(shí)應(yīng)用,則嵌入式數(shù)據(jù)庫系統(tǒng)還要考慮實(shí)時(shí)處理的要求。這是因?yàn)樵O(shè)備的移動(dòng)性,如果應(yīng)用請(qǐng)求的處理時(shí)間過長(zhǎng),任務(wù)就可能在執(zhí)行完成后得到無效的邏輯結(jié)果,或有效性大大降低。因此,處理的及時(shí)性和正確性同等重要。l         另外,一種理想的狀態(tài)是用戶只用一臺(tái)移動(dòng)終端(如手機(jī))就能對(duì)與他相關(guān)的所有移動(dòng)數(shù)據(jù)庫進(jìn)行

20、數(shù)據(jù)操作和管理,這就要求前端系統(tǒng)具有通用性,而且要求移動(dòng)數(shù)據(jù)庫的接口有統(tǒng)一、規(guī)范的標(biāo)準(zhǔn)。前端管理系統(tǒng)在進(jìn)行數(shù)據(jù)處理時(shí)自動(dòng)生成統(tǒng)一的事務(wù)處理命令,提交當(dāng)前所連接的數(shù)據(jù)服務(wù)器執(zhí)行。這樣就有效的增強(qiáng)了移動(dòng)數(shù)據(jù)庫的通用性,擴(kuò)大了嵌入式移動(dòng)數(shù)據(jù)庫的應(yīng)用前景。3.5      嵌入式移動(dòng)數(shù)據(jù)庫的發(fā)展趨勢(shì)從目前嵌入式應(yīng)用的發(fā)展趨勢(shì)來看,嵌入式移動(dòng)數(shù)據(jù)庫技術(shù)將使得數(shù)據(jù)庫技術(shù)更為客戶化(可定制)和平民化,即:系統(tǒng)選擇的技術(shù)路線要面向具體的行業(yè)應(yīng)用,不能走“大而全”的通用的路線。74.     XML和XML數(shù)據(jù)庫4.1&#

21、160;        XMLXML稱為可擴(kuò)展標(biāo)記語言(eXtensible Markup Language)。它是從標(biāo)準(zhǔn)通用標(biāo)記語言SGML (Standard Generalized Markup Language) 簡(jiǎn)化并改進(jìn)而來的一種新的描述型標(biāo)記語言,由W3C組織發(fā)布的標(biāo)準(zhǔn)。W3C組織制定XML標(biāo)準(zhǔn)的初衷是,定義一種互聯(lián)網(wǎng)上交換數(shù)據(jù)的標(biāo)準(zhǔn)。而由于XML語言自身簡(jiǎn)單、開放、可擴(kuò)展、靈活、自描述等特性,如今XML在數(shù)據(jù)庫的學(xué)術(shù)領(lǐng)域以及在商業(yè)應(yīng)用領(lǐng)域都占據(jù)了及其重要的位置。4.2   

22、60;     XML的幾個(gè)重要特性可擴(kuò)展性。XML是設(shè)計(jì)標(biāo)記語言的元語言,它允許用戶根據(jù)自己的需求,甚至允許各企業(yè)各行業(yè)或者特定的工業(yè)界,根據(jù)自身領(lǐng)域的獨(dú)特需要制定屬于該領(lǐng)域的一套特殊標(biāo)記,以創(chuàng)建在該領(lǐng)域內(nèi)信息共享與交換的基礎(chǔ)。如用于數(shù)學(xué)表達(dá)式描述的MathML,用于生物信息描述的BSML等等。自描述性。XML文檔是自描述的,不僅人能讀懂XML文檔,而且計(jì)算機(jī)也能處理。XML文檔中的數(shù)據(jù)可以被解析程序所提取、分析、處理,并使用所需格式顯示。XML表示數(shù)據(jù)的方式真正做到了獨(dú)立于應(yīng)用系統(tǒng),并且這些數(shù)據(jù)能重用,所以XML適合開放的信息管理。因?yàn)樗淖悦枋鲂裕?/p>

23、文檔里的數(shù)據(jù)可以由XML能使的(XML-aware)應(yīng)用來創(chuàng)建、查詢和更新,跟處理傳統(tǒng)的關(guān)系型數(shù)據(jù)庫、面向?qū)ο髷?shù)據(jù)庫里的數(shù)據(jù)類似。XML甚至還能用來表示那些以前不被看作文檔但是對(duì)傳統(tǒng)的數(shù)據(jù)庫來說又過于復(fù)雜而難以處理的數(shù)據(jù)。所以,XML文檔被看作是文檔的數(shù)據(jù)庫化和數(shù)據(jù)的文檔化。4.3         XML數(shù)據(jù)庫XML 之所以可以被稱為數(shù)據(jù)庫,我們可以從Ronald Bourret那篇著名的XML AND DATABASE一文中得知。XML文檔本身是數(shù)據(jù)的集合,并且在某種程度上,XML和與之相關(guān)的周邊技術(shù)的相結(jié)合可以

24、說是組成了一個(gè)數(shù)據(jù)庫管理系統(tǒng), 它包括四個(gè)方面,一是數(shù)據(jù)存儲(chǔ),XML文檔相當(dāng)于XML 數(shù)據(jù)庫的數(shù)據(jù)區(qū), 一個(gè)XML 文檔就是一個(gè)基本的存儲(chǔ)單元, 相當(dāng)于關(guān)系數(shù)據(jù)庫中的一個(gè)表格;二是模式,DTD或是 XML schema等等是XML 數(shù)據(jù)庫的邏輯模型的描述;三是查詢語言,Xquery、 Xpath、 XQL、 XML-QL、 QUILT等等都可以充當(dāng)XML數(shù)據(jù)庫的查詢語言;最后是編程接口,通過SAX和DOM這兩種編程接口,可以實(shí)現(xiàn)對(duì)XML數(shù)據(jù)庫的諸多管理功能。而今XML 數(shù)據(jù)庫在技術(shù)上已經(jīng)有了長(zhǎng)足的進(jìn)步,已經(jīng)從最初簡(jiǎn)單的查詢引擎,不斷地加入查詢優(yōu)化、事務(wù)處理、觸發(fā)器、并發(fā)控制、代數(shù)系統(tǒng)等傳統(tǒng)的數(shù)

25、據(jù)庫技術(shù),一步步地從性能和功能上完善自己。364. 4        XML 數(shù)據(jù)庫產(chǎn)品的分類對(duì)于XML 數(shù)據(jù)庫產(chǎn)品分類, Ronald Bourret在他的XML Database Products中35,將XML數(shù)據(jù)庫產(chǎn)品分為中間件(Middleware)、支持XML的數(shù)據(jù)庫(XML-Enabled Databases)、原生XML數(shù)據(jù)庫(Native XML Databases)、XML服務(wù)器(XML Servers)、Wrappers、內(nèi)容管理系統(tǒng)(Content Management Systems)六種

26、,在業(yè)界影響很大。但是在XML數(shù)據(jù)庫的研究和開發(fā)人員眼里,大多比較贊同三類分法:原生XML數(shù)據(jù)庫、支持XML 的數(shù)據(jù)庫、混合XML 數(shù)據(jù)庫,或者是兩類:原生XML數(shù)據(jù)庫、支持XML 的數(shù)據(jù)庫。在這里我主要介紹論文中可能會(huì)涉及到的三種數(shù)據(jù)庫產(chǎn)品:原生XML數(shù)據(jù)庫、支持XML的數(shù)據(jù)庫、XML服務(wù)器。什么是原生XML數(shù)據(jù)庫呢?它是專門設(shè)計(jì)用于存儲(chǔ)XML 文檔的數(shù)據(jù)庫, 它以XML 文檔自身的形式來存儲(chǔ)XML 文檔, 支持事務(wù)、安全、多用戶訪問、編程的A P I 和查詢語言等, 其內(nèi)部模型是基于XML 文檔格式的。支持XML數(shù)據(jù)庫是傳統(tǒng)的關(guān)系和面向?qū)ο髷?shù)據(jù)庫的擴(kuò)展, 是在傳統(tǒng)數(shù)據(jù)庫的基礎(chǔ)上, 由數(shù)據(jù)庫

27、廠商或是第三方增加了XML 映射層, 由這個(gè)映射層管理XML 數(shù)據(jù)的存儲(chǔ), 實(shí)現(xiàn)傳統(tǒng)數(shù)據(jù)庫與XML 文檔之間的轉(zhuǎn)換, 特別適合以數(shù)據(jù)為中心的應(yīng)用。至于XML服務(wù)器是什么?我們知道傳統(tǒng)的Web服務(wù)器都是基于HTML文本進(jìn)行信息傳送的,隨著XML技術(shù)的出現(xiàn),對(duì)于基于XML的Web服務(wù)器的需求也就產(chǎn)生了。那么到底什么是XML服務(wù)器呢?準(zhǔn)確定義XML Server這個(gè)概念是困難的,因?yàn)檫@實(shí)在是一個(gè)比較新,而且概念很廣泛的東西,雖然已經(jīng)有許多的產(chǎn)品稱自己為XML Server,比如DataChannel公司的DataChannel Server 4.1;Software AG公司的Tamino;Exce

28、lon公司的excelon,但在應(yīng)用的范圍上以及功能上,每種產(chǎn)品都各不相同,因此這里也就不為XML Server進(jìn)行定義,而是歸納這幾種產(chǎn)品的共同擁有的一些特點(diǎn),以說明的方式來向大家解釋XML Server這個(gè)概念。 簡(jiǎn)單地講,XML Server是一個(gè)提供數(shù)據(jù)的平臺(tái),它能夠以XML文檔的形式與分布式的應(yīng)用進(jìn)行數(shù)據(jù)交互。比如電子商務(wù)這一類的應(yīng)用。這聽上去和傳統(tǒng)的數(shù)據(jù)庫非常的相似,它和數(shù)據(jù)庫一樣提供數(shù)據(jù)的存貯與提取功能,但數(shù)據(jù)的格式的是基于XML的,因此在數(shù)據(jù)的處理方面,所用的是和傳統(tǒng)數(shù)據(jù)庫完全不同的技術(shù)了,XML服務(wù)器通常包括了一個(gè)完整的應(yīng)用開發(fā)環(huán)境,并通過各種數(shù)據(jù)存儲(chǔ)方式來使應(yīng)用程序可以方便

29、的獲取和使用這些數(shù)據(jù)。存儲(chǔ)的數(shù)據(jù)包括傳統(tǒng)的數(shù)據(jù)庫數(shù)據(jù)、電子郵件信息和文件系統(tǒng)等等。5.     與XML相關(guān)的技術(shù)問題5.1         文檔類型我們認(rèn)為存在兩種類型的XML文檔,以數(shù)據(jù)為中心的文檔(data-centric documents)和以文檔為中心的文檔(document-centric documents),區(qū)分它們的目的在于它們各自不同的特性將影響到我們?nèi)绾芜x擇XML在數(shù)據(jù)庫中的存儲(chǔ)方式。以數(shù)據(jù)為中心的文檔:數(shù)據(jù)為中心的文檔有非常規(guī)則的結(jié)果,比如關(guān)于銷售訂

30、單或者是飯店菜單的XML文檔。以數(shù)據(jù)為中心的文檔通常是為機(jī)器設(shè)計(jì)的,也就是說主要是方便機(jī)器進(jìn)行處理。通常,任何Web站點(diǎn)可以動(dòng)態(tài)的構(gòu)建HTML文檔,其步驟如下,根據(jù)用戶的查詢請(qǐng)求找到相關(guān)的面向數(shù)據(jù)的XML文檔,然后通過XSL對(duì)XML文檔進(jìn)行轉(zhuǎn)化,讓基于HTML的瀏覽器能夠方便的瀏覽結(jié)果。以文檔為中心的文檔:以文檔為中心的文檔具有不規(guī)則的結(jié)構(gòu),而且數(shù)據(jù)的粒度也比較大。具體的例子如書本、電子郵件、廣告等等。以文檔為中心的文檔主要是用人類而設(shè)計(jì)的。在現(xiàn)實(shí)當(dāng)中,以數(shù)據(jù)為中心和以文檔為中心的文檔之間的差別不一定很明顯。例如,另一種以數(shù)據(jù)為中心的文檔比如發(fā)票,可能含有大粒度的、結(jié)構(gòu)不規(guī)則的數(shù)據(jù)比如零件說明

31、;另一種以文檔文中心的文件如用戶手冊(cè),可能包含細(xì)粒度的結(jié)構(gòu)規(guī)則的數(shù)據(jù)(通常為元數(shù)據(jù))比如作者和修訂日期。其它例子包括法律和醫(yī)學(xué)文書,雖然以松散的形式寫成但是卻包含離散的數(shù)據(jù)塊例如日期、名稱和操作程序,出于法規(guī)的原因通常要以完整的文件形式存儲(chǔ)。5.2         文檔的存儲(chǔ)數(shù)據(jù)采用XML格式的優(yōu)勢(shì)便在于能夠很好地表達(dá)數(shù)據(jù)的結(jié)構(gòu)和內(nèi)容,不管XML文檔是以數(shù)據(jù)為中心,還是以文檔為中心,也不論以數(shù)據(jù)為中心的是結(jié)構(gòu)化數(shù)據(jù)還是半結(jié)構(gòu)化數(shù)據(jù),最終我們都需要考慮的問題是如何將XML表達(dá)的數(shù)據(jù)很好地保存下來,當(dāng)然這就涉及到文檔存

32、儲(chǔ)的問題了。專家們?cè)谶@個(gè)方面提出一些建議,可以描述如下:以數(shù)據(jù)為中心的我們通常將數(shù)據(jù)存儲(chǔ)于傳統(tǒng)的數(shù)據(jù)庫,例如關(guān)系型,面向?qū)ο笮突驅(qū)哟涡蛿?shù)據(jù)庫。這可由第三方的中間件完成數(shù)據(jù)轉(zhuǎn)換或由數(shù)據(jù)庫本身提供內(nèi)在支持(即支持XML數(shù)據(jù)庫)來實(shí)現(xiàn)數(shù)據(jù)格式的轉(zhuǎn)換和存儲(chǔ)。但對(duì)于半結(jié)構(gòu)化數(shù)據(jù),如果將其映射到關(guān)系數(shù)據(jù)庫,結(jié)果是要么出現(xiàn)大量空值(null)的字段,要么表格的數(shù)量過多,浪費(fèi)空間或效率低下。雖然半結(jié)構(gòu)化的數(shù)據(jù)可存儲(chǔ)到面向?qū)ο蟮幕驅(qū)哟涡蛿?shù)據(jù)庫中,或是存入關(guān)系數(shù)據(jù)庫的BLOB中,不過也可以選擇將它以XML文件的形式存儲(chǔ)于原生XML數(shù)據(jù)庫。以文檔為中心的,可被存儲(chǔ)在原生XML數(shù)據(jù)庫(專為存儲(chǔ)XML而設(shè)計(jì)的數(shù)據(jù)庫)或

33、內(nèi)容管理系統(tǒng)(建在原生XML數(shù)據(jù)庫之上專門用來管理文檔的程序)。不過也可以存儲(chǔ)到支持XML的數(shù)據(jù)庫中,這時(shí)通常不需要映射,而是以BLOB的形式將XML文檔寫入關(guān)系數(shù)據(jù)庫的表中。5.3         文檔和數(shù)據(jù)庫之間的轉(zhuǎn)換在我們上述提到的將XML文檔存儲(chǔ)到傳統(tǒng)數(shù)據(jù)庫中,或是從數(shù)據(jù)庫中取出數(shù)據(jù),結(jié)果文件要被轉(zhuǎn)換成應(yīng)用程序所需的XML文檔,另外利用XML文檔做為數(shù)據(jù)庫之間的數(shù)據(jù)中介,這些時(shí)候完成XML文檔和數(shù)據(jù)庫之間的轉(zhuǎn)換軟件是通過XML文檔和數(shù)據(jù)庫之間的映射來完成的。這種映射分成兩種:模板驅(qū)動(dòng)和模型驅(qū)動(dòng)。模板驅(qū)動(dòng)的映

34、射:事先文檔和數(shù)據(jù)庫之間沒有預(yù)先的映射,而是在數(shù)據(jù)轉(zhuǎn)換軟件處理的模板中嵌入命令,通用數(shù)據(jù)傳輸中間件進(jìn)行處理。比如,考慮下面的模板:<?xml version="1.0"?> <FlightInfo> <Introduction>The following flights have available seats:</Introduction> <SelectStmt>SELECT Airline, FltNumber, Depart, Arrive FROM Flights</SelectStmt> &

35、lt;Conclusion>We hope one of these meets your needs</Conclusion> </FlightInfo>注意其中嵌入了一個(gè)SELECT語句。當(dāng)用數(shù)據(jù)傳輸中間件進(jìn)行處理的時(shí)候,每一個(gè)SELECT語句都會(huì)被它的結(jié)果所代替,用XML格式化形式表現(xiàn)為:<?xml version="1.0"?> <FlightInfo> <Introduction>The following flights have available seats:</Introduction

36、> <Flights> <Row> <Airline>ACME</Airline> <FltNumber>123</FltNumber> <Depart>Dec 12, 1998 13:43</Depart> <Arrive>Dec 13, 1998 01:21</Arrive> </Row> . </Flights> <Conclusion>We hope one of these meets your needs.</Con

37、clusion> </FlightInfo>基于模板驅(qū)動(dòng)的映射可以是相當(dāng)靈活的,比如,一些產(chǎn)品允許你把結(jié)果集放到XML文檔的任何位置,同時(shí)可以對(duì)SELECT語句設(shè)置參數(shù),并且可以使用for循環(huán)語句和if條件語句等。值得注意的是,當(dāng)前基于模板驅(qū)動(dòng)的映射只能應(yīng)用于在關(guān)系數(shù)據(jù)庫和XML文檔之間傳遞數(shù)據(jù)。模型驅(qū)動(dòng)的映射:是指XML文檔中的數(shù)據(jù)根據(jù)預(yù)先定義的模型,明確或者隱含地把數(shù)據(jù)映射到數(shù)據(jù)庫中。在XML文檔中,這兩種模型是很常見的:表格模型(table model)和專用數(shù)據(jù)對(duì)象模型(data-specific object model)。表格模型是基于表格的映射,許多中間件軟件包

38、用表格模型在XML文檔和關(guān)系數(shù)據(jù)庫之間傳遞數(shù)據(jù)。它把XML文檔表示為一個(gè)單一的表格或者是表格的集合。這樣,一個(gè)XML文檔的結(jié)構(gòu)可以用如下的形式表示:database table row column1./column1 column2./column2 . /row . /table ./database這里關(guān)鍵字"talbe"在把數(shù)據(jù)從數(shù)據(jù)庫傳遞到XML文檔的時(shí)候,表示一個(gè)單一的結(jié)果集,把數(shù)據(jù)從XML文檔傳遞到數(shù)據(jù)庫的時(shí)候,表示表示一個(gè)單一的表格或者視圖。但是,當(dāng)結(jié)果集合不只一個(gè)的時(shí)候,或者當(dāng)XML文檔包括多個(gè)復(fù)雜嵌套的時(shí)候,這種傳遞方式就不能適應(yīng)了,并且這種轉(zhuǎn)換不能保留

39、文檔的物理結(jié)構(gòu)(如字符和實(shí)體引用、CDATA部分或字符編碼)、文檔信息(如文檔類型或DTD)、注釋信息和處理指令等。專用數(shù)據(jù)對(duì)象模型也就是基于對(duì)象-關(guān)系的映射,它用于支持XML的關(guān)系數(shù)據(jù)庫和一些在XML文檔和關(guān)系數(shù)據(jù)庫之間轉(zhuǎn)換數(shù)據(jù)的中間件產(chǎn)品中。在這個(gè)模型中,將XML 文檔中的數(shù)據(jù)作為一個(gè)對(duì)象樹,把具有屬性的元素類型、元素內(nèi)容或混合內(nèi)容(復(fù)雜數(shù)據(jù)類型)作為類進(jìn)行建模,把僅具有PCDATA內(nèi)容的元素類型(簡(jiǎn)單數(shù)據(jù)類型)、屬性和PCDATA 作為分級(jí)屬性進(jìn)行建模, 然后使用傳統(tǒng)的對(duì)象-關(guān)系映射技術(shù)或SQL3 視圖將這個(gè)模型映射到關(guān)系數(shù)據(jù)庫,其中類被映射成一個(gè)表,分級(jí)屬性映射成表中的字段列, 對(duì)象值

40、的屬性被映射成主鍵/外鍵對(duì)。在XML 文檔、對(duì)象和數(shù)據(jù)庫表之間有著明顯的對(duì)應(yīng)關(guān)系,如下所示:XML文檔元素A 對(duì)象 A <A> OBJECT A<B>DATAB</B> B=”DATAB” <C>DATAC</C> C=”DATAC” <D>DATAD</D> D=”DATAD”</A> 實(shí)際上在XML和數(shù)據(jù)庫之間進(jìn)行數(shù)據(jù)轉(zhuǎn)化的時(shí)候,需要考慮兩個(gè)過程:一個(gè)是從數(shù)據(jù)庫模式中產(chǎn)生DTD,另外一個(gè)是根據(jù)DTD生成數(shù)據(jù)庫模式.從一個(gè)DTD中生成一個(gè)關(guān)系模式的步驟如下:l   &

41、#160;     對(duì)每一個(gè)元素,產(chǎn)生一個(gè)表和一個(gè)主鍵列。l         對(duì)每一個(gè)有混合內(nèi)容的元素,產(chǎn)生一個(gè)獨(dú)立的表格,用來存儲(chǔ)PCDATA,并通過父表的主鍵和父表相聯(lián)。l         對(duì)元素類型中的每一個(gè)單一值的屬性,對(duì)具有只有PCDATA內(nèi)容的子元素(該子元素按順序出現(xiàn)),產(chǎn)生一個(gè)單獨(dú)的列,如果子元素類型或者值是可以選擇的話,該列就應(yīng)該可以允許為NULL類型。l  

42、       對(duì)有多個(gè)值的屬性和可以出現(xiàn)多次的子元素(該子元素PCDATA)的話,需要?jiǎng)?chuàng)建一個(gè)單獨(dú)的表來存儲(chǔ)這些值,并通過父表的主鍵和父表相聯(lián)。l         對(duì)每一個(gè)包含元素或者混合內(nèi)容的子元素來說,通過父表的主鍵把父元素和子元素聯(lián)接起來。從一個(gè)關(guān)系數(shù)據(jù)庫模式構(gòu)建DTD步驟如下:l         對(duì)每一個(gè)表,創(chuàng)建一個(gè)元素。l    

43、;     對(duì)表中的每一列,創(chuàng)建一個(gè)屬性或者是一個(gè)只有PCDATA 內(nèi)容的子元素。l         根據(jù)表中的每一主鍵外鍵關(guān)系,創(chuàng)建該表元素的子元素。5.4 查詢語言自從1995年XML技術(shù)的研究和開發(fā)逐漸升溫以來,形形色色的XML查詢語言不斷問世。比較有代表性的如早期的XML-QL、XQL、UnQL,后來的Quilt、Xpath,以及由Quilt發(fā)展而來的XQuery。在W3C的極力推動(dòng)和學(xué)術(shù)界、工業(yè)界的大力支持下,XQuery逐漸在這些查詢語言中脫穎而出,成為事實(shí)上的工

44、業(yè)標(biāo)準(zhǔn)。 XQuery的FLWR語句規(guī)范,有著與關(guān)系數(shù)據(jù)庫的SQL完全類似的表達(dá)方式,使得它在一般用戶眼里,也變得友好起來。而Xpath可以理解為是XQuery的一個(gè)子集。Xpath表達(dá)式在相關(guān)文獻(xiàn)中被證明與查詢模式樹是等價(jià)的,這也與學(xué)術(shù)界推崇的模式樹查詢方式一致,使得實(shí)驗(yàn)室系統(tǒng)可以毫不困難地處理Xpath查詢表達(dá)式,并能進(jìn)行查詢優(yōu)化,這一點(diǎn)在XML數(shù)據(jù)庫研究中顯得頗有價(jià)值。5.5 文檔解析對(duì)于XML文檔之上的任何處理,比如轉(zhuǎn)換后裝入數(shù)據(jù)庫,或是查詢,都會(huì)經(jīng)過一個(gè)XML數(shù)據(jù)解析器。數(shù)據(jù)解析器會(huì)依據(jù)一定的規(guī)則對(duì)XML數(shù)據(jù)進(jìn)行解析后完成相應(yīng)的應(yīng)用。目前的數(shù)據(jù)解析器一般提供SAX(simple AP

45、I for XML)和DOM(document object model)兩種方式。SAX和DOM是針對(duì)XML文檔的兩種不同的應(yīng)用程序編程接口API。目前的XML數(shù)據(jù)庫產(chǎn)品均支持這兩種解析方式。DOM解析器由W3C制定的標(biāo)準(zhǔn)。它的解析過程是將整個(gè)XML文檔讀入,然后構(gòu)建一個(gè)駐留內(nèi)存具有層次的樹結(jié)構(gòu),應(yīng)用程序則可用DOM提供的一組接口來操作這個(gè)樹結(jié)構(gòu),因而DOM被認(rèn)為是基于樹或基于對(duì)象的解析。DOM最大的問題是解析后得到的DOM文檔非常大,DOM文檔與XML文檔長(zhǎng)度之比很容易超過10(實(shí)際的系數(shù)取決于文件中文本的平均長(zhǎng)度,文本的平均長(zhǎng)度較小的文件其系數(shù)較高),顯然這對(duì)于大型的XML文檔來講,采用

46、DOM解析會(huì)要求有極大的內(nèi)存,因而一定程度上受內(nèi)存容量的限制,此外DOM解析器必須在代碼運(yùn)行前讀取整個(gè)文檔,對(duì)于非常大的文檔,若用戶只關(guān)注文檔的小部分內(nèi)容,那么創(chuàng)建那些永遠(yuǎn)不被使用的對(duì)象是極其浪費(fèi)的,而且大文檔還會(huì)引起顯著延遲。為了解決DOM問題,XML-DEV郵件列表成員創(chuàng)建了SAX接口。SAX是基于事件的解析,SAX采用一種順序訪問快速讀寫XML數(shù)據(jù)的方式,解析文檔時(shí),會(huì)針對(duì)不同對(duì)象觸發(fā)一系列事件,并激活相應(yīng)的事件處理函數(shù)(程序員編寫),從而完成對(duì)XML文檔的訪問。由此可見,SAX的解析器不創(chuàng)建任何對(duì)象,而是讓你自己決定采用什么類型的數(shù)據(jù)結(jié)構(gòu)來保存來自這些事件的數(shù)據(jù),不需要的就丟棄,另外當(dāng)

47、你找到自己需要的數(shù)據(jù)后,可以拋出一個(gè)異常,停止SAX解析器,因而不需要訪問完整個(gè)文檔,SAX解析器是邊讀入邊解析,帶有一定的實(shí)時(shí)性,特別適合于XML流數(shù)據(jù)的處理。當(dāng)然我們同樣也看到SAX的不足,SAX事件是無狀態(tài)的,事件僅僅給你發(fā)現(xiàn)的文本,但它不會(huì)告訴你什么元素包含這文本,你必須自己編寫狀態(tài)管理代碼;另外SAX事件不是持久的,這點(diǎn)不同于DOM,DOM解析一次,所有的數(shù)據(jù)可以持久的保存下來,SAX解析XML文檔是順序進(jìn)行的,解析過程中事件不斷發(fā)生,用戶需要自己編寫代碼把事件傳遞過來的數(shù)據(jù)保存下來,如果沒有把數(shù)據(jù)存下來,那么對(duì)于分析過的數(shù)據(jù)就沒法再去處理,只能重新進(jìn)行一次解析。針對(duì)DOM和SAX的

48、各自優(yōu)缺點(diǎn),對(duì)于大型的XML文檔,我們往往采用先使用SAX解析,獲取所需的部分?jǐn)?shù)據(jù),而后對(duì)結(jié)果數(shù)據(jù)(XML文檔)采用DOM解析。6.     有關(guān)原生 XML 數(shù)據(jù)庫人們已經(jīng)越來越傾向于認(rèn)為XML數(shù)據(jù)庫就是原生XML數(shù)據(jù)庫。6.1         什么是原生 XML數(shù)據(jù)庫?出自XML:DB mailing list的一個(gè)成員這樣定義原生XML數(shù)據(jù)庫:它為 XML 文檔(而不是文檔中的數(shù)據(jù))定義了一個(gè)(邏輯)模型,并根據(jù)該模型存取文件。這個(gè)模型至少應(yīng)包括元素、屬性、PCDATA

49、 和文件順序。這種模型的例子有XPath數(shù)據(jù)模型、XML Infoset 以及 DOM 所用的模型和SAX 1.0的事件。它以 XML 文件作為其基本(邏輯)存儲(chǔ)單位,正如關(guān)系數(shù)據(jù)庫以表中的行作為基本(邏輯)存儲(chǔ)單位。它對(duì)底層的物理存儲(chǔ)模型模型沒有特殊要求。例如,它可以建在關(guān)系型、層次型或面向?qū)ο蟮臄?shù)據(jù)庫之上,或者使用專用的存儲(chǔ)格式,比如索引或壓縮文件。6.2         原生XML數(shù)據(jù)庫的結(jié)構(gòu)原生XML數(shù)據(jù)庫的結(jié)構(gòu)可分為兩大類:基于文本的和基于模型的。基于文本的原生XML數(shù)據(jù)庫將XML作為文本存儲(chǔ)。它可以是文

50、件系統(tǒng)中的文件、關(guān)系數(shù)據(jù)庫中的BLOB或特定的文件格式。(事實(shí)上,就其能力來說,一個(gè)增加了支持CLOB(Character Large Object)字段的XML處理功能的關(guān)系數(shù)據(jù)庫也可以是原生XML數(shù)據(jù)庫了。)基于模型的原生XML數(shù)據(jù)庫。它們不是用純文本存儲(chǔ)文件,而是根據(jù)文件構(gòu)造一個(gè)內(nèi)部模型并將這個(gè)模型存儲(chǔ)于數(shù)據(jù)庫。這類原生XML數(shù)據(jù)庫的文件存取性能與這些數(shù)據(jù)庫相似,原因顯而易見,其存取要依賴這些數(shù)據(jù)庫。但是這個(gè)數(shù)據(jù)庫,特別是建立在其他數(shù)據(jù)庫之上的原生XML數(shù)據(jù)庫的設(shè)計(jì)有很大的變化余地。6.3         選

51、擇使用原生XML數(shù)據(jù)庫的幾個(gè)理由 25 4849l         XML是元語言。XML 能定義并且描述任何種類的信息。l         XML支持多種語言。XML是基于UNICODE的。l         實(shí)現(xiàn)數(shù)據(jù)的多樣性顯示。用戶獲得一份XML數(shù)據(jù),可以根據(jù)不同需要進(jìn)行多樣化的呈現(xiàn)。比如,對(duì)一段數(shù)據(jù),可以顯示成文本,也可以用表格顯示,甚至用語音讀出。

52、l         對(duì)數(shù)據(jù)尤其是半結(jié)構(gòu)化數(shù)據(jù)(如網(wǎng)頁、書信等)具有有力描述和搜索能力。XML允許嵌套定義,可以描述復(fù)雜結(jié)構(gòu)的數(shù)據(jù)。l         XML是基于文本的,容易讀出。根據(jù)XML數(shù)據(jù)庫存儲(chǔ)數(shù)據(jù)的物理方式的不同,數(shù)據(jù)的讀出速度可以做到比關(guān)系型數(shù)據(jù)庫的讀取速度快得多。l         XML是開放的,獲得幾乎所有主流數(shù)據(jù)庫的支持,容易實(shí)現(xiàn)不同數(shù)據(jù)源

53、的數(shù)據(jù)交換和集成。l         XML有助于電子商務(wù)的發(fā)展。以往電子商務(wù)采用的數(shù)據(jù)交換技術(shù)是EDI,這是一項(xiàng)成本昂貴的技術(shù),對(duì)多數(shù)企業(yè)來說采用EDI是困難的,XML的到來顯然降低這種難度。我國已投入去制訂基于XML的電子商務(wù)標(biāo)準(zhǔn)。6.4         原生XML數(shù)據(jù)庫核心技術(shù)的發(fā)展 36l         數(shù)據(jù)存儲(chǔ)在XML數(shù)據(jù)庫研究的早期,業(yè)界曾存在

54、一個(gè)爭(zhēng)論,到底將XML數(shù)據(jù)存儲(chǔ)在關(guān)系庫中,還是另外開發(fā)存儲(chǔ)XML的物理數(shù)據(jù)庫。這在一定程度上影響著XML的研究者,在設(shè)計(jì)索引結(jié)構(gòu)時(shí)必須考慮使索引過的XML數(shù)據(jù)可以存儲(chǔ)在多種數(shù)據(jù)庫結(jié)構(gòu)中。現(xiàn)有的主流XML數(shù)據(jù)庫產(chǎn)品都在底層提供collection數(shù)據(jù)結(jié)構(gòu),以存儲(chǔ)XML元素節(jié)點(diǎn),通過B+樹結(jié)構(gòu)來索引這些元素節(jié)點(diǎn)。這一點(diǎn)與關(guān)系庫系統(tǒng)的底層處理如出一轍。在collection之上一般還會(huì)有一級(jí)或兩級(jí)索引,以加快查詢處理速度,比較高效實(shí)用。l         查詢處理查詢處理的方式和效率,一直是XML數(shù)據(jù)庫研究和開發(fā)者關(guān)注的

55、首要問題。XML數(shù)據(jù)庫的查詢處理一般是從解析查詢語言(如XQuery)的查詢語句表達(dá)式開始的。XML數(shù)據(jù)庫的查詢解析器將表達(dá)式解析為一棵查詢模式樹(有的系統(tǒng)叫做語法樹)。在如何匹配模式樹的技術(shù)上,出現(xiàn)了幾種新的技術(shù)。比如,在Timber中,提出了一種叫做“結(jié)構(gòu)化聯(lián)接”的技術(shù),在學(xué)術(shù)界引起過較大的反響。自2002年以來不斷有技術(shù)上的改進(jìn)文章出現(xiàn)在數(shù)據(jù)庫的三大國際會(huì)議(VLDB、SIGMOD/PODS、ICDE)上,其中較有影響的成果是隱檢整枝聯(lián)接(holistic twig join)技術(shù),可以用相互連接的多棧結(jié)構(gòu)一次性生成查詢結(jié)果文檔。在查詢處理階段,研究模式樹的最小化。它的主要思想就是,模式

56、樹的匹配效率依賴于模式樹的規(guī)模(元素節(jié)點(diǎn)的多少)。而一般的模式樹均存在一定量的冗余節(jié)點(diǎn),可以通過最小化算法予以去除。根據(jù)復(fù)旦大學(xué)數(shù)據(jù)庫研究中心XML小組的實(shí)驗(yàn)結(jié)果表明,在隨機(jī)建立的XML查詢模式樹集合中,最小化算法平均可以消除30%的冗余節(jié)點(diǎn)。 當(dāng)然,模式樹最小化算法的時(shí)間復(fù)雜度比較高,目前的關(guān)注點(diǎn)主要在于時(shí)間復(fù)雜度的降低上。最新算法的時(shí)間復(fù)雜度已經(jīng)降低到低階的多項(xiàng)式時(shí)間了。這項(xiàng)技術(shù)的實(shí)用化是值得期待的。l         .事務(wù)處理和版本控制事務(wù)處理應(yīng)該遵循ACID性質(zhì) (原子性、一致性、獨(dú)立性和持久性) 以保證

57、大部分事務(wù)處理穩(wěn)定地運(yùn)行。目前的XML數(shù)據(jù)庫一般提供事務(wù)處理功能,包括提交、撤回和日志文件。XML數(shù)據(jù)庫通過提供事務(wù)日志機(jī)制,紀(jì)錄系統(tǒng)執(zhí)行的每個(gè)事務(wù)的詳細(xì)情況,保證在系統(tǒng)出現(xiàn)問題后可以完全恢復(fù)。XML數(shù)據(jù)庫還包含對(duì)XML文檔的版本控制功能。使用版本控制,用戶或應(yīng)用程序可以檢入(check in)或檢出(check out)XML文檔,利用版本號(hào)、日期或者標(biāo)簽獲得以前版本的文檔,以及顯示XML文檔的版本歷史信息。每一個(gè)處于版本控制之下的文檔都有自己的歷史信息,紀(jì)錄了修改文檔的作者以及時(shí)間等。使用者可以根據(jù)文檔或用戶或日期來查看整個(gè)的版本歷史信息。版本控制允許用戶通過查詢更新原信息。通過更新引擎可

58、以注釋、修改和精煉信息。內(nèi)置的版本系統(tǒng)跟蹤信息的變化,提供這些變化的歷史信息。有一個(gè)需要說明的是多事務(wù)并發(fā)控制機(jī)制和加鎖協(xié)議。這項(xiàng)技術(shù)的研發(fā)目前剛剛起步?,F(xiàn)今的商用XML數(shù)據(jù)庫只在邏輯層面提供并發(fā)加鎖協(xié)議,但粒度為整個(gè)文檔。隨著單個(gè)XML文檔的增大,這個(gè)粒度顯然太粗。這一點(diǎn)可能要等待研究界開發(fā)出粒度為文檔元素節(jié)點(diǎn)的并發(fā)協(xié)議了。l         .代數(shù)系統(tǒng)和模式規(guī)范化代數(shù)表達(dá)式和數(shù)據(jù)庫模式設(shè)計(jì)理論曾經(jīng)是關(guān)系數(shù)據(jù)庫理論的精髓。代數(shù)系統(tǒng)成為關(guān)系庫查詢優(yōu)化的重要工具,而范式理論的提出也曾為RDBMS設(shè)計(jì)優(yōu)化的庫結(jié)構(gòu)提供了

59、依據(jù)。那么,人們不禁要問,在XML數(shù)據(jù)庫中是否存在相類似的理論和方法?學(xué)術(shù)界公認(rèn)的三大實(shí)驗(yàn)系統(tǒng)(密歇根大學(xué)安阿伯分校的Timber、西雅圖華盛頓大學(xué)的Tukwila和威斯康星大學(xué)麥迪遜分校的Niagara)都設(shè)計(jì)了相應(yīng)的代數(shù)系統(tǒng),其中影響最為廣泛的是Timber中實(shí)現(xiàn)的TAX(Tree Algebra for XML)。TAX以整個(gè)文檔樹作為操作的基本單位,在邏輯層提供選擇、投影、聯(lián)接等類似關(guān)系庫的9種基本操作和5種附加操作,以匹配模式樹得到實(shí)例樹(witness tree)為基本操作方法。在物理層提出7種基本操作實(shí)現(xiàn)上述邏輯運(yùn)算。Timber依據(jù)TAX對(duì)XML查詢語句進(jìn)行改寫和優(yōu)化,但是效果

60、并不理想。業(yè)界對(duì)TAX存在問題的看法是,過分地模仿了關(guān)系庫的代數(shù)系統(tǒng)而忽略了對(duì)XML文檔本身特點(diǎn)的考慮。XML模式規(guī)范化理論的早期開拓者是賓夕法尼亞大學(xué)的樊文飛等人。從定義XML的鍵(key)和函數(shù)依賴,到XML和DTD范式,再到基于約束的XML數(shù)據(jù)庫的模式規(guī)范化,XML數(shù)據(jù)庫的模式規(guī)范化理論在穩(wěn)步地推動(dòng)著。國內(nèi)的復(fù)旦大學(xué)數(shù)據(jù)庫研究中心等單位也有著不錯(cuò)的研究進(jìn)展。在未來兩年內(nèi),估計(jì)會(huì)有較成熟的XML數(shù)據(jù)庫模式設(shè)計(jì)理論投入到實(shí)驗(yàn)室產(chǎn)品和商用系統(tǒng)中。l         多數(shù)據(jù)源的集成多數(shù)據(jù)源的集成是數(shù)據(jù)庫市場(chǎng)對(duì)XML數(shù)

61、據(jù)庫系統(tǒng)提出的要求。而進(jìn)行多數(shù)據(jù)源的集成恰恰是XML數(shù)據(jù)庫的優(yōu)勢(shì)之一。 從2001年以后,面對(duì)多數(shù)據(jù)源的集成這個(gè)傳統(tǒng)關(guān)系型數(shù)據(jù)庫系統(tǒng)做不了的事情,Ipedo等商用數(shù)據(jù)庫系統(tǒng)將自己的數(shù)據(jù)庫系統(tǒng)擴(kuò)展為一個(gè)集成平臺(tái),它可以將關(guān)系數(shù)據(jù)庫系統(tǒng)、MIS系統(tǒng)、OA系統(tǒng)、文件系統(tǒng)等集成在同一個(gè)平臺(tái)上,給用戶提供統(tǒng)一的界面。如Ipedo公司的Ipedo XML智能平臺(tái),為用戶提供XML View來統(tǒng)一訪問底層的異構(gòu)數(shù)據(jù)。人們也從這一點(diǎn)上進(jìn)一步看到了XML技術(shù)的力量。6.5         未來的技術(shù)發(fā)展方向經(jīng)過近5年業(yè)界同仁的共同努

62、力,XML數(shù)據(jù)庫技術(shù)取得了很大的進(jìn)展,已經(jīng)有若干種XML數(shù)據(jù)庫產(chǎn)品問世并服務(wù)于社會(huì)生活的各個(gè)方面。但是,XML數(shù)據(jù)庫的事業(yè)才剛剛開始,還有很多問題等待著我們?nèi)ソ鉀Q。 未來幾年,XML數(shù)據(jù)庫技術(shù)有可能在下述方面取得進(jìn)展: 異構(gòu)數(shù)據(jù)源的集成。XML數(shù)據(jù)庫對(duì)多數(shù)據(jù)源的集成,是對(duì)XML技術(shù)可擴(kuò)展性這一長(zhǎng)處的極好發(fā)揮。但是,就目前的集成程度和在應(yīng)用層上所提供的功能來看還是遠(yuǎn)遠(yuǎn)不夠的。如何從對(duì)數(shù)據(jù)的集成過渡到對(duì)系統(tǒng)的集成,從而在遠(yuǎn)景目標(biāo)上實(shí)現(xiàn)類似于網(wǎng)格計(jì)算(grid computing)概念的系統(tǒng),恐怕是XML數(shù)據(jù)庫工作者的核心任務(wù)之一。 底層索引結(jié)構(gòu)。目前的商用XML數(shù)據(jù)庫系統(tǒng)優(yōu)于實(shí)驗(yàn)室原型系統(tǒng)的特點(diǎn)之一就是其底層的索引結(jié)構(gòu)。但是,現(xiàn)有的商用XML數(shù)據(jù)庫的底層索引結(jié)構(gòu)一般都是B+樹。雖然B+樹索引是一種成熟的索引結(jié)構(gòu),但是,研究結(jié)果顯示,在XML數(shù)據(jù)庫中,它的性能表現(xiàn)并不是最好的。學(xué)術(shù)界已經(jīng)開發(fā)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論