999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于平面文件的NativeXML數據庫存儲策略研究

2008-12-31 00:00:00
計算機應用研究 2008年12期

(1.西南交通大學 a.信息科學與技術學院; b.軟件學院, 成都 610031; 2.四川省計算機研究院, 成都 610041)

摘 要:

NativeXML數據庫是一種專門設計用于存儲和管理XML數據的新型數據庫技術。首先簡要介紹了NativeXML數據庫的定義和特點,然后著重討論了采用平面文件作為基本存儲結構的NativeXML數據庫在存儲模型、存儲粒度等方面的策略選擇,最后結合實際項目分析了基于平面文件的NativeXML數據庫在Web開發方面的可行性及其應用前景。

 關鍵詞:NativeXML; 數據庫; 平面文件; 存儲策略; 存儲模型; 存儲粒度

 中圖分類號:TP311.13 文獻標志碼: A

文章編號:10013695(2008)12363903

Research of storage strategies for NativeXML database based on flat files

HU Zheng1a,2, SU Bin1b, LIU Ying2

(1a.School of Information Science Technology,

b.School of Software, Southwest Jiaotong University, Chengdu 610031, China;

2. Sichuan Academy of Computers Science, Chengdu 610041, China)

Abstract:

NativeXML database is a new database technology which is specifically devised for storing and managing XML data. First, this paper simply introduced the definition of a NativeXML database and its characteristics, then put forward the NativeXML database using flat files as its storage structure. After that, discussed the choices of strategies on storage models and granularitis in detail. At last, the paper gave a practical application to analyze the feasibility and the prospect of using NativeXML database based on flat files to develop Web applications.

 Key words:NativeXML; database; flat file; storage strategy; storage model; storage granularity



0 引言

XML(extensible markup language,可擴展標記語言)是W3C組織根據SGML(standard generalized markup language,標準通用標記語言)設計的一個優化子集,以開放的、自描述的方式定義了數據結構,略去了SGML中繁雜和不常用的內容,在描述數據內容的同時突出了對結構的描述,從而使得編程簡化、易理解、易于在 Web上的傳輸和交互以及數據信息的采集和提取。

XML基于純文本的結構具有天然的跨平臺、跨語言特性,因此非常適于Web上的異種數據交換,以XML為基礎的Web應用正在成為主流。同時,由于XML文檔具有多層次嵌套的結構特點,能便捷地構建多維數據模型,比傳統的關系型數據庫更有彈性,更容易體現現實世界中的多維、多層次結構,將XML技術從Web數據交換領域擴展到數據存儲領域,直接采用XML文檔作為存儲方案的NativeXML database(即原生XML數據庫)研究也正在興起。

1 NativeXML數據庫

XML數據庫是多個XML文檔及其部件的集合,是利用一個管理系統實現對XML文檔進行存取管理和查詢的數據庫。XML數據庫目前主要有兩大類,即XML使能數據庫(XMLenabled database,XED)和原生XML數據庫(NativeXML database,NXD)。XED是在傳統數據庫的基礎上增加對XML的支持以便操作XML數據;NXD則是專門設計用于存儲和管理XML文檔的數據庫,其基本存儲單元是XML文檔,通過XML相關的標準和技術完成數據的存儲和其他操作。這種數據庫維持原有XML文檔的數據結構和相關的元數據,容易實現XML文檔的roundtripping(往返存取)[1]功能,即可以將XML文檔存放在NXD中,然后再取回同樣的文檔,這對于法律、醫學等不允許隨意竄改數據的領域顯得格外重要。

目前較為公認的NativeXML數據庫的定義[1]是由XML:DB mailing list的一位成員給出的,即只有滿足三個特征的XML數據庫才能稱為 NativeXML數據庫:a)為XML文檔定義了一個邏輯模型,并且根據該模型存取文檔;b)以XML文檔為基本邏輯存儲單元,正如關系數據庫將表中的行作為存儲的基本單元一樣;c)對底層的物理存儲模型沒有特殊要求,既可以建立在關系型、層次型或面向對象的數據庫之上,也可以使用專用的存儲格式,如索引或壓縮文件。

2 基于平面文件的NativeXML數據庫的存儲模型

