回覆列表
  • 1 # 使用者57733767485

    受邀,樓主這個問題問的好,既然是原生XML,為什麼沒有流行起來呢?

    XML技術從誕生之日就預示了它輝煌的未來,特別是隨著近一、兩年Web Service的蓬勃發展,XML越來越多地活躍在資料交換和儲存領域。 XML資料量指數級的增長,要求更有效的資料管理能力和更快、更精確的查詢。在傳統資料庫廠商宣佈支援XML的同時,一種新的資料庫技術,Native XML DBMS(NXD)也已嶄露頭角,打破了RDBMS傳統資料庫一統天下的局面,為資料庫技術的研究提供了一次良好的發展契機。 本文將向您介紹XML和資料庫的關係,NXD的技術特點,傳統資料庫和NXD的比較和NXD的現狀和前景。 XML和資料庫的關係 XML是資料庫嗎? XML文件具有"可自描述"、"無限巢狀"、"樹形結構"等特點,因此在某種意義上,一個XML文件就是一個數據庫或其中的一張表。 下面所示的XML文件Student.xml,描述了一個學生的資訊:學號、姓名等。我們可以很方便的將其對應於傳統RDBMS中一張二維表(table):標籤student為行,標籤id、name等作為列。 Student.xml <student> <id>19803001</id> <name> <lastname>Johnson</lastname> <firstname>Jack</firstname> </name> <email>[email protected]</email> ... </student> 我們可以把相關的XML文件放在一個目錄下,利用檔案系統來管理,提供查詢、更改、增刪操作。為更好地支援XML,W3C還制定了一些相關技術,如:文件模式(DTD、XML Schema),查詢語言(XPath、XQuery等),程式設計介面(DOM、SAX等),來方便開發應用程式。 但如果從更高的技術角度出發,就會發現,對XML文件簡單的檔案管理是遠遠不夠的:低效拇媧⒆櫓⑺饕檠際醯惶峁┦攣瘛踩指椿疲薹ūVな蕕耐暾院鴕恢灤裕揮脅⒎⒖刂啤⒁浦補ぞ叩取? 資料庫在XML應用中的角色 事實上,XML作為資料交換的標準,更著重於統一資料格式,而不是提供資料庫的特性。因此在XML應用中,資料庫作為資料管理的位置依然沒有改變。 XML資料本身的樹形結構不同於關係模型中的二維表結構,這種差別反映在資料庫產品處理XML資料的技術上,形成兩大陣營:XML-Enabled DBMS(XED)和Native XML DBMS(NXD)。 XED是在原有資料庫基礎上擴充套件了XML支援模組,完成XML資料和資料庫之間的格式轉換和傳輸。從儲存粒度上,可以把整個XML文件作為RDBMS表中一行,或把XML文件進行解析後,儲存到相應的表格中。為了支援W3C的一些XML操作標準,如XPath,XED提供一些新的原語(如Oracle9iR2增加了一些資料包來操作XML資料等),並優化了XML處理模組。 NXD則出現在XML資料處理領域內,一般採用層次資料儲存模型,保持XML文件的樹形結構,省掉了XML文件和傳統資料庫的資料轉換過程。詳見2。 兩種文件型別 “以資料為中心”(data-centric) “以資料為中心”的XML文件著重於文件中的資料,而非文件格式,如航班資訊、銷售定單、科學計算結果等。這種文件的資料一般由機器產生,來源於傳統資料庫中的資料。主要應用在電子商務、ERP、EAI等領域,整合不同資料來源的資料,交換資訊。 “以資料為中心”的XML文件具有以下特點: · 結構化的資料 · 資料粒度大小適中 · 很少或沒有混和內容(Mixed Content) · 文件順序(Document-order)不重要 student.xml就是一個典型的"以資料為中心"的XML文件,記錄了學生的資訊。每個學生的資訊都很規整,而且粒度合適,同級元素(element)間的順序不重要,交換兩個同級元素(element)並不會破壞文件的可讀性。 “以文件為中心”(document-centric) "以文件為中心"的XML文件主要是用來表示人類自然語言描述的資料,如電子郵件、書和使用者手冊。這種文件具有更復雜的結構,一般不是機器自動產生的。目前,Web上的大部分資料都可以表示成這種文件。 "以文件為中心"的文件具有以下特點: · 半結構化或非結構化的資料 · 較多的混和內容(Mixed Content) · 文件順序(Document-order)重要 下面的products.xml就是典型的一個"以文件為中心"的XML文件。 products.xml <Product> <Intro> The <ProductName>IPEDO Native XMLDB</ProductName> from <Developer> Ipedo,Inc.</Developer> is <Summary>like a true native XML Database, ...</Summary> </Intro> ... </Product> 對於"以資料為中心"的XML文件,XED可以方便地將其中的資料抽取,儲存在傳統資料庫中,但對於 "以文件為中心"的XML文件則顯得力不從心了。NXD由於無需在兩種模型之間轉換資料,因此在處理"以文件為中心"的XML文件就很有優勢。 NXD的技術特點 NXD是專門為儲存XML文件設計,也兼有一般資料庫的特性,例如支援事務,併發控制,查詢語言,安全機制,二次開發介面等。唯一的不同之處在於其內部儲存模型是基於XML文件樹形結構,而非關係模型。 Ronald Bourret在其"XML and Databases"一文中,對NXD有如下定義: “NXD的邏輯模型建立在XML文件,而非文件中的資料之上,並根據它來存取資料。該模型至少包括元素(element)、屬性(Attribute)、PCDATA和文件順序,例如XPath的資料模型……NXD的最小儲存單位是XML文件,……” 一般認為,NXD應該具有以下幾個特性:文件集合(Document Collection),查詢、更新,事務、鎖和併發控制、二次開發介面等。 文件集合 很多NXD產品都支援“文件集合”的概念,就像檔案系統中的一個目錄或RDBMS中的一張表,一個“文件集合”把一類文件聚集在一起,方便使用者操作。集合級別上的查詢、修改操作都會反映到集合內的每個文件。 一般說來,一個“文件集合”關聯一種模式。將文件加入到有模式的"文件集合"時,會對要加入的文件進行模式檢查。只有符合"文件集合"模式的文件才可以加入。 不同於RDBMS中表必須具有模式,NXD還提供"無模式"的文件集合,即將一個文件放入該集合中時,不必檢查該文件的模式。"無模式"的文件集合大大方便了使用者儲存格式很難統一,半結構化的XML文件。 查詢語言 XPath和XQuery是W3C推薦的針對XML文件的查詢語言。目前大部分NXD產品都支援XPath,。另外還有一些NXD提供專有的查詢語言。 XPath是基於XML文件樹形模型,給出從某個結點起的查詢路徑,搜尋文件。目前,XPath作為資料庫查詢語言還有不少缺陷:不能分組、排序、連線等。 而XQuery更像一種程式語言,支援迴圈等邏輯,支援分組、排序、連線等。相對於傳統資料庫的標準SQL語句, XQuery在對XML資料的查詢方面,是一種功能更強大、更易於程式設計的方法。 事務、鎖和併發控制 幾乎所有的NXD都支援事務處理。但是,鎖的粒度通常比較大,對整個文件的而不是對文件片斷(Fragment)的,所以多使用者併發性的支援相對較低。具體的併發程度取決於應用程式以及"文件"的構成。 二次開發介面 幾乎所有NXD都提供程式設計介面:提供資料庫連線、瀏覽元資料、執行查詢和返回結果的方法。返回結果通常是XML字串、DOM樹、返回文件的SAX解析器。如果查詢返回結果是多個文件或文件片斷(Fragment)的話,通常都會提供列舉這些結果的方法。對於以Client/Server模式執行的資料庫產品,還可以將結果透過網路協議(如HTTP)回傳給客戶端。 Round-tripping NXD一個重要特性是它為XML文件提供了Round-tripping:可以將XML文件存放在NXD中,而且再取回"同樣的"文件。對於以"文件為中心"的應用程式來說非常重要,因為易被XED忽略的CDATA部分、實體應用、註釋和處理指令是這些文件不可缺少的組成部分。特別是對於法律和醫學領域中格式不允許隨意竄改的資料文件。 所有NXD都能夠在元素(element)、屬性(Attribute)、CDATA和檔案順序的級別上為文件提供Round-tripping,能達到的具體程度取決於資料庫產品。 更新和可持久化的DOM 大多數NXD對XML文件的更新是透過其提供的API呼叫完成的,或者簡單的替換整個文件來實現的。某些NXD還提供了可持久化的DOM(Persistent DOM,PDOM):在某種永續性儲存介質上實現了DOM模型,對PDOM所作的改變直接反映在資料庫中。由於PDOM樹是"現場"的,資料庫通常和應用程式在同一個程序空間。 傳統資料庫與NXD的比較 XED依靠傳統資料庫技術二三十年的積累,在與NXD競爭的前期,佔據了XML應用市場的很大份額:在Intellor公司2001年3月份的調查報告中,XED的市場份額將近是NXD的3倍,約12億美元。NXD雖然出場較晚,但市場份額增長速度卻非常強勁,在短短的3年中,已經由1999年的2,300萬美元發展到2001年的3.9億美元,並在今後兩年內將保持200%的增長率。目前,NXD主要應用在製造業、生物醫藥、電信等領域。 透過對比XED和NXD技術,我們可以更清楚地看到二者的差別,特別是反映到應用領域。這一點對那些需要選擇資料庫開發XML應用的使用者非常有意義。 XED存取XML資料的技術特點 XED中這部分工作是由XML閘道器模組完成,它處於使用者邏輯模組和資料庫邏輯模組之間,將傳統資料庫包裝起來,給使用者提供了一個透明的XML資料來源。 XED存取XML文件面臨以下幾個技術難點: XML文件模式和XED模式的對映為了把XML文件存到XED中,我們必須將XML文件的模式(DTD或XML Schema)對映到資料庫模式。同樣,將資料從XED取出來重新組合成XML文件,要完成相反的操作。這種轉化發生在元素(element),屬性(attribute)和文字(text)上。由於XED注重的是資料而非格式,所以在這個過程中,XML文件的大部分物理結構(CDATA、實體等)和一部分邏輯結構(處理指令、註釋等)都被忽略,而資料被儲存。這種轉換可能會丟失資訊,一個XML文件存到XED裡後再取出來,可能會變成另外一種格式。相對於NXD提供的Round-tripping,XED只能在資料層面實現資訊的保留。 對XML資料的查詢支援 由於XML文件模式和XED模式很難保持一致,所以在存取過程中經常用XSLT完成轉換。但XSLT非常耗時,這會對查詢效能造成很大影響。所以較好的解決方法是XED提供一種查詢語言來返回XML文件。 目前已經有很多XED產品提供了這種語言,主要分三類: 基於模板(Template-Based)的查詢 這是目前RDBMS XED最流行的方法,將SQL語句嵌入到已寫好的XML文件模板中,在實際查詢時候用結果替換。 基於SQL(SQL-Based)的查詢 透過在SQL語句的實現中增加對XML的支援,完成對XML資料的查詢。例如Oracle9iR2中,增加了XMLTYPE型別和一些新的函式包以支援XMLDB。 XML查詢 包括XPath和XQuery。與上面兩種不同,這種查詢是建立在XML文件模型上。也就是說,如果XED要支援這種查詢方式,必須提供虛擬的XML文件。基本上目前的XED只支援XPath。 資料型別、空值,字符集等 在XML文件和XED的轉換過程中,還會遇到資料型別的匹配、空值和字符集處理等問題。 XML文件中除了不被解析的一些實體外,所有資料的型別都以文字(text)來表示。在轉換過程中,可能會遇到型別不匹配的問題,諸如受到JDBC驅動模組的限制、日期的不同國際化表示。 XML文件以靈活的方式來支援空值,如省略某個元素(element)、零長度的元素(element)和屬性(Attribute)等。而這些在XED中則有不同的意義。 同樣問題還出現在字符集、二進位制資料、對XML文件標籤的處理上。 XED和NXD的比較 - XED的優、劣勢 優勢: 使用者不需要將傳統資料庫中原有資料重新移植到新系統中,只是稍加改變,就可以支援XML應用。 傳統資料庫技術,例如併發控制、事務等,已經很成熟 傳統資料庫知識和經驗依然有效,使用者不需要為了應用XML而再去學習一套新的資料庫技術 劣勢: XML文件存入到資料庫時需要將其"打碎",取出時需要"組合",不僅耗時,而且文件的格式可能會不同 XML文件和資料庫之間的模式轉換複雜,在前期開發階段需要投入很大 對"以文件為中心"、格式複雜的XML文件處理效能較差 在採納XML技術標準方面較落後 - NXD的優、劣勢 優勢: XML文件存取無需模式轉換,存取速度快 對格式複雜的XML文件支援比XED要好 支援大部分的最新的XML技術標準 劣勢: 在傳統資料庫技術方面比較薄弱,沒有經過時間的考驗 知識比較新,相應的支援人員和文件資源都比較少 應用範圍僅侷限在XML應用領域中 事實上,兩者的優劣並沒有統一的答案,而是和具體的應用相關。在開發格式較簡單、資料內容比格式更重要的應用時,XED是不錯的選擇,特別是在已有的傳統資料庫上要提供XML的訪問介面的情況下。相反,如果XML文件格式複雜,資料本身就有層次性關係,或是隻有XML資料的時候,就可以考慮NXD,因為它提供更好的效能,對XML標準有更完備的支援。另外,由於NXD在事務、資料恢復等傳統資料庫技術方面還未得到時間的檢驗,因此對資料安全要求較高的一些應用,如銀行、金融系統的資料庫,建立在傳統資料庫上的XED相對來說更有優勢。 NXD的現狀和前景 在3、4年前IT業界還在為應該選用NXD還是傳統資料庫爭的不可開交時候,就已經有一些公司悄悄地投入到NXD的開發中。到今天,已有了十多種NXD產品。IBM,Microsoft和Oracle等傳統資料庫廠商,也正在踏入NXD的領域。 但走在NXD隊伍前面的卻是一些"小"公司。PC Magazine在2002年6月份,針對市場上的4種主流產品做了詳細評測,包括效能、安全、易用性和對新技術的支援等。這4種產品是eXcelon的Extensible Information Server 3.1,Ipedo的Ipedo XML Database 3.0,NeoCore的NeoCore XMS 2.0和Software AG的Tamino XML Server 3.1,其中Ipedo XML Database 3.0以滿分5分獲"Editor Choice"獎。下面我們以Ipedo XML Database 3.0(IXD3)為例,窺探一下NXD技術的現狀。 IXD3支援 · 事務、併發控制,提供可靠的資料恢復機制 · 支援XPath和XQuery兩種查詢和In-memory的高速索引 · 基於圖形和命令列的使用者介面,並提供了各種工具,如匯入/匯出,備份等 · 支援XML文件的多版本控制 · 支援DOM、SOAP、COM、EJB和Java API多種資料庫訪問協議和開發介面 · 多種平臺:Windows,Linux和Solaris; 在去年7月份釋出的IXD3.1版本中,還提供基於ACL的安全控制、WEB_DAV等新功能,並集成了內容管理模組,為基於Web Service等新技術的應用提供了一整套解決方案。詳細介紹請參閱[2]。 可見,NXD發展到今天,技術已經日趨成熟,不僅提供傳統資料庫絕大部分功能,而且支援XML的最新技術標準,非常方便XML開發人員進行開發。最近在對Ipdeo XMLDB3.1、Tarmino3.0和Oracle9iR2內嵌的XMLDB的測試過程中,筆者發現NXD在開發XML應用方面不僅開發速度快,而且提供了更為豐富的API介面。同時我們也應該看到,NXD技術發展時間相對傳統資料庫來說還很短,技術基礎還不是很牢固。在某些XML應用方面,NXD並不具有比XED很明顯的優勢,特別是在對資料安全要求很高的資料庫應用領域。 但NXD在處理XML資料時擁有傳統資料庫所不能比擬的天生優勢,已促使越來越多的目光聚焦到它上面。隨著時間的推移,相信NXD也會得到檢驗。面對未來幾年巨大的市場份額,以及它每年200%的增長速度,我們沒有理由不為它的前景看好。

  • 中秋節和大豐收的關聯?
  • 家長報課外班孜孜不倦:對孩子是補充是負擔?你給孩子報了幾個課外班?