當開發人員談及
xml資料庫時,他們往往指的是兩個
概念:儲存
xml資料的資料庫,利用
xml資料庫的dbms。絕大多數主要的dbms產品允許你無需改變現有的資料庫就可以整合
xml資料到程式中。現在讓我們討論一下
xml資料庫並**其特性。
原始的xml資料庫
乙個原始的xml資料庫(nxd)可以是很簡單,也可以是很複雜。我這樣定義乙個資料庫的概念:永久穩定資料的集合。在這樣的定義下,乙個nxd能在邏輯上儲存乙個xml文件。當xml:db initiative對乙個nxd還有更多的要求時,我想以上的定義也可以滿足。
以下的**行可以用作於乙個nxd:
〈?xml version=」1.0」?〉
〈diet〉
〈meal mealname=」breakfast」〉
〈item itemname=「toast」 unit=」slice」 quantity=「2」 /〉
〈item itemname=「bacon」 unit=」strip」 quantity=「2」 /〉
〈/meal〉
〈/diet〉
很顯然,資料的集合以xml格式儲存。如果它被存放在乙個flat檔案,它也會滿足我們對nxd的定義:永久穩定資料的集合。
乙個nxd使用相同的方式來儲存xml文件(比如:flat檔案,關聯式資料庫或級別資料庫,物件資料庫)。
flat檔案
乙個簡單的flat檔案是乙個最簡單的xml資料庫模型。作為一種「變種」,你可以儲存很多xml文件在乙個目錄層次。為了擴充套件前面的範例,看看以下的模型:
diets/
diets/atkins
day1.xml
day2.xml
day3.xml
day4.xml
diets/3daydiet
day1.xml
day2.xml
day3.xml
diets目錄包含了子目錄,並且每一子目錄很多xml的flat檔案。
關聯式資料庫
關聯式資料庫中的xml資料庫可以分為三種模型:coarse-grained(粗糙紋理型), medium-grained(中等級別紋理型),或 fine-grained(優良紋理型)。
coarse-grained(粗糙紋理型)模型在邏輯上與flat檔案模型有些不同。你可以使用乙個關聯式資料庫來存放每乙個xml文件。例如,以下的**可以存放乙個xml文件:
create table diets
( dietname varchar2(30),
xmldocument varchar2(32000)
)fine-grained(優良紋理型)模型將xml文件的每一成分對映到關聯式資料庫中。為了能夠將flat模型轉移到關聯式資料庫,你必須使用兩種改變方式。對以上的範例,你不能再使用子目錄名來代表diet的名稱,你也不能再使用檔案的名稱來傳遞diet的日期。表a顯示了diet的xml文件的檔案型別定義(dtd);表b顯示了將dtd對映到關係表的資料定義語言(ddl)。除此之外,表c還包括了相應的xml語法。
medium-grained(中等級別紋理型)模型介於coarse-grained(粗糙紋理)模型與 fine-grained(優良紋理)模型之間。使用這一模型,你可以將資訊儲存在meals 表的xml_items列中。
物件資料庫
你也可以通過使用乙個物件資料庫來執行nxd。有些物件資料庫是基於文件物件模型(dom),這允許xml與資料庫有緊密的結合。例如,一旦你提供乙個食物方面的dtd,你可以開始儲存這些食物,而不需要額外的配置。
資料庫管理系統
對於dbms,你可以有多種選擇。你可以通過使用開放程式如exist或ozone來建立自己的dbms,或者購買商業產品如tamino xml server。
絕大多數關聯式資料庫賣主都使他們的資料庫能夠使用xml,至少的,xml資料庫(xedbs)能夠返回xml文件查詢的結果。另外很多也可以儲存xml資料。例如,oracle 提供了乙個xml剖析器,乙個xpath引擎,乙個xslt處理器,乙個xmlsql工具,以及使用xml的方法。
所以,使用關聯式資料庫儲存的nxd和儲存xml資料的xedb有什麼區別呢?乙個nxd是基於xml文件概念而建立,而xedb與其它沒有過多的關聯。而且,很多規範適用於nxd,而dbms只適用標準的查詢和儲存資料的xml文件,比如xpath。
xml資料庫不是新概念
xml資料庫在邏輯觀點上不是新概念,雖然在邏輯執行上是新的。如果你想要執行乙個xml資料庫,你可以使用nxd,xedb,或者是二者的結合。然而,如果你所在的公司對現有的資料庫已經有一定的投資,你所做的第乙個調查就是核實你的dmbs賣主是否提供使用xml的工具。無論你使用的哪一種xml資料庫方式,你都要非常理解每一種資料庫的特性,這才是最重要的。
XML資料庫中幾個容易混淆的概念
當開發人員談及xml資料庫時,他們往往指的是兩個概念 儲存xml資料的資料庫,利用xml資料庫的dbms。絕大多數主要的dbms產品允許你無需改變現有的資料庫就可以整合xml資料到程式中。現在讓我們討論一下xml資料庫並 其特性。原始的xml資料庫 乙個原始的xml資料庫 nxd 可以是很簡單,也可...
PHP中幾個容易混淆的函式的區別
php中有一些函式的功能十分接近,容易造成混淆。雖然功能相當,但在細節問題上可能會有很大出入。所以,如果使用不當,可能會造成一些不必要的麻煩。以下整理了幾個日常使用中容易混淆的函式,以備查閱。1.echo print print r printf vprintf和sprintf echo用於輸出乙個...
HTTP快取中的幾個容易混淆的概念
在http快取中,有幾個容易混淆的概念,摘錄極客實踐的http協議學習教程 比如,伺服器設定 max age 5 但因為網路質量很糟糕,等瀏覽器收到響應報文已經 過去了 4 秒,那麼這個資源在客戶端就最多能夠再存 1 秒鐘,之後就會失效。max age 是 http 快取控制最常用的屬性,此外在響應...