從上面的NativeXML數據庫定義c)可以看到,原生XML數據庫并不關心具體的物理存儲模型,它只要求保持XML文檔原本的樹型結構,對數據庫的查詢、修改和刪除等操作由數據庫應用層提供支持。目前常見的NativeXML數據庫的存儲模型主要有:a)基于平面文件(flat file)的存儲模型;b)基于關系數據庫的存儲模型;c)基于面向對象數據庫的存儲模型。

其中,b)和c)這兩種存儲模式將XML文檔分片存儲到關系型數據庫或是面向對象數據庫中,可以充分利用已有的數據庫成熟技術,其查詢、修改效率均比較高,但是在實際應用中需要Web網站主機提供關系型數據庫或是面向對象數據庫的支持,其使用受到一定的條件限制。本文主要討論基于平面文件的存儲模型。

基于平面文件的存儲是NativeXML數據庫中最簡單、最靈活的存儲方式,一般無須考慮存儲模型(如關系型數據庫的文件塊及映射結構),只需根據存儲粒度的需求分割XML文檔并映射為由操作系統管理的文件目錄結構和文本文件即可。由于這種文件體積一般比存儲設備上的單個文件塊大,且隨數據容量變動頻繁,在搜索和存取時其速度要慢一些。基于平面文件存儲的NativeXML數據庫一般均需要使用索引,使得查詢引擎能較快地定位XML文檔內的任意節點,提高數據庫的查詢速度。其存儲模型如圖1所示。

圖1中,數據文件以行為單位存儲數據記錄,并且不包含數據間任何結構的(關系、層次)信息,數據的字段之間可以用空格、制表符、逗號或其他特殊符號間隔以便識別;結構文件存儲數據間的關系信息和層次信息,可以直接用XML格式書寫,其標簽和數據文件內的數據字段一一對應,用于將從數據文件中讀出的數據重構為完整的XML文檔樹;索引文件針對數據文件的行信息建立索引,使數據存取可以直接定位到特定行,無須對整個文件進行讀寫,加快數據庫的訪問速度。

基于平面文件的存儲方式的優點是簡單小巧,可以很容易被其他文本編輯工具(如記事本、寫字板等)構建和維護,同時可根據應用環境變換的需要使用不用編程語言用標準的DOM或SAX技術訪問;其缺點是還缺乏成熟的安全保護措施,索引結構的維護比較困難,不提供完整的數據鎖、災難恢復等機制,不適合大型的Web應用。

3 基于平面文件的NativeXML數據庫的存儲粒度

XML文檔是一棵由各種節點組成的樹,包括元素節點(element node)、屬性節點(attribute node)和文本節點(text node)等。在存儲XML文檔樹時,根據存儲的是整個XML文檔還是某個子樹甚至只包含一個節點,可以有三種存儲粒度:

a)粗粒度存儲。整個XML文檔作為一個完整的邏輯單元來存取,是一種基于文檔的存儲策略。這種存儲粒度是最簡單的,優點是方便存儲和檢索整個文檔,提供完全的往返存取支持,適合比較小的XML文檔;其缺點是所有數據保存在同一個平面文件中,在文件比較大時存取時間較長,且難以維護。

b)細粒度存儲。將XML文檔的每一個結構單元(元素、屬性、CDATA等)單獨存儲,由文件目錄結構實現結構單元之間的層次關系,是一種基于元素的存儲策略。這種存儲方案具備了最大的靈活性,每一個結構單元均能夠被獨立地訪問、修改和刪除,并且基本不影響其他文檔結構;其缺點是除了存儲文檔本身的數據外還要維護大量的物理指針和邏輯指針,占用了較多的存儲空間,并且重組生成原文檔很耗時,不完全支持往返存取特性。

c)中粒度存儲。它是細粒度和粗粒度存儲的一個折中,即把XML文檔分割成片段(子樹)再存儲,是一種基于子樹的存儲策略。中粒度方案在存儲和檢索XML文檔方面比細粒度方案要好,對資源的占用也比粗粒度方案小。實現中粒度存儲的關鍵問題是如何合理地確定XML文檔的分割點,一般有兩種方法:(a)根據物理塊大小,使子樹的大小與物理塊大小相近;(b)根據邏輯意義劃分子樹,使子樹成為一個比較完整的邏輯單位。

在設計基于平面文件的NativeXML數據庫時,確定哪些信息由文件目錄結構獲取,哪些信息由XML文檔獲取,即決定XML數據的存儲粒度是一個在實際應用中必須解決的問題。

