明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

XML數(shù)據(jù)庫(kù)探討

[摘要]存儲(chǔ) 在資源庫(kù)中存儲(chǔ)信息很簡(jiǎn)單。如果希望存儲(chǔ)的信息已經(jīng)是 XML 格式,那么可以直接把它添加進(jìn)資源庫(kù)。這也許聽(tīng)起來(lái)不錯(cuò)。畢竟在不斷創(chuàng)新的 Web 服務(wù)世界中,將要到來(lái)的多數(shù)信息將使用嵌入在 SOAP 消息中的 XML 片段格式。然而,把 XML 文檔分解并保存到關(guān)系數(shù)據(jù)庫(kù)一點(diǎn)也不困難;當(dāng)開(kāi)始查看希...
存儲(chǔ)
在資源庫(kù)中存儲(chǔ)信息很簡(jiǎn)單。如果希望存儲(chǔ)的信息已經(jīng)是 XML 格式,那么可以直接把它添加進(jìn)資源庫(kù)。這也許聽(tīng)起來(lái)不錯(cuò)。畢竟在不斷創(chuàng)新的 Web 服務(wù)世界中,將要到來(lái)的多數(shù)信息將使用嵌入在 SOAP 消息中的 XML 片段格式。然而,把 XML 文檔分解并保存到關(guān)系數(shù)據(jù)庫(kù)一點(diǎn)也不困難;當(dāng)開(kāi)始查看希望支持的其它功能時(shí),這種作法會(huì)有一些好處。同樣許多本 Native-XML 數(shù)據(jù)庫(kù)供應(yīng)商所鼓吹的一個(gè)好處是 Native-XML 數(shù)據(jù)庫(kù)能夠存儲(chǔ)和查詢異種的文檔結(jié)構(gòu)。再說(shuō),對(duì)于結(jié)構(gòu)化數(shù)據(jù)問(wèn)題在于:您真的希望信息的結(jié)構(gòu)千變?nèi)f化嗎?對(duì)于使用 XML 文檔時(shí)具有的這種優(yōu)勢(shì),當(dāng)使用結(jié)構(gòu)化數(shù)據(jù)時(shí)就算不上是一種優(yōu)勢(shì)了。

檢索
初看上去,從 Native-XML 數(shù)據(jù)庫(kù)檢索信息似乎也是一個(gè)好處:以信息的原始 XML 格式檢索它,而不需任何附加的編碼,并且可以使信息以一定的樣式顯示。然而,結(jié)構(gòu)化數(shù)據(jù)檢索的性質(zhì)使得這種明顯的優(yōu)勢(shì)實(shí)際上變成了劣勢(shì)。如果信息更新量巨大(例如,接收單個(gè)數(shù)兆字節(jié)大小 XML 文檔的股票系統(tǒng)的夜間更新),一些 Native-XML 平臺(tái)需要從數(shù)據(jù)庫(kù)返回整個(gè)文檔 — 即使您只對(duì)文檔的很小一部分感興趣(譬如某個(gè)特定股票的變化過(guò)程)。 其它 Native-XML 平臺(tái)在將 XML 文檔保存到資源庫(kù)之前進(jìn)行分解,但是如果具有復(fù)雜的文檔結(jié)構(gòu)(正如許多結(jié)構(gòu)化 XML 文檔傾向于具有這種結(jié)構(gòu))時(shí),這樣做就顯得有點(diǎn)笨拙。無(wú)論如何,許多關(guān)系數(shù)據(jù)庫(kù)供應(yīng)商目前正在實(shí)現(xiàn)瘦 XML 序列化器包裝器以便支持在需要時(shí)從關(guān)系數(shù)據(jù)生成XML 文檔。這使得程序員可以容易地獲得完成特定任務(wù)所恰好需要的信息,這些信息具有某種格式,這種格式具有所需樣式、或者可以發(fā)送給其它能識(shí)別 XML 的目標(biāo)。

搜索
搜索 Native-XML 數(shù)據(jù)庫(kù)有兩種常規(guī)解決方法可用,選取哪種取決于數(shù)據(jù)庫(kù)供應(yīng)商。一些 Native-XML 數(shù)據(jù)庫(kù)需要選擇哪些元素或?qū)傩杂糜谒饕,如同在關(guān)系數(shù)據(jù)庫(kù)里選擇哪些列用于索引。然后,這個(gè)信息被用于建立索引,以便搜索機(jī)制能用來(lái)快速定位相匹配的文檔。在文檔被添加到資源庫(kù)時(shí),其它 Native-XML 數(shù)據(jù)庫(kù)就是對(duì)文檔內(nèi)的所有信息建索引,可以想象這將導(dǎo)致存儲(chǔ)空間需求飛速上升(想象一下在關(guān)系數(shù)據(jù)庫(kù)中對(duì)所有列建索引。S捎谶@些數(shù)據(jù)庫(kù)以文檔為中心的性質(zhì),搜索將返回一組 XML 文檔;然后如有必要,調(diào)用程序還得對(duì)這些文檔做進(jìn)一步處理。 很遺憾的是,這意味著更復(fù)雜的搜索,是很不方便的。例如,要找出那個(gè)對(duì)某一特定部分提交最高訂單的顧客,以為在中間環(huán)節(jié)要處理很多事情。在指向關(guān)系方面 Native-XML 數(shù)據(jù)庫(kù)做的也不好。結(jié)果是,如果數(shù)據(jù)結(jié)構(gòu)不是純粹層次結(jié)構(gòu)的,則對(duì)您而言,Native-XML 數(shù)據(jù)庫(kù)就不是恰當(dāng)?shù)慕鉀Q方案。大多數(shù) Native-XML 數(shù)據(jù)庫(kù)具有這一功效強(qiáng)大的特性 — 執(zhí)行完善的全文搜索的能力,包括整個(gè)同義字支持、字根(匹配一個(gè)字的所有形式:現(xiàn)在時(shí)、過(guò)去時(shí)和進(jìn)行時(shí))以及相近搜索(DTD NEAR XML Schema)。此外,在使用傳統(tǒng)文檔時(shí),這些特性是不可缺少的,其中上下文在含意上起著重要的作用,而當(dāng)使用結(jié)構(gòu)化數(shù)據(jù)時(shí),就遠(yuǎn)沒(méi)有那么重要了。
聚合
使用關(guān)系數(shù)據(jù)工作時(shí),聚合是所需要的最重要功能之一,事實(shí)上它處于聯(lián)機(jī)分析處理的核心(OLAP)。Native-XML 數(shù)據(jù)庫(kù)在執(zhí)行聚合任務(wù)方面表現(xiàn)得特別差。因?yàn)樾畔⒁幢槐3衷谖臋n這一層,要么一般被分割成節(jié)點(diǎn),所以把信息匯集起來(lái)以及集中處理它(求和、平均數(shù)等等)就很困難,此外,還必須在中間環(huán)節(jié)增加附加代碼。如果結(jié)構(gòu)化數(shù)據(jù)應(yīng)用程序需要任何一種分析處理 — 我打賭它會(huì)需要 — Native-XML 數(shù)據(jù)庫(kù)將會(huì)使您失望。
 
    
相關(guān)主題在前面已經(jīng)發(fā)了兩篇文章了。雖然也有不少人閱讀(心中竊喜),卻罕有評(píng)論。甚感遺憾。不管是西紅柿還是臭雞蛋,我都喜歡。很多東西,都是越辨越明的。下面接著寫(xiě)我的一些想法(研究成果說(shuō)不上,就當(dāng)想法吧):

    據(jù)我分析,現(xiàn)有的native-XML數(shù)據(jù)庫(kù),又過(guò)分強(qiáng)調(diào)了對(duì)XML文檔的處理,而忽視了數(shù)據(jù)庫(kù)本身的作用:對(duì)客觀事物的描述和存儲(chǔ)。所以在處理傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)所涉及的業(yè)務(wù)領(lǐng)域,并沒(méi)有顯示出多大的優(yōu)勢(shì),反而會(huì)有這樣或者那樣的不足。
   針對(duì)以上的敘述,計(jì)劃中的XMLDB應(yīng)該首要實(shí)現(xiàn)一下目標(biāo)(彌補(bǔ)普通數(shù)據(jù)庫(kù)的不足和解決一般native-XML數(shù)據(jù)庫(kù)的不足):
基于描述的數(shù)據(jù)庫(kù)設(shè)計(jì),不同于一般數(shù)據(jù)庫(kù)的基于數(shù)據(jù)的數(shù)據(jù)庫(kù)設(shè)計(jì),或者NXD數(shù)據(jù)庫(kù)基于文檔的的數(shù)據(jù)庫(kù)設(shè)計(jì),新的XMLDB,將是基于描述的數(shù)據(jù)庫(kù)設(shè)計(jì),即,基于對(duì)客觀事物的描述,充分發(fā)揮XML文檔在事物描述上的優(yōu)勢(shì),以接近自然語(yǔ)言的方式來(lái)存儲(chǔ)事物。 
增加版本的概念。能夠讓不同版本的數(shù)據(jù)文件協(xié)同工作。 
數(shù)據(jù)分布式存儲(chǔ)和強(qiáng)大的聚合能力。最小的儲(chǔ)存單位不是XML 儲(chǔ)存單元,而是XML DB fragment,可以把同一個(gè)表的內(nèi)容以不同的方式存貯在不同的物理位置,同時(shí)對(duì)用戶透明,利用轉(zhuǎn)換器和聚合器,對(duì)用戶來(lái)說(shuō)還是一個(gè)完整的XMLDBData對(duì)象。 
基于多線程的數(shù)據(jù)檢索能力,能夠比較迅速的找到所需要的數(shù)據(jù)內(nèi)容。利用多線程,可以對(duì)一個(gè)表的多個(gè)XMLDB fragment同時(shí)進(jìn)行檢索,然后通過(guò)聚合器,聚合成一個(gè)完整的XMLDBData對(duì)象,實(shí)現(xiàn)數(shù)據(jù)的快速檢索。 
支持基于XML的查詢語(yǔ)言(XQuery?maybe yes,maybe no)。先實(shí)現(xiàn)一個(gè)獨(dú)有的,基于XML的查詢方式。在這個(gè)基礎(chǔ)上,通過(guò)轉(zhuǎn)化器,可以同時(shí)提供對(duì)XQuery,甚至SQL語(yǔ)言的支持 
支持傳統(tǒng)數(shù)據(jù)庫(kù)里一些基本的概念和功能,比如數(shù)據(jù)同步,鎖的操作,以及事務(wù)的操作。這些都是數(shù)據(jù)庫(kù)里面一些很經(jīng)典也很重要的概念,是一個(gè)完整的數(shù)據(jù)庫(kù)所不可缺少的一部分,應(yīng)該支持和實(shí)現(xiàn)。 
提供完備的Adapter機(jī)制,支持對(duì)傳統(tǒng)SQL語(yǔ)言操作方式的支持。 
提供用戶自定義函數(shù)功能。先實(shí)現(xiàn)用戶使用Java語(yǔ)言自定義函數(shù),技術(shù)成熟后,提供腳本語(yǔ)言的支持。 
提供多種連接方式和安全解決方案。提供https,Soap等多種網(wǎng)絡(luò)連接方式,并且數(shù)據(jù)庫(kù)本身是一個(gè)開(kāi)放的接口,可以加載不同的安全解決方案。 
提供豐富的連接和調(diào)試工具(屬于可選目標(biāo),除了命令行調(diào)試工具外,其他的將不包括在核心組件中)