□馬東波
分布式數(shù)據(jù)庫(kù)是信息時(shí)代下數(shù)據(jù)庫(kù)技術(shù)與計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的融合產(chǎn)物,現(xiàn)階段發(fā)展下主要是為行業(yè)發(fā)展提供相應(yīng)的互聯(lián)網(wǎng)數(shù)據(jù),實(shí)現(xiàn)數(shù)據(jù)的并行計(jì)算、分布策略以及數(shù)據(jù)分片等等,目前分布式數(shù)據(jù)庫(kù)早已經(jīng)脫離數(shù)倉(cāng)領(lǐng)域的單純應(yīng)用,在大數(shù)據(jù)背景下,數(shù)據(jù)種類(lèi)復(fù)雜多樣,各種數(shù)據(jù)在互聯(lián)網(wǎng)中海量共存,數(shù)據(jù)管理以及分析成為社會(huì)發(fā)展的重要課題,也是現(xiàn)階段行業(yè)發(fā)展中各公司競(jìng)爭(zhēng)力的重要戰(zhàn)線(xiàn),由于數(shù)據(jù)量龐大以及種類(lèi)多樣,這就需要數(shù)據(jù)庫(kù)能夠?qū)崿F(xiàn)實(shí)時(shí)交互,發(fā)掘數(shù)據(jù)中隱藏的商業(yè)價(jià)值。分布式數(shù)據(jù)庫(kù)的數(shù)據(jù)交換實(shí)現(xiàn),實(shí)際上就是對(duì)數(shù)據(jù)的實(shí)施交互性要求,無(wú)論是對(duì)集團(tuán)性企業(yè)還是行業(yè)企業(yè)競(jìng)爭(zhēng)而言,由于各部門(mén)以及運(yùn)營(yíng)方向不同,分層式數(shù)據(jù)庫(kù)系統(tǒng)以及數(shù)據(jù)信息也是不同的,所以需要在網(wǎng)絡(luò)中實(shí)現(xiàn)數(shù)據(jù)的處理以及交換,從而挖掘數(shù)據(jù)中潛在的商業(yè)價(jià)值以及決策信息。
ORACLE對(duì)分布式數(shù)據(jù)庫(kù)環(huán)境的要求不大,既能夠在同構(gòu)也能夠在異構(gòu)分布式數(shù)據(jù)庫(kù)環(huán)境中實(shí)現(xiàn),能夠支持應(yīng)用程序于本地?cái)?shù)據(jù)庫(kù)連接之后,同時(shí)實(shí)現(xiàn)對(duì)遠(yuǎn)程數(shù)據(jù)庫(kù)以及本地?cái)?shù)據(jù)庫(kù)的訪(fǎng)問(wèn),這樣就能夠?qū)⒈镜財(cái)?shù)據(jù)庫(kù)與遠(yuǎn)程數(shù)據(jù)庫(kù)看成是異構(gòu)分布式數(shù)據(jù)庫(kù)環(huán)境,可以通過(guò)DBLINK實(shí)現(xiàn)本地?cái)?shù)據(jù)庫(kù)與遠(yuǎn)程數(shù)據(jù)之間的連接,之后就可以實(shí)現(xiàn)應(yīng)用程序在遠(yuǎn)程數(shù)據(jù)庫(kù)中對(duì)表數(shù)據(jù)的透明訪(fǎng)問(wèn),就省略了本地?cái)?shù)據(jù)庫(kù)與遠(yuǎn)程數(shù)據(jù)庫(kù)的物理連接環(huán)節(jié)。統(tǒng)一分布式數(shù)據(jù)庫(kù)就是所有數(shù)據(jù)庫(kù)為ORACLE,而異構(gòu)分布式數(shù)據(jù)庫(kù)則是所有數(shù)據(jù)庫(kù)中存在非ORACLE數(shù)據(jù)庫(kù),無(wú)論是哪一種分布式數(shù)據(jù)庫(kù)環(huán)境都能夠?qū)崿F(xiàn)數(shù)據(jù)庫(kù)之間的訪(fǎng)問(wèn),同構(gòu)分布式數(shù)據(jù)里直接利用DBLINK,而異構(gòu)分層式數(shù)據(jù)庫(kù)則是通過(guò)透明網(wǎng)關(guān)組件對(duì)非ORACLE數(shù)據(jù)庫(kù)訪(fǎng)問(wèn),實(shí)現(xiàn)非ORACLE數(shù)據(jù)庫(kù)與ORACLE數(shù)據(jù)庫(kù)之間的連接,ORACLE到非ORACLE數(shù)據(jù)庫(kù)通過(guò)DBLINK連接透明網(wǎng)關(guān)組件,這樣一來(lái)就能夠?qū)崿F(xiàn)多個(gè)數(shù)據(jù)庫(kù)之間的透明訪(fǎng)問(wèn)。若是基于元數(shù)據(jù)的數(shù)據(jù)庫(kù)構(gòu)建,通過(guò)數(shù)據(jù)交換系統(tǒng)的設(shè)計(jì),通過(guò)對(duì)多個(gè)DSS的整合,通過(guò)統(tǒng)一的數(shù)據(jù)交換服務(wù)器,將多個(gè)分布式元數(shù)據(jù)服務(wù)器中的元數(shù)據(jù)形成統(tǒng)一的元數(shù)據(jù)庫(kù),這樣一來(lái)在查詢(xún)的時(shí)候就能夠在多個(gè)元數(shù)據(jù)庫(kù)實(shí)現(xiàn)數(shù)據(jù)的交換,通過(guò)DSE服務(wù)器之間的數(shù)據(jù)查詢(xún),客戶(hù)導(dǎo)向數(shù)據(jù)服務(wù)器訪(fǎng)問(wèn)和數(shù)據(jù)下載。
(一)數(shù)據(jù)交換技術(shù)的方法。分層式數(shù)據(jù)庫(kù)的數(shù)據(jù)交換方法一共有兩種,一是中間件方法,通過(guò)在兩個(gè)數(shù)據(jù)庫(kù)之間構(gòu)建一個(gè)中間數(shù)據(jù)庫(kù),然后在中間數(shù)據(jù)庫(kù)中通過(guò)結(jié)合字段的含義以及對(duì)應(yīng)關(guān)系,使得中間數(shù)據(jù)庫(kù)能夠與其他數(shù)據(jù)庫(kù)之間通過(guò)設(shè)定的中間件實(shí)現(xiàn)兩個(gè)數(shù)據(jù)庫(kù)之間的數(shù)據(jù)信息交換,不過(guò)目前中間媒介較少,所以需要花費(fèi)更多的中間環(huán)節(jié)構(gòu)建,不僅費(fèi)時(shí)費(fèi)力,還難以實(shí)現(xiàn)數(shù)據(jù)庫(kù)之間的數(shù)據(jù)轉(zhuǎn)換;二是件雙向中間件,通過(guò)中間件與兩個(gè)數(shù)據(jù)庫(kù)之間連接,雙向中間件的構(gòu)建雖然費(fèi)用很高,但是能夠?qū)崿F(xiàn)數(shù)據(jù)庫(kù)之間數(shù)據(jù)的完全轉(zhuǎn)換,雙向中間件的構(gòu)建是利用中間數(shù)據(jù)庫(kù)數(shù)據(jù)傳遞的雙向性,實(shí)現(xiàn)數(shù)據(jù)庫(kù)之間的數(shù)據(jù)流通交換。
(二)數(shù)據(jù)交換技術(shù)的拓展。無(wú)論是異構(gòu)分層式數(shù)據(jù)庫(kù)之間的數(shù)據(jù)交換,還是同構(gòu)分層式數(shù)據(jù)庫(kù)之間的數(shù)據(jù)交換,都需要DBLINK實(shí)現(xiàn)數(shù)據(jù)庫(kù)之間的連接,不同數(shù)據(jù)庫(kù)之間雖然連接方式不一樣,但是DBLINK與透明網(wǎng)關(guān)組件都能夠在分層式數(shù)據(jù)庫(kù)之間實(shí)現(xiàn)數(shù)據(jù)連接,XML可以作為中間件進(jìn)行數(shù)據(jù)庫(kù)數(shù)據(jù)傳遞。XML是基于SGML元語(yǔ)言的簡(jiǎn)單組件,具有良好的自我描述性以及網(wǎng)絡(luò)快速傳遞等優(yōu)勢(shì),所以能夠?qū)崿F(xiàn)跨平臺(tái),能夠在非結(jié)構(gòu)化數(shù)據(jù)以及半結(jié)構(gòu)化數(shù)據(jù)進(jìn)行數(shù)據(jù)交換,實(shí)現(xiàn)各數(shù)據(jù)庫(kù)之間的基礎(chǔ)交換,所以XML現(xiàn)在是數(shù)據(jù)交換技術(shù)基礎(chǔ)。XML能夠通過(guò)設(shè)定的語(yǔ)言實(shí)現(xiàn)各個(gè)特定領(lǐng)域的數(shù)據(jù)交換運(yùn)用,在不同領(lǐng)域中采用的XML形式也不一樣,例如在無(wú)線(xiàn)通訊領(lǐng)域中采用的是WML,另外XML存在文件格式,所以也能夠以文本形式進(jìn)行數(shù)據(jù)結(jié)構(gòu)描述,所以能夠在各個(gè)平臺(tái)及數(shù)據(jù)庫(kù)之間跨界交換,主要是基于元數(shù)據(jù)以及元素標(biāo)記,標(biāo)記能夠在數(shù)據(jù)交換過(guò)程中保持?jǐn)?shù)據(jù)的原本結(jié)構(gòu)以及含義,從而使得各個(gè)數(shù)據(jù)庫(kù)之間的數(shù)據(jù)在交換過(guò)程中能夠?qū)崿F(xiàn)準(zhǔn)確性以靈活性的獲取。XML數(shù)據(jù)轉(zhuǎn)換雖然沒(méi)有辦法完全替代傳統(tǒng)數(shù)據(jù)轉(zhuǎn)換技術(shù),但是在新時(shí)期的分層式數(shù)據(jù)庫(kù)數(shù)據(jù)交換過(guò)程中能夠?qū)Ω鞣N數(shù)據(jù)類(lèi)型進(jìn)行提取轉(zhuǎn)換,保留數(shù)據(jù)原形式,再通過(guò)中間件實(shí)現(xiàn)XML數(shù)據(jù)模型與各數(shù)據(jù)庫(kù)之間的數(shù)據(jù)轉(zhuǎn)換。
分層式數(shù)據(jù)庫(kù)之間的數(shù)據(jù)交換一共分為以下三個(gè)過(guò)程,一是利用監(jiān)聽(tīng)組件例如socket,在網(wǎng)絡(luò)服務(wù)的斷口對(duì)客戶(hù)端的實(shí)時(shí)要求進(jìn)行監(jiān)聽(tīng),經(jīng)過(guò)確認(rèn)之后,建立兩個(gè)數(shù)據(jù)庫(kù)之間的連接,再者就是客戶(hù)端的請(qǐng)求利用網(wǎng)絡(luò)服務(wù)器將數(shù)據(jù)查詢(xún)結(jié)果轉(zhuǎn)變?yōu)閄ML形式后再通過(guò)socket轉(zhuǎn)發(fā)到客戶(hù)端上,從而實(shí)現(xiàn)客戶(hù)端對(duì)數(shù)據(jù)庫(kù)之間數(shù)據(jù)交換信息的獲?。欢情_(kāi)放服務(wù)器端口,實(shí)現(xiàn)監(jiān)聽(tīng)功能以及信息的XML轉(zhuǎn)化,監(jiān)聽(tīng)功能主要實(shí)現(xiàn)LocalPort、Bindssckserver、Sckserver與本地客戶(hù)端的綁定,設(shè)定請(qǐng)求觸發(fā),針對(duì)客戶(hù)端的連接請(qǐng)求觸發(fā)相應(yīng)的代碼,進(jìn)行數(shù)據(jù)庫(kù)的數(shù)據(jù)查詢(xún)工作,查詢(xún)結(jié)果轉(zhuǎn)換后需要利用MSXML進(jìn)行解析,才能夠?qū)?shù)據(jù)進(jìn)行還原,這就需要構(gòu)建一個(gè)“XMLDOC”,將結(jié)果記錄在文檔中,這樣就能夠在客戶(hù)端發(fā)出請(qǐng)求之后,從“XMLDOC”存放的XML中直接將實(shí)例轉(zhuǎn)發(fā)給客戶(hù)端;三是開(kāi)發(fā)客戶(hù)端,通過(guò)對(duì)客戶(hù)端的開(kāi)發(fā),與服務(wù)器進(jìn)行連接,宏觀上采用DBLINK與透明網(wǎng)關(guān),具體則是利用Winsock進(jìn)行服務(wù)器連接,與監(jiān)聽(tīng)組件實(shí)現(xiàn)實(shí)時(shí)監(jiān)控,再者通過(guò)代碼設(shè)定將相應(yīng)的程序通過(guò)請(qǐng)求轉(zhuǎn)變?yōu)镾QL言語(yǔ),從而通過(guò)監(jiān)聽(tīng)組件發(fā)送查詢(xún)請(qǐng)求,在接收查詢(xún)結(jié)果的時(shí)候利用服務(wù)端轉(zhuǎn)化請(qǐng)求數(shù)據(jù),將XML文本格式通過(guò)“DATAARRIVAL”事件,實(shí)現(xiàn)客戶(hù)端對(duì)查詢(xún)信息回饋的數(shù)據(jù)處理。
總而言之,要實(shí)現(xiàn)分布式數(shù)據(jù)庫(kù)的數(shù)據(jù)交換,根據(jù)不同的網(wǎng)絡(luò)環(huán)境以及數(shù)據(jù)庫(kù)類(lèi)型,可以選擇DBLINK或是透明網(wǎng)關(guān)實(shí)現(xiàn)數(shù)據(jù)庫(kù)之間的連接訪(fǎng)問(wèn),然后再通過(guò)客戶(hù)端實(shí)現(xiàn)數(shù)據(jù)的XML轉(zhuǎn)化,通過(guò)監(jiān)聽(tīng)組件以及數(shù)據(jù)轉(zhuǎn)化實(shí)現(xiàn)數(shù)據(jù)的交換。