4基于平面文件的NativeXML數據庫在Web應用中的存儲策略

目前互聯網上的各種動態頁面技術普遍使用傳統的關系型數據庫(如MySQL、Access、SQL server等)存儲數據,而把XML文檔作為數據交換標準使用。然而近年來XML已經迅速發展成為新一代的Web設計語言,可以直接通過XSLT(extensible stylesheet language transformation)樣式表或網頁編程語言(如PHP、JSP等)將XML文檔數據輸出到頁面。如果在基于XML的Web應用中仍然使用傳統的關系型數據庫存儲數據,僅僅把XML文檔作為數據處理的中間環節,就必然涉及到XML數據與關系型數據之間的來回轉換,增加了開發難度和系統消耗。

本文所討論的基于平面文件的NativeXML數據庫直接使用平面文件作為Web數據庫來存儲數據,數據不僅可以通過專有數據庫應用層訪問,還可以結合XSLT樣式表技術直接生成Web頁面供用戶瀏覽,簡化了系統設計,也提高了建站的靈活性。系統模型如圖2所示。

圖3是一個簡化了的Web網站結構,文章是該應用的核心,并且其數量隨著時間推移越來越多。如果采用粗粒度(基于文檔)的策略將所有數據都寫入一個平面文件,隨著該文檔體積的逐漸增加,不僅耗用的服務器資源會越來越多,而且響應時間也會越來越長,給用戶瀏覽造成不便。如果采用細粒度(基于元素)的策略建立文章、欄目、用戶等文件目錄,再將其他子結構單元如文章標題、文章作者等單獨寫入某個目錄下的平面文件,雖然任一結構單元生成的平面文件體積均不會太大,但是整體目錄的邏輯結構將越來越復雜,給后期的維護造成極大的不便。

在實際應用中采用了基于子樹的中粒度存儲策略,將用戶、廣告、欄目、文章、評論等子樹按邏輯意義分割寫入單獨的平面文件。文章子樹的存儲結構如下:

a)articles.data(數據文件)

1|1|IDC分析師仍堅信雅虎終將被微軟收購|微軟,雅虎,收購|憶苦|據國外媒體報道……|47,78

2|3|LG推出反射式LCD兩面可顯示不同內容|LG,反射式,LCD|Alright|據悉在2008 SID國際研討會上,LG介紹了一種新型反射式LCD面板……|24,37,59。

b)articles.stru(結構文件)

〈? xml version=\"1.0\" encoding=\"utf8\" ?〉 

〈articles〉

〈article id=\"\"〉

〈cid /〉

〈title /〉

〈keywords /〉

〈author /〉

〈content /〉

〈commentID/〉

〈/article〉

〈/articles〉

c)articles.id.idx(文章ID索引文件)

這里以按文章ID進行索引為例,索引格式為:文章ID|起始位置|長度|是否已刪除,行結束符為Windows和DOS下的“\\r\”。

1|0|405|1

2|408|724|0 

數據庫接口程序首先按照查詢條件從索引文件中取出數據的位置、長度以及其他索引信息,然后直接在數據文件中定位并讀取所需數據,再將各字段數據提取出來(本例中的字段分隔符為\"|\"),最后使用結構文件將數據格式化為標準的XML文檔:

〈? xml version=\"1.0\" encoding=\"utf8\" ?〉

〈articles〉

〈article id=\"2\"〉

〈cid〉3〈/cid〉

〈title〉LG推出反射式LCD兩面可顯示不同內容〈/title〉

〈keywords〉LG,反射式,LCD〈/keywords〉

〈author〉Alright〈/author〉

〈content〉據悉在2008 SID國際研討會上……〈/content〉

〈commentID〉24,37,59〈/commentID〉

〈/article〉

〈/articles〉

5 結束語

NativeXML數據庫的存儲策略(包括存儲模型、存儲粒度以及相關的索引結構等)從底層影響著整個數據庫系統的功能、性能和可伸縮性,對建立在該數據庫之上的Web應用系統的性能也起著舉足輕重的作用。在實際開發應用中,往往需要在整個數據庫系統的安全、速度、效率以及靈活性等多方面進行權衡和選擇。

在當前互聯網的快速發展中可以明顯地看到,眾多中小網站集體的力量提供了互聯網的大多數內容。這些中小網站大多采用租用虛擬主機的方式獲取網絡存儲空間,其主機環境千差萬別,有的提供數據庫支持(Access或MySQL等),有的不提供。如果能夠為這類網站提供一個跨平臺、跨語言,無須特定關系型數據庫支持的基于平面文件的NativeXML數據庫解決方案,滿足這類網站對輕量級、微型數據庫的需求,將極大地降低建站環境需求,提高建站的靈活性和便捷性,促進中小網站的發展。

參考文獻:

[1]BOURRET R. XML and database[EB/OL].(2005).http://www.rpbourret.com/xml.

[2] GRAVES M. XML數據庫設計[M].尹志軍,等譯.北京:機械工業出版社,2002.

[3] 盛惠娟.NativeXML數據庫存儲模型研究[D].西安:西安電子科技大學,2005.

[4] 王震江.基于XML數據庫的Web應用研究[J].計算機應用研究,2005, 22 (12):215217.

[5] 門愛華,馮建華,周立柱.XML數據庫存儲策略綜述[J].計算機科學,2005, 32 (9):1317.

[6] 李驥,陳福生.NativeXML數據庫綜述[J].計算機工程與設計,2004, 25 (6):932960.

[7] 渠本哲,王潛平.NativeXML數據庫關鍵技術綜述[J].計算機工程與設計,2007, 28 (1):2428.

[8] 馮建華,錢乾,廖雨果,等.純XML數據庫研究綜述[J].計算機應用研究,2006, 23 (6):17.

主站蜘蛛池模板: 人妻无码中文字幕第一区| 又爽又大又黄a级毛片在线视频| 沈阳少妇高潮在线| 伊人色综合久久天天| 五月婷婷激情四射| 国产高清在线精品一区二区三区| 暴力调教一区二区三区| 伊人婷婷色香五月综合缴缴情| 国产福利小视频在线播放观看| 啪啪免费视频一区二区| 国产亚洲欧美另类一区二区| 中文字幕在线看视频一区二区三区| 国产精品视频久| 3D动漫精品啪啪一区二区下载| 日韩精品中文字幕一区三区| 亚洲欧洲日产国码无码av喷潮| 国产乱子伦精品视频| 青青草国产在线视频| 人妻无码一区二区视频| 色综合天天综合中文网| 久久精品国产一区二区小说| 亚洲天堂啪啪| 日韩欧美国产另类| 91亚洲视频下载| 国产一级片网址| 日韩人妻精品一区| 中文字幕色在线| 亚洲精品中文字幕无乱码| 亚洲美女一级毛片| 日韩大乳视频中文字幕| 国产69囗曝护士吞精在线视频| 欧美中文字幕一区二区三区| 无码国产偷倩在线播放老年人| 成年女人a毛片免费视频| 内射人妻无码色AV天堂| 国产av剧情无码精品色午夜| 午夜毛片免费观看视频 | 国内精品视频| 九九久久精品国产av片囯产区| 国产在线自乱拍播放| 免费A级毛片无码免费视频| 在线观看国产精美视频| 精品亚洲国产成人AV| 久久99热这里只有精品免费看| 无码精品一区二区久久久| 中文字幕啪啪| 国产亚洲精品va在线| 久久精品亚洲中文字幕乱码| 亚洲中文字幕在线一区播放| 亚洲天堂网2014| 国产麻豆aⅴ精品无码| 欧日韩在线不卡视频| 久久亚洲AⅤ无码精品午夜麻豆| 国产资源免费观看| 国产清纯在线一区二区WWW| 99激情网| 国产精品私拍在线爆乳| 极品国产一区二区三区| 精品国产成人三级在线观看| 福利在线一区| 久久久噜噜噜久久中文字幕色伊伊| 国产成人精品一区二区不卡| 热久久这里是精品6免费观看| 午夜爽爽视频| 欧美人人干| 久久黄色视频影| 无套av在线| 91精品福利自产拍在线观看| 丁香六月激情综合| 激情六月丁香婷婷四房播| 午夜在线不卡| 91成人免费观看在线观看| 亚洲区视频在线观看| 免费在线国产一区二区三区精品| 免费久久一级欧美特大黄| 狠狠亚洲婷婷综合色香| 国产91小视频在线观看| 国产成人久视频免费| 国产午夜在线观看视频| 久操中文在线| 国产幂在线无码精品| 欧美h在线观看|