穎科XML2DB白皮書(shū)
InfOnCall XML2DB
2001/12/05
1.術(shù)語(yǔ)
Map, XML2DB, DTD,
2.簡(jiǎn)介
InfOnCall XML2DB實(shí)現(xiàn)了從XML數(shù)據(jù)到傳統(tǒng)關(guān)系數(shù)據(jù)庫(kù)的轉(zhuǎn)化。XML2DB的主要原理是通過(guò)一個(gè)map文件來(lái)描述數(shù)據(jù)庫(kù)中的域或表和XML樹(shù)型結(jié)構(gòu)之間的對(duì)應(yīng)關(guān)系。在作XML數(shù)據(jù)到Database之間轉(zhuǎn)化時(shí)通過(guò)對(duì)map文件的分析為XML中的每一個(gè)節(jié)點(diǎn)找到對(duì)應(yīng)的字段或表。這種轉(zhuǎn)化工具支持多種后臺(tái)數(shù)據(jù)庫(kù)類型,可以采用的數(shù)據(jù)庫(kù)包括Oracle,DB2等。
3.背景
InfOnCall的DB2XML產(chǎn)品已經(jīng)實(shí)現(xiàn)了從關(guān)系數(shù)據(jù)庫(kù)中得到結(jié)構(gòu)化的XML文檔,而且DB2XML工具還提供了非常靈活、易于使用的樹(shù)型結(jié)構(gòu)查詢工具,讓你能夠從復(fù)雜的數(shù)據(jù)中選取出你所需要的數(shù)據(jù),并且非常方便地發(fā)布為和應(yīng)用有關(guān)的XML或者HTML格式的數(shù)據(jù)。
但是在很多場(chǎng)合下,比如用戶信息的輸入以及數(shù)據(jù)存儲(chǔ)還必須依賴于數(shù)據(jù)庫(kù)來(lái)完成。也就是需要建立XML和數(shù)據(jù)庫(kù)之間的雙向轉(zhuǎn)換,因此還必須提供從XML到數(shù)據(jù)庫(kù)的轉(zhuǎn)換工具。InfOnCall的XML2DB產(chǎn)品就是穎科公司為滿足該需求而開(kāi)發(fā)的最新產(chǎn)品。InfOnCall的XML2DB產(chǎn)品能夠?qū)ML文檔中的層次結(jié)構(gòu)數(shù)據(jù)和數(shù)據(jù)庫(kù)之間建立相互的映射關(guān)系,并且通過(guò)該映射關(guān)系將實(shí)際的XML文檔數(shù)據(jù)導(dǎo)入到目標(biāo)數(shù)據(jù)庫(kù)中。
4.系統(tǒng)架構(gòu)
InfOnCall XML2DB軟件包包括了兩個(gè)圖形化工具(Map Generator和Parser Engine)和一個(gè)提供給Java應(yīng)用開(kāi)發(fā)人員的XML2DB開(kāi)發(fā)包。
其中Map Generator的功能如下:首先用戶只須提供一個(gè)描述作為數(shù)據(jù)源的XML的DTD(文檔類型定義文件)。Map Generator可以從根節(jié)點(diǎn)開(kāi)始對(duì)DTD進(jìn)行分析,并得到XML父節(jié)點(diǎn)和子節(jié)點(diǎn)元素之間的各種對(duì)應(yīng)關(guān)系(一對(duì)一或一對(duì)多)。對(duì)于其中一對(duì)一的關(guān)系則將相應(yīng)子元素 對(duì)應(yīng)于表中的字段,而對(duì)于其中的一對(duì)多關(guān)系則將相應(yīng)的子元素對(duì)應(yīng)于數(shù)據(jù)庫(kù)中的一張表。并將分析結(jié)果保存到一個(gè)用于指導(dǎo)Parser Engine工作的Map文件。并產(chǎn)生一個(gè).sql文檔用于提示用戶可能需要?jiǎng)?chuàng)建的表。
Parser Engine的實(shí)質(zhì)是一個(gè)Map文件的解釋器。它的工作就是對(duì)Map文件進(jìn)行分析根據(jù)Map文件中的標(biāo)簽執(zhí)行相應(yīng)的具體操作。作為結(jié)果,它將整個(gè)XML中的數(shù)據(jù)添加到數(shù)據(jù)庫(kù)中的一張或多張表中。
除了直接采用軟件包中包括的兩個(gè)圖形化工具以外,用戶還可以根據(jù)自己的需要用xml2db.jar提供的接口來(lái)開(kāi)發(fā)自己的應(yīng)用程序、中間件或Javabean組件等。
5.產(chǎn)品特點(diǎn)
與其他同類產(chǎn)品相比,InfOnCall的XML2DB工具更完整的實(shí)現(xiàn)了XML到數(shù)據(jù)庫(kù)之間的轉(zhuǎn)化。這種完整性主要體現(xiàn)在以下方面。
6.應(yīng)用前景
由于XML2DB工具的運(yùn)行獨(dú)立于不同的數(shù)據(jù)庫(kù)平臺(tái),也獨(dú)立于不同的數(shù)據(jù)庫(kù)版本,比如在遇到數(shù)據(jù)庫(kù)要進(jìn)行升級(jí)或數(shù)據(jù)轉(zhuǎn)移的情況時(shí),如果原有的數(shù)據(jù)不能直接轉(zhuǎn)移到目標(biāo)數(shù)據(jù)庫(kù)中,這時(shí)XML2DB和DB2XML工具將提供你完整的解決方案:通過(guò)DB2XML工具可以將需要轉(zhuǎn)移的數(shù)據(jù)表格轉(zhuǎn)換到中間的XML文檔,然后再通過(guò)XML2DB工具轉(zhuǎn)換到目標(biāo)的數(shù)據(jù)庫(kù)中。
目前很多的網(wǎng)站將基于XML或者XHTML,在信息發(fā)布時(shí)通過(guò)XML的實(shí)現(xiàn)已經(jīng)比較成熟的方便(如通過(guò)DB2XML和XSL等)。但是同樣還存在信息傳遞和交互的需要。如果是中間的信息交互,可以交給應(yīng)用程序去處理,但是如果是需要后臺(tái)記錄和存儲(chǔ)的數(shù)據(jù),比如用戶信息、登記表格等,如果按照傳統(tǒng)的處理方法效率不是很高,尤其是隨著Xforms標(biāo)準(zhǔn)的完善,交互的信息或者表但格式本身就遵循XML規(guī)格,這時(shí)利用InfOnCall的XML2DB工具就能快速有效地解決從XML到數(shù)據(jù)庫(kù)后臺(tái)的存儲(chǔ)。對(duì)于大型的靜態(tài)文檔,可以通過(guò)可視的圖形界面來(lái)完成轉(zhuǎn)換,而對(duì)于動(dòng)態(tài)的數(shù)據(jù),可以利用xml2db.jar開(kāi)發(fā)包來(lái)進(jìn)行應(yīng)用開(kāi)發(fā),實(shí)現(xiàn)自動(dòng)的數(shù)據(jù)轉(zhuǎn)換。
InfOnCall的XML2DB工具使得你能以可視化和可配置的方式來(lái)定義XML和數(shù)據(jù)庫(kù)之間的映射方式。該產(chǎn)品將和InfOnCall的DB2XML一起為用戶提供完成的數(shù)據(jù)庫(kù)和XML的解決方案,提供雙向的轉(zhuǎn)換,既解決基于XML的發(fā)布,又能提供從XML數(shù)據(jù)到數(shù)據(jù)庫(kù)的存儲(chǔ)機(jī)制,因此該系列產(chǎn)品將是數(shù)據(jù)庫(kù)整合、交換以及新一代Web發(fā)布的核心工具。你可以通過(guò)它在任何的平臺(tái)中連接到任何存在的數(shù)據(jù)庫(kù),提供多個(gè)數(shù)據(jù)源的數(shù)據(jù)獲取以及從XML數(shù)據(jù)到不同數(shù)據(jù)庫(kù)的轉(zhuǎn)換。
穎科公司供稿 CTI論壇編輯