XML資料庫中幾個容易混淆的概念

2021-04-03 01:04:12 字數 2293 閱讀 4613

當開發人員談及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資料庫方式,你都要非常理解每一種資料庫的特性,這才是最重要的。(zdnet china)

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 快取控制最常用的屬性,此外在響應...