隨筆-128  評論-55  文章-5  trackbacks-0

          數據庫技術及其應用系統經歷了從層次數據庫、網狀數據庫到關系數據庫以及面向對象數據庫的發展,在傳統的商業和事務處理領域內逐步成熟,取代了原有的基于文件系統的數據處理方式,成為計算機信息系統中的重要基礎和支柱。但隨著Internet的飛速發展,Web的出現改變了人們習慣的處理方式,也給數據庫技術提出了必須面對的重要問題,即如何有效地存儲和管理Web上的數據(文檔),使其既能被高效地操作和維護,又能在Internet平臺上方便地表示和交換。

          XML技術自出現以來發展非常迅速,在許多領域內得到廣泛的支持而有著廣闊的應用前景。例如電子數據交換、電子商務等更是將XML作為一種基礎性、支柱性的技術來看待。

          1、數據庫簡史

          數據庫系統是隨著計算機技術的不斷發展,在特定的歷史時期、特定的需求環境下出現的。在1946年的第一臺計算機到20世紀60年代這漫長的20年里,計算機操作系統主要局限于文件的操作,對數據的管理也主要是通過文件系統來實現。進行計算所需要的各種數據存放在各自的文件里,使用這些數據時將文件打開,讀取文件中的數據到內存中,當計算完畢后,將計算結果仍舊寫入到文件中去,它的不足主要集中在無法對數據進行有效的統一管理。針對文件系統的重要缺點,人們逐步發展了以統一管理數據和共享數據為主要特征的系統,即數據庫系統。1964年,美國通用電氣公司開發成功了世界上的第一個數據庫系統IDS(IntegratedDataStore)。IDS奠定了網狀數據庫的基礎,并得到了廣泛的發行和應用,成為數據庫系統發展史上的一座豐碑。1969年,美國國際商用機器公司(IBM)也推出世界上第一個層次數據庫系統IMS(InformationManagement System),同樣在數據庫系統發展史上占有重要的地位。

          70年代初,E.F.Codd在總結前面的層次、網狀數據庫優缺點的基礎上,提出了關系數據模型的概念及關系代數和關系演算。在70年代,關系數據庫系統無論從理論上還是實踐上都取得了豐碩的成果。在理論上確立了完整的關系模型理論、數據依賴理論和關系數據庫的設計理論;在實踐上,世界上出現了很多著名的關系數據庫系統,比較著名的如SystemR、INGRES、Oracle等。

          與文件系統相比,數據庫系統有幾個方面的特點:向用戶提供高級的接口;向用戶提供非過程化的數據庫語言(即SQL語言);查詢的處理和優化;并發控制;數據的完整性約束。

          進入80年代之后,計算機硬件技術的飛速提高促使計算機應用不斷深入,產生了許多新的應用領域,例如計算機輔助設計、計算機輔助制造、計算機輔助教學、辦公自動化、智能信息處理、決策支持等。這些新的領域對數據庫系統提出了新的要求。但由于應用的多元化,不能設計出一個統一的數據模型來表示這些新型的數據及其相互關系,因而出現了百家爭鳴的局面,產生了演繹數據庫、面向對象數據庫、分布式數據庫、工程數據庫、時態數據庫、模糊數據庫等新型數據庫的研究和應用。

          2、XML簡介

          XML推薦標準1.0版發布于1998年2月,之后迅速在全球掀起了XML應用的浪潮。XML是一種描述型的標記語言,與HTML同為SGML(標準通用標記語言,ISO-8879國際標準)的一種應用。由于XML在可擴展性、可移植性和結構性等方面的突出優點,它的應用范圍突破了HTML所達到的范圍。

          一篇XML文檔由標記和內容組成。XML中有六種標記:元素(elements)、屬性(attributes)、實體引用(entityreferences)、注釋(comments)、處理指令(processinginstructions)和CDATA段(CDATAsections)。XML與HTML最顯著的不同是XML文檔中引入了“文檔類型聲明”(Document Type Declarations)。DTD使文檔可以與分析器交流關于它的內容的元信息。DTD的出現,賦予了XML文檔可擴展性、結構性和可驗證性,使XML具備了類似于數據庫的一些性質,可以利用XML來組織和管理信息;又可以與HTML一樣在瀏覽器中方便地表示,在Internet上高效地傳遞和交換??紤]到與HTML的兼容,DTD并不是XML文檔必需的成份。具有DTD的XML文檔稱作“Valid”,否則就是“Well-formed”。

          目前,處理XML文檔的方式主要有SAX與DOM兩種。SAX(SimpleAPIforXML)是一種基于流的、以事件處理方式工作的接口。SAX 2.0在2000年5月發布,增強了許多功能,包括對名字空間的支持。DOM(Document Object Model)則是在對XML文檔進行分析后,在內存中建立起一個完整的樹結構,然后在此基礎上進行各種操作。簡單地比較來看,SAX對系統資源要求低、速度快,但對文檔的操作是只讀的;DOM的處理能力強大,但要求大量的系統資源,尤其是對于大的文檔。而后還出現了Xpath和Xpointer用以完成XML的搜索和轉換;XSL、XSLT和SOAP用以完成XML的遠程對象訪問,XML Query Languages的出現使XML查詢語言可用于任何XML文檔。

          3、XML與數據庫

          XML文件是數據的集合,它是自描述的、可交換的,能夠以樹型或圖形結構描述數據。XML提供了許多數據庫所具備的工具:存儲(XML文檔)、模式(DTD,XMLschema,RE1AXNG等)、查詢語言(XQuery,XPath,XQL,XML-QL,QUILT等)、編程接口(SAX,DOM,JDOM)等。但XML并不能完全替代數據庫技術。XML缺少作為實用的數據庫所應具備的特性:高效的存儲、索引和數據修改機制;嚴格的數據安全控制;完整的事務和數據一致性控制;多用戶訪問機制;觸發器、完善的并發控制等。因此,盡管在數據量小、用戶少和性能要求不太高的環境下,可以將XML文檔用作數據庫,但卻不適用于用戶量大、數據集成度高以及性能要求高的作業環境。

          隨著Web技術的不斷發展,信息共享和數據交換的范圍不斷擴大,傳統的關系數據庫也面臨著挑戰。數據庫技術的應用是建立在數據庫管理系統基礎上的,各數據庫管理系統之間的異構性及其所依賴操作系統的異構性,嚴重限制了信息共享和數據交換范圍;數據庫技術的語義描述能力差,大多通過技術文檔表示,很難實現數據語義的持久性和傳遞性,而數據交換和信息共享都是基于語義進行的,在異構應用數據交換時,不利于計算機基于語義自動進行正確數據的檢索與應用;數據庫屬于高端應用,需要昂貴的價格和運行環境。而隨著網絡和Internet的發展,數據交換的能力已成為新的應用系統的一個重要的要求。XML的好處是數據的可交換性(portable),同時在數據應用方面還具有如下優點:(1)XML文件為純文本文件,不受操作系統、軟件平臺的限制;(2)XML具有基于Schema自描述語義的功能,容易描述數據的語義,這種描述能為計算機理解和自動處理;(3)XML不僅可以描述結構化數據,還可有效描述半結構化,甚至非結構化數據。

          4、XML文件的存儲

          XML文件的存儲方式有三大類:(1)將文件存儲于文件系統(StoringDocumentsinthe File System);(2)將文件存儲于BLOB(Storing Documents in BLOBs),利用數據庫的事務管理、安全、多用戶訪問等優點。此外許多關系數據庫提供的檢索工具可以進行全文檢索、近似檢索、同義詞檢索和模糊檢索。其中某些工具將會支持XML,這樣就可消除將XML文件作為純文本檢索所帶來的問題。(3)將文件存儲于原生XML數據庫(Native XML Databases,NXD)。NXD是專用于存儲XML文件的數據庫,支持事務管理、安全、多用戶訪問、編程API和查詢語言等。與其它數據庫的唯一區別在于其內部模型是基于XML的。其中,最重要的存儲方式當屬原生XML數據庫。

          4.1、原生XML數據庫

          原生XML數據庫(NativeXMLDatabases)為XML文檔定義了一個(邏輯)模型,并根據該模型存取文件。這個模型至少應包括元素、屬性、PCDATA和文件順序。其例子有XPath數據模型、XMLIn-foset以及DOM所用的模型和SAX 1.0的事件。它以XML文件作為其基本存儲單位,對底層的物理存儲模型沒有特殊要求。例如,它可以建在關系型、層次型或面向對象的數據庫之上,或者使用專用的存儲格式,比如索引或壓縮文件。

          NXD最適于存儲以文檔為中心的文件。這是由于NXD保留了文件、順序、處理指令、注釋、CDA-TA塊以及實體引用等,而支持XML的數據庫XED(XML-enableddatabase)無法做到。XED是在原有數據庫基礎上擴展了XML支持模塊,完成XML數據和數據庫之間的格式轉換和傳輸。從存儲粒度上,可以把整個XML文檔作為RDBMS表中一行,或把XML文檔進行解析后,存儲到相應的表格中。為了支持W3C的一些XML操作標準,Xpath、XED提供一些新的原語(如Oracle9iR2增加了一些數據包來操作XML數據等),并優化了XML處理模塊。

          NXD一般采用層次數據存儲模型,保持XML文檔的樹形結構,省掉了XML文檔和傳統數據庫的數據轉換過程。NXD還適用于存儲“天然格式”為XML的文件,NXD還可以存儲半結構化數據、在某種特定情形下提高存取速度以及存儲沒有DTD的文件(良構的文件)。

          4.2、原生XML數據庫的結構

          原生XML數據庫的結構可分為兩大類:基于文本的和基于模型的。

          基于文本的NXD(Text-BasedNativeXMLDatabases)將XML作為文本存儲。它可以是文件系統中的文件、關系數據庫中的BLOB或特定的文件格式?;谖谋镜腘XD與層次結構的數據庫很相似,當存取預先定義好層次的數據時,它比關系數據庫更勝一籌。和層次結構的數據庫一樣,當以其它形式比如轉置層次存取數據時,NXD也會遇到麻煩。這個問題的嚴重程度尚未可知,很多關系數據庫都使用邏輯指針,使相同復雜度的查詢以相同的速度完成。

          基于模型的NXD(Model-BasedNativeXMLDatabases)是根據文件構造一個內部模型并存儲這個模型。有些數據庫將該模型存儲于關系型和面向對象的數據庫中,例如在關系型數據庫中存儲DOM時,就會有元素、屬性、PCDATA、實體、實體引用等表格。其他數據庫使用了專為這種模型優化了的存儲格式。使用專用存儲格式的基于模型的NXD如果以文件的存儲順序讀取文件,其性能與基于文本的NXD相似。

          4.3、原生XML數據庫的特性

          原生XML數據庫的特性(FeaturesofNativeXML Databases)有:(1)文件集(Document Collections),支持集合(Collection)的概念,其作用相當于關系數據庫中的表和文件系統中的文件夾。(2)查詢語言(Query Languages),最常用的有XPath(對多個文件的查詢作了擴充)和XQL,以及專有的查詢語言。(3)更新和刪除(Updates and Deletes),NXD對文件的更新和刪除方式從簡單的替換或刪除現有文件,到修改當前活動的DOM樹,以及用于指定如何修改文件片斷的語言。(4)事務、鎖定和并發(Transactions,Locking,and Concurrency),支持事務處理。鎖定通常是對整個文檔的,所以多用戶并發性相對較低。問題的大小取決于應用程序以及“文件”的構成。(5)原生數據庫提供應用程序接口API(Application Programming Interfaces,APIs)。(6)NXD的一個重要特性是它可以為XML文檔提供“往返車票(round-trip)”。可以將XML文件存放在NXD中,而且再取回“同樣的”文件。對于以文檔為中心的應用程序來說非常重要,因為CDATA部分、實體用法、注釋和處理指令是這些文檔不可缺少的組成部分。特別是對于法律和醫學文件,按規定這些文檔必須要保持原樣。(7)外部數據(Remote Data),某些NXD可包含有外部數據,它來自存儲在數據庫中的文檔。通常這些數據通過OD-BC、OLE DB或JDBC從關系數據中取出,模型可以是基于表格的或對象-關系型映射。(8)支持元素和屬性的索引。

          5、結論

          XML技術的出現,使數據處理從文件方式到數據庫系統再到文件方式的循環,但新的文件方式已經與最初的文件系統有了本質的區別----格式化文檔。XML和關系數據庫在數據應用和數據管理方面各有優勢。

          一方面,我們要研究數據庫的新技術、探索數據庫的發展方向;另一方面,在數據庫的基本實現基礎上,添加必要的新技術是探索新數據庫的發展方向。



          Author: orangelizq
          email: orangelizq@163.com

          歡迎大家訪問我的個人網站 萌萌的IT人
          posted on 2009-12-09 17:07 桔子汁 閱讀(388) 評論(0)  編輯  收藏 所屬分類: SOA
          主站蜘蛛池模板: 昌吉市| 榕江县| 前郭尔| 张北县| 仁布县| 多伦县| 南通市| 汉川市| 盘锦市| 康保县| 永昌县| 治县。| 炎陵县| 山阴县| 绥宁县| 鄂托克旗| 米林县| 鄂州市| 大名县| 乳山市| 平顺县| 瑞金市| 桑植县| 龙井市| 义马市| 托克逊县| 黄浦区| 海安县| 怀化市| 巫溪县| 红河县| 托克逊县| 迁安市| 莎车县| 遂宁市| 赤壁市| 吉安县| 山阴县| 会宁县| 潮安县| 体育|