• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            woaidongmao

            文章均收錄自他人博客,但不喜標題前加-[轉貼],因其丑陋,見諒!~
            隨筆 - 1469, 文章 - 0, 評論 - 661, 引用 - 0
            數據加載中……

            Native XML數據庫技術詳解

            XML技術從誕生之日就預示了它輝煌的未來,特別是隨著近一、兩年Web Service的蓬勃發展,XML越來越多地活躍在數據交換和存儲領域。

            XML
            數據量指數級的增長,要求更有效的數據管理能力和更快、更精確的查詢。在傳統數據庫廠商宣布支持XML的同時,一種新的數據庫技術,Native XML DBMSNXD)也已嶄露頭角,打破了RDBMS傳統數據庫一統天下的局面,為數據庫技術的研究提供了一次良好的發展契機。

            本文將向您介紹XML和數據庫的關系,NXD的技術特點,傳統數據庫和NXD的比較和NXD的現狀和前景。

            XML和數據庫的關系



            XML
            是數據庫嗎?

            XML
            文檔具有"可自描述""無限嵌套""樹形結構"等特點,因此在某種意義上,一個XML文檔就是一個數據庫或其中的一張表。

            下面所示的XML文檔Student.xml,描述了一個學生的信息:學號、姓名等。我們可以很方便的將其對應于傳統RDBMS中一張二維表(table):標簽student為行,標簽idname等作為列。

            Student.xml


            <student>

            <id>19803001</id>

            <name>

            <lastname>Johnson</lastname>

            <firstname>Jack</firstname>

            </name>

            <email>jack@ipedo.com</email>

            ...

            </student>



            我們可以把相關的XML文檔放在一個目錄下,利用文件系統來管理,提供查詢、更改、增刪操作。為更好地支持XMLW3C還制定了一些相關技術,如:文檔模式(DTDXML Schema),查詢語言(XPathXQuery等),編程接口(DOMSAX等),來方便開發應用程序。

            但如果從更高的技術角度出發,就會發現,對XML文檔簡單的文件管理是遠遠不夠的:低效拇媧
            際酰惶峁攣瘛指椿ūVな蕕耐暾院鴕恢灤裕揮脅⒎⒖刂啤浦補ぞ叩取?

            數據庫在XML應用中的角色

            事實上,XML作為數據交換的標準,更著重于統一數據格式,而不是提供數據庫的特性。因此在XML應用中,數據庫作為數據管理的位置依然沒有改變。

            XML
            數據本身的樹形結構不同于關系模型中的二維表結構,這種差別反映在數據庫產品處理XML數據的技術上,形成兩大陣營:XML-Enabled DBMSXED)和Native XML DBMSNXD)

            XED
            是在原有數據庫基礎上擴展了XML支持模塊,完成XML數據和數據庫之間的格式轉換和傳輸。從存儲粒度上,可以把整個XML文檔作為RDBMS表中一行,或把XML文檔進行解析后,存儲到相應的表格中。為了支持W3C的一些XML操作標準,如XPathXED提供一些新的原語(如Oracle9iR2增加了一些數據包來操作XML數據等),并優化了XML處理模塊。

            NXD
            則出現在XML數據處理領域內,一般采用層次數據存儲模型,保持XML文檔的樹形結構,省掉了XML文檔和傳統數據庫的數據轉換過程。詳見2

            兩種文檔類型

            以數據為中心data-centric

            以數據為中心XML文檔著重于文檔中的數據,而非文檔格式,如航班信息、銷售定單、科學計算結果等。這種文檔的數據一般由機器產生,來源于傳統數據庫中的數據。主要應用在電子商務、ERPEAI等領域,集成不同數據源的數據,交換信息。

            以數據為中心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
            XQueryW3C推薦的針對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

            大多數NXDXML文檔的更新是通過其提供的API調用完成的,或者簡單的替換整個文檔來實現的。某些NXD還提供了可持久化的DOMPersistent DOMPDOM):在某種持久性存儲介質上實現了DOM模型,對PDOM所作的改變直接反映在數據庫中。由于PDOM樹是"現場"的,數據庫通常和應用程序在同一個進程空間。

            傳統數據庫與NXD的比較



            XED
            依靠傳統數據庫技術二三十年的積累,在與NXD競爭的前期,占據了XML應用市場的很大份額:在Intellor公司20013月份的調查報告中,XED的市場份額將近是NXD3倍,約12億美元。NXD雖然出場較晚,但市場份額增長速度卻非常強勁,在短短的3年中,已經由1999年的2,300萬美元發展到2001年的3.9億美元,并在今后兩年內將保持200%的增長率。目前,NXD主要應用在制造業、生物醫藥、電信等領域。

            通過對比XEDNXD技術,我們可以更清楚地看到二者的差別,特別是反映到應用領域。這一點對那些需要選擇數據庫開發XML應用的用戶非常有意義。

            XED
            存取XML數據的技術特點

            XED
            中這部分工作是由XML網關模塊完成,它處于用戶邏輯模塊和數據庫邏輯模塊之間,將傳統數據庫包裝起來,給用戶提供了一個透明的XML數據源。

            XED
            存取XML文檔面臨以下幾個技術難點:

            XML
            文檔模式和XED模式的映射為了把XML文檔存到XED中,我們必須將XML文檔的模式(DTDXML Schema)映射到數據庫模式。同樣,將數據從XED取出來重新組合成XML文檔,要完成相反的操作。這種轉化發生在元素(element),屬性(attribute)和文本(text)上。由于XED注重的是數據而非格式,所以在這個過程中,XML文檔的大部分物理結構(CDATA、實體等)和一部分邏輯結構(處理指令、注釋等)都被忽略,而數據被保存。這種轉換可能會丟失信息,一個XML文檔存到XED里后再取出來,可能會變成另外一種格式。相對于NXD提供的Round-trippingXED只能在數據層面實現信息的保留。

            XML數據的查詢支持

            由于XML文檔模式和XED模式很難保持一致,所以在存取過程中經常用XSLT完成轉換。但XSLT非常耗時,這會對查詢性能造成很大影響。所以較好的解決方法是XED提供一種查詢語言來返回XML文檔。

            目前已經有很多XED產品提供了這種語言,主要分三類:

            基于模板(Template-Based)的查詢

            這是目前RDBMS XED最流行的方法,將SQL語句嵌入到已寫好的XML文檔模板中,在實際查詢時候用結果替換。

            基于SQL(SQL-Based)的查詢

            通過在SQL語句的實現中增加對XML的支持,完成對XML數據的查詢。例如Oracle9iR2中,增加了XMLTYPE類型和一些新的函數包以支持XMLDB

            XML
            查詢

            包括XPathXQuery。與上面兩種不同,這種查詢是建立在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的現狀和前景



            34年前IT業界還在為應該選用NXD還是傳統數據庫爭的不可開交時候,就已經有一些公司悄悄地投入到NXD的開發中。到今天,已有了十多種NXD產品。IBMMicrosoftOracle等傳統數據庫廠商,也正在踏入NXD的領域。

            但走在NXD隊伍前面的卻是一些""公司。PC Magazine20026月份,針對市場上的4種主流產品做了詳細評測,包括性能、安全、易用性和對新技術的支持等。這4種產品是eXcelonExtensible Information Server 3.1IpedoIpedo XML Database 3.0NeoCoreNeoCore XMS 2.0Software AGTamino XML Server 3.1,其中Ipedo XML Database 3.0以滿分5分獲"Editor Choice"獎。下面我們以Ipedo XML Database 3.0IXD3)為例,窺探一下NXD技術的現狀。

            IXD3
            支持

            ·
            事務、并發控制,提供可靠的數據恢復機制

            ·
            支持XPathXQuery兩種查詢和In-memory的高速索引

            ·
            基于圖形和命令行的用戶界面,并提供了各種工具,如導入/導出,備份等

            ·
            支持XML文檔的多版本控制

            ·
            支持DOMSOAPCOMEJBJava API多種數據庫訪問協議和開發接口

            ·
            多種平臺:WindowsLinuxSolaris

            在去年7月份發布的IXD3.1版本中,還提供基于ACL的安全控制、WEB_DAV等新功能,并集成了內容管理模塊,為基于Web Service等新技術的應用提供了一整套解決方案。詳細介紹請參閱[2]

            可見,NXD發展到今天,技術已經日趨成熟,不僅提供傳統數據庫絕大部分功能,而且支持XML的最新技術標準,非常方便XML開發人員進行開發。最近在對Ipdeo XMLDB3.1Tarmino3.0Oracle9iR2內嵌的XMLDB的測試過程中,筆者發現NXD在開發XML應用方面不僅開發速度快,而且提供了更為豐富的API接口。

            同時我們也應該看到,NXD技術發展時間相對傳統數據庫來說還很短,技術基礎還不是很牢固。在某些XML應用方面,NXD并不具有比XED很明顯的優勢,特別是在對數據安全要求很高的數據庫應用領域。

            NXD在處理XML數據時擁有傳統數據庫所不能比擬的天生優勢,已促使越來越多的目光聚焦到它上面。隨著時間的推移,相信NXD也會得到檢驗。面對未來幾年巨大的市場份額,以及它每年200%的增長速度,我們沒有理由不為它的前景看好。

            參考資料:

            關于XML數據庫的資料:http://www.rpbourret.com/xml/XMLDBLinks.htm

            Oracle XML
            數據庫的資料:http://www.oracle.com/ip/index.html?xmldb_intro.html

            Ipedo
            數據庫的介紹:http://www.ipedo.com http://www.ipedo.com.cn

            關于作者

            朱亮,現任Ipedo中國(上海)研發中心高級軟件工程師,從事IPEDO Native XML數據庫的開發。對數據庫、XMLWebService等技術有較深研究,可以通過leon@ipedo.com與他聯系。

            posted on 2009-08-18 21:16 肥仔 閱讀(936) 評論(0)  編輯 收藏 引用 所屬分類: 數據庫

            69久久精品无码一区二区| 伊色综合久久之综合久久| 久久精品欧美日韩精品| 国产成人久久精品激情| 国产毛片久久久久久国产毛片| 精品久久久久久久久久久久久久久 | 国产高潮国产高潮久久久91 | 亚洲欧洲日产国码无码久久99| 国内精品久久人妻互换| 国内精品久久久久久久coent| 久久精品日日躁夜夜躁欧美| 精品蜜臀久久久久99网站| 青青草国产97免久久费观看| 成人综合伊人五月婷久久| 四虎亚洲国产成人久久精品| 亚洲国产精品久久久久久| 精品久久亚洲中文无码| 久久丝袜精品中文字幕| 2021精品国产综合久久| 亚洲欧美日韩中文久久| 无码精品久久一区二区三区| 91亚洲国产成人久久精品网址| 久久久国产99久久国产一| 国产一区二区精品久久凹凸| 久久天堂AV综合合色蜜桃网| 久久99精品久久久久久不卡| 久久精品国产亚洲AV嫖农村妇女| 麻豆久久久9性大片| 精品久久久久中文字| 国产精品久久久久久福利漫画 | 一本色道久久HEZYO无码| 性高湖久久久久久久久AAAAA| 99久久国产亚洲高清观看2024 | 精品久久人人爽天天玩人人妻| 日本久久久久久久久久| AA级片免费看视频久久| 婷婷伊人久久大香线蕉AV| 欧美喷潮久久久XXXXx| 久久99久久成人免费播放| 久久久精品国产| 一本综合久久国产二区|