專利名稱:一種基于xml技術(shù)的異構(gòu)數(shù)據(jù)庫存取方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種基于XML技術(shù)的異構(gòu)數(shù)據(jù)庫存取方法,主要是基于XML技術(shù)的異構(gòu)數(shù)據(jù)庫數(shù)據(jù)雙向存取模型的方法。
背景技術(shù):
各種不同結(jié)構(gòu)的數(shù)據(jù)庫系統(tǒng)及各種格式的數(shù)據(jù)之間經(jīng)常需要交互轉(zhuǎn)換.若為每兩個存儲格式構(gòu)筑轉(zhuǎn)換應(yīng)用,并針對不同格式數(shù)據(jù)進(jìn)行開發(fā),其復(fù)雜度呈指數(shù)增長.專門為Web應(yīng)用程序而設(shè)計的XML (ExtensibleMarkup Language),作為一種可擴展性標(biāo)記語言,其自描述性使其較好地適用于不同應(yīng)用間的數(shù)據(jù)交換,而且這種交換是不以預(yù)先規(guī)定一組數(shù)據(jù)結(jié)構(gòu)定義為前提.XML由于具有數(shù)據(jù)描述和數(shù)據(jù)傳送能力,有很強的開放性,使其成為不同應(yīng)用系統(tǒng)之間的數(shù)據(jù)接口標(biāo)準(zhǔn).因此,可以以XML為中性載體進(jìn)行數(shù)據(jù)交換和信息共享.同時,基于XML的數(shù)據(jù)交換,可實現(xiàn)數(shù)據(jù)庫的XML數(shù)據(jù)雙向存取,真正實現(xiàn)基于XML的分布式數(shù)據(jù)交換與信息共享.“以關(guān)系數(shù)據(jù)為存貯手段,以XML為交換載體”的數(shù)據(jù)管理和開發(fā)模式就成為一種趨勢.
發(fā)明內(nèi)容
基于上述問題,特此發(fā)明一種基于XML技術(shù)的異構(gòu)數(shù)據(jù)庫存取方法;數(shù)據(jù)庫訪問技術(shù)大多采用ODBC,JDBC, OLEDB等數(shù)據(jù)庫接口和ADO等數(shù)據(jù)訪問技術(shù),但異構(gòu)數(shù)據(jù)庫結(jié)構(gòu)的差別和接口的不一致性,使得開發(fā)人員不得不針對不同的關(guān)系數(shù)據(jù)進(jìn)行相互的轉(zhuǎn)換,而XML的可擴展性、平臺無關(guān)性、開放性、自描述性等特點使其成為不同應(yīng)用之間的數(shù)據(jù)接口標(biāo)準(zhǔn),是所有信息的中間層表示,非常適用于異構(gòu)系統(tǒng)之間的數(shù)據(jù)共享和交換.而各種大型數(shù)據(jù)庫如0ra2cle, DB2, SQL Server等從各方面提供了對XML的支持,能夠?qū)崿F(xiàn)關(guān)系數(shù)據(jù)到XML文檔的雙向存取模型;各種開發(fā)語言C#,JAVA, DELPH I等也都提供了對XML的支持,采用XML文檔作為異構(gòu)數(shù)據(jù)庫的中介,建立基于XML技術(shù)的異構(gòu)數(shù)據(jù)庫雙向存取和開發(fā)模型。基于XML的數(shù)據(jù)雙向存取模型其結(jié)構(gòu)分為3層:1.用大型數(shù)據(jù)庫存放關(guān)系數(shù)據(jù),也可以為異構(gòu)數(shù)據(jù),通過各關(guān)系數(shù)據(jù)庫對XML的支持,提供將關(guān)系數(shù)據(jù)轉(zhuǎn)換為XML文檔,并將XML文檔數(shù)據(jù)讀入數(shù)據(jù)庫的雙向訪問能力。2.中間層為XML文檔,使得不同數(shù)據(jù)庫的關(guān)系數(shù)據(jù)在此層整合,取得統(tǒng)一標(biāo)準(zhǔn)。3.應(yīng)用層可以使用和生成統(tǒng)一的XML文檔,使基于XML的業(yè)務(wù)數(shù)據(jù)交換成為可能。即可以在XML文檔上直接加上CSS,XSL等樣式信息在瀏覽器中顯示,也可以通過DOM,SAX等編程接口或AD0.NET等技術(shù)將XML數(shù)據(jù)同應(yīng)用程序集成,進(jìn)而使之同現(xiàn)有的業(yè)務(wù)規(guī)則相結(jié)合.開發(fā)基于XML的動態(tài)應(yīng)用,如動態(tài)信息發(fā)布、動態(tài)數(shù)據(jù)交換等。具體實施方法各種大型的數(shù)據(jù)庫系統(tǒng)都支持和XML文檔的雙向交互,SQL Server完全支持XDR(XML數(shù)據(jù)簡化)架構(gòu),具有映射XML元素和屬性到表和字段中的功能.其具備多種訪問XML文檔的方法,并可與XML文檔進(jìn)行雙向交互.即可在URL中執(zhí)行的查詢可以直接訪問SQL Server生成XML文檔,也可以使用SELECT命令和FOR XML關(guān)鍵字,通過調(diào)用一個存儲過程或是通過使用XPath查詢來取得XML數(shù)據(jù)。1.SQL Server中實現(xiàn)關(guān)系數(shù)據(jù)和XML的雙向交互;(I).讀取關(guān)系數(shù)據(jù)生成XML文檔;用FOR XML子句將數(shù)據(jù)讀取成XML格式,該方法從SQL Server表中返回數(shù)據(jù),可以將其看作XML數(shù)據(jù)它有RAW,AUTO和EXPLICIT 3種模式,以不同的格式來返回XML.FOR XML語句不必再返回一個rowset,只在客戶端或中間層將它轉(zhuǎn)換成XML 了.
(2).從XML文檔中解析數(shù)據(jù)并生成關(guān)系數(shù)據(jù);SQL Server的0PENXML函數(shù),可以像操作一個表那樣來運用XML數(shù)據(jù),可以將它們轉(zhuǎn)換成內(nèi)存中的一個rowset.它將XML解析成一個數(shù)據(jù)樹,并將數(shù)據(jù)的句柄傳遞到0PENXML函數(shù),即可操作數(shù)據(jù),進(jìn)行查詢、插入、修改等.在處理完XML數(shù)據(jù)后,調(diào)用sp_XML_removedocument函數(shù)將XML數(shù)據(jù)從內(nèi)存中刪除。2.高級語言對XML文檔編程;各種編程語言都提供讀寫XML文檔的能力,.Net框架中主要使用相關(guān)的類和XML文檔進(jìn)行讀寫.這些類包括與讀相關(guān)的類以及與寫相關(guān)的類.下面實例中創(chuàng)建讀取相應(yīng)XML文檔的XmlTextReader對象和向XML文檔寫入數(shù)據(jù)的XmlTextffriter對象,并使用對象的方法讀出XML文檔的數(shù)據(jù)和對XML文檔寫數(shù)據(jù).
(I).用Xm ITextReader類的對象來讀取該XML文檔;XmlTextReader textReader = new XmlTextRead2er ( "C: \books.XML");
textReader.Read ( ) ; / /節(jié)點非空則執(zhí)行循環(huán)體 while ( textReader.Read ())
{
textReader.MoveToElement ();
/ /讀取該元素的屬性并顯示在控制臺中Console.WriteLine ( ” Name: " + textReader.Name);
Console.WriteL ine ( " BaseUR 1: " + textReader.BaselIR I) ; Console.W riteL ine ( "Local Name: 〃 + tex2 tReader.LocalName);
}(2).用Xm ITextffr iter類的對象向XML文檔寫數(shù)據(jù);XmlTextWriter textWriter = new XmlTextW riter ("C: \myXmFile.XML〃 , null);
/ /開始寫過程,調(diào)用W riteStartDocument方法 textWriter.W ri teStartDocument ();
/ /寫入說明
mment ( 〃 First Comment XmlTextW riter Samp Ie Examp le");
textWriter.WriteComment ( 〃 myXmlFile.XML inroot dir");
/ /寫入元素
textWriter.W riteStartElement( "Name", 〃 〃 ); textWriter.W riteString( 〃 Student"); textWriter.W riteEndElement ();
/ /寫文檔結(jié)束
textWriter.W riteEndDocument ();針對異構(gòu)數(shù)據(jù)庫間數(shù)據(jù)交互轉(zhuǎn)換復(fù)雜的問題, 通過異構(gòu)數(shù)據(jù)庫的數(shù)據(jù)訪問,分析了基于XML技術(shù)的異構(gòu)數(shù)據(jù)庫數(shù)據(jù)雙向存取模型,給出了 SQL Server數(shù)據(jù)庫和.NET環(huán)境下的實現(xiàn)實例.結(jié)果表明,基于XML技術(shù)的異構(gòu)數(shù)據(jù)庫可實現(xiàn)數(shù)據(jù)共享,并減少了不必要的開支。
權(quán)利要求
1.一種基于XML技術(shù)的異構(gòu)數(shù)據(jù)庫存取方法:該方法主要是基于XML技術(shù)的異構(gòu)數(shù)據(jù)庫數(shù)據(jù)雙向存取模型的方法。
2.根據(jù)權(quán)利要求1的基于XML技術(shù)的異構(gòu)數(shù)據(jù)庫存取方法,此方法的基于XML的數(shù)據(jù)雙向存取模型其結(jié)構(gòu)分為三層;首先用大型數(shù)據(jù)庫存放關(guān)系數(shù)據(jù),也可以為異構(gòu)數(shù)據(jù),通過各關(guān)系數(shù)據(jù)庫對XML的支持,提供將關(guān)系數(shù)據(jù)轉(zhuǎn)換為XML文檔,并將XML文檔數(shù)據(jù)讀入數(shù)據(jù)庫的雙向訪問能力;第二中間層為XML文檔,使得不同數(shù)據(jù)庫的關(guān)系數(shù)據(jù)在此層整合,取得統(tǒng)一標(biāo)準(zhǔn)。最后應(yīng)用層可以使用和生成統(tǒng)一的XML文檔,使基于XML的業(yè)務(wù)數(shù)據(jù)交換成為可能。
全文摘要
一種基于XML技術(shù)的異構(gòu)數(shù)據(jù)庫存取方法XML已經(jīng)廣泛運用于OLAP、OLTP、數(shù)據(jù)倉庫、數(shù)據(jù)挖掘、移動計算、嵌入式計算和Web應(yīng)用等多方面.各種異構(gòu)應(yīng)用系統(tǒng)之間存在著大量的數(shù)據(jù)交換,使用XML技術(shù)實現(xiàn)異構(gòu)數(shù)據(jù)庫同XML這種統(tǒng)一的信息交換標(biāo)準(zhǔn)雙向轉(zhuǎn)換,并基于XML文檔進(jìn)行Web應(yīng)用等開發(fā),可以最大限度地減少不必要的開支,實現(xiàn)數(shù)據(jù)的共享.XML同數(shù)據(jù)庫相結(jié)合將隨著XML技術(shù)的發(fā)展,會實現(xiàn)更強大的功能。
文檔編號G06F17/30GK103092872SQ20111034597
公開日2013年5月8日 申請日期2011年11月1日 優(yōu)先權(quán)日2011年11月1日
發(fā)明者楊際榮 申請人:鎮(zhèn)江華揚信息科技有限公司