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