張 怡
(武漢交通職業(yè)學(xué)院,湖北 武漢 430070)
20世紀(jì)80年代以后,我國(guó)信息技術(shù)行業(yè)一躍千里,軟件的精度和復(fù)雜度極大提高,很多工程需要多部分協(xié)同合作,數(shù)據(jù)共享。但由于平臺(tái)的差異、操作系統(tǒng)的差異,甚至數(shù)據(jù)庫(kù)語(yǔ)言的差異導(dǎo)致數(shù)據(jù)共享很麻煩。為了解決這些異構(gòu),OMG組織提出了CORBA(Common Object Request Broker Architecture):公共對(duì)象請(qǐng)求代理體系結(jié)構(gòu)。CORBA提供了一套標(biāo)準(zhǔn),規(guī)定了分布式異構(gòu)數(shù)據(jù)庫(kù)系統(tǒng)操作的語(yǔ)言、接口和協(xié)議。增強(qiáng)了跨平臺(tái),跨語(yǔ)言的系統(tǒng)之間的交互,實(shí)現(xiàn)數(shù)據(jù)共享。
分布式數(shù)據(jù)庫(kù)(HDB)技術(shù)是大數(shù)據(jù)時(shí)代應(yīng)用廣泛的一種數(shù)據(jù)庫(kù)技術(shù),它可以將分散分布的計(jì)算機(jī)中的局部數(shù)據(jù)庫(kù)通過(guò)網(wǎng)絡(luò)互連,形成一個(gè)完整的、集中的分布式大型數(shù)據(jù)庫(kù)。依據(jù)《分布式數(shù)據(jù)庫(kù)系統(tǒng)標(biāo)準(zhǔn)》,分布式異構(gòu)數(shù)據(jù)庫(kù)系統(tǒng)的結(jié)構(gòu)被定為四層機(jī)構(gòu),分別是:全局外層、全局概念層、局部?jī)?nèi)層、局部概念層。每層都可以通過(guò)層間映射,映射到下一層。
當(dāng)數(shù)據(jù)庫(kù)表單的數(shù)據(jù)量超出閾值,數(shù)據(jù)庫(kù)的檢索性能會(huì)降低。單機(jī)數(shù)據(jù)庫(kù)系統(tǒng)很難處理高強(qiáng)度的io,同時(shí),不同的單機(jī)上處理的業(yè)務(wù)可能使用不同的數(shù)據(jù)庫(kù),很難保證一個(gè)單機(jī)的數(shù)據(jù)庫(kù)宕機(jī),不影響其他數(shù)據(jù)庫(kù)對(duì)應(yīng)的業(yè)務(wù)進(jìn)行。以上問(wèn)題是分布式異構(gòu)數(shù)據(jù)庫(kù)技術(shù)可以解決的。
異構(gòu)數(shù)據(jù)庫(kù)是位于很多個(gè)不同節(jié)點(diǎn)的數(shù)據(jù)庫(kù)的集合,它的異構(gòu)性主要有三點(diǎn):計(jì)算機(jī)結(jié)構(gòu)的異構(gòu)性(大型機(jī)、小型機(jī)、嵌入式設(shè)備等)、數(shù)據(jù)庫(kù)系統(tǒng)異構(gòu)性(SQL Server、Oracla、mySQL、Access等)和底層操作系統(tǒng)的異構(gòu)性(Windows、IOS、Linux等)。各個(gè)數(shù)據(jù)庫(kù)也要在不同的操作系統(tǒng)中運(yùn)行,不受系統(tǒng)異樣的限制;各個(gè)數(shù)據(jù)庫(kù)對(duì)應(yīng)的操作系統(tǒng)可以不同;各數(shù)據(jù)庫(kù)的類型也可以不同。異構(gòu)數(shù)據(jù)庫(kù)的最終目標(biāo)是在分散于網(wǎng)絡(luò)中的各個(gè)節(jié)點(diǎn)的異構(gòu)數(shù)據(jù)庫(kù)間,實(shí)現(xiàn)檢索自由,資源共享。異構(gòu)數(shù)據(jù)庫(kù)立足于某一個(gè)數(shù)據(jù)庫(kù)的模式,建立所有參與的數(shù)據(jù)庫(kù)的模式。
面對(duì)目前大數(shù)據(jù)時(shí)代對(duì)數(shù)據(jù)資源進(jìn)行整合的要求,分布式異構(gòu)數(shù)據(jù)庫(kù)技術(shù)得到廣泛推廣和應(yīng)用,很多新技術(shù)應(yīng)運(yùn)而出,幫助提升分布式異構(gòu)數(shù)據(jù)庫(kù)的性能。這里介紹兩種:一種是中間技術(shù),負(fù)責(zé)服務(wù)對(duì)象與應(yīng)用程序之間的連接;另一種是數(shù)據(jù)查詢處理技術(shù),負(fù)責(zé)信息資源的查詢和處理。下文關(guān)注的是中間件技術(shù)。
(1)中間件(Middleware):計(jì)算機(jī)服務(wù)器端與應(yīng)用程序之間的連接平臺(tái)和應(yīng)用軟件。數(shù)據(jù)庫(kù)中間件用于不同數(shù)據(jù)源之間的數(shù)據(jù)流通,介于數(shù)據(jù)庫(kù)和應(yīng)用程序之間。中間件使不同操作系統(tǒng),不同數(shù)據(jù)庫(kù)結(jié)構(gòu)的數(shù)據(jù)庫(kù)可以互相檢索,目前在WEB已經(jīng)得到廣泛應(yīng)用。當(dāng)前WEB中主要運(yùn)用的中間技術(shù)有:微軟提供的COM/DCOM、Sun公司提供的JAVA/EJB和OMG公司提供的CORBA,本文探討的就是CORBA中間件技術(shù)。
(2)數(shù)據(jù)查詢處理技術(shù)。數(shù)據(jù)查詢處理技術(shù)是指Server啟動(dòng)后,接收到用戶請(qǐng)求,客戶端通過(guò)提供的對(duì)象方法,調(diào)用對(duì)象并返回結(jié)果。在分布式數(shù)據(jù)庫(kù)中,由于網(wǎng)絡(luò)異步傳輸需要消耗運(yùn)算能力,而且,分布式數(shù)據(jù)庫(kù)中的數(shù)據(jù)是存放在分散的各個(gè)節(jié)點(diǎn)中,導(dǎo)致查詢工作很復(fù)雜,所以,在實(shí)際使用中,需要進(jìn)行數(shù)據(jù)查詢處理來(lái)優(yōu)化數(shù)據(jù)查詢速度,降低數(shù)據(jù)在網(wǎng)絡(luò)中的傳輸成本。數(shù)據(jù)查詢處理的優(yōu)化主要在兩個(gè)方面:數(shù)據(jù)處理時(shí)間的優(yōu)化以及數(shù)據(jù)傳輸次數(shù)和數(shù)量的優(yōu)化。每種優(yōu)化都要基于具體的算法來(lái)實(shí)現(xiàn)。
CORBA是目前分布式異構(gòu)數(shù)據(jù)庫(kù)技術(shù)中使用比較廣泛的一種程序體系結(jié)構(gòu)。它的標(biāo)準(zhǔn)分為三個(gè)層次:對(duì)象請(qǐng)求代表、公共對(duì)象服務(wù)和公共設(shè)施。
對(duì)象請(qǐng)求代理(ORB)。它構(gòu)建客戶與服務(wù)器之間的關(guān)系,是整個(gè)技術(shù)的核心??蛻敉ㄟ^(guò)服務(wù)器訪問(wèn)網(wǎng)絡(luò),ORB獲取用戶請(qǐng)求,找到定義的實(shí)現(xiàn)請(qǐng)求的對(duì)象,調(diào)用對(duì)象方法最后返回結(jié)果??蛻舨槐刂婪?wù)對(duì)象的位置,也不必了解服務(wù)對(duì)象的語(yǔ)言、操作系統(tǒng)、接口等。ORB內(nèi)核包括:動(dòng)態(tài)調(diào)用接口、IDL Stub、ORB接口、靜態(tài)IDL Skeleton、動(dòng)態(tài)框架接口和對(duì)象配適器。其中,客戶程序向下調(diào)用動(dòng)態(tài)調(diào)用接口、IDL Stub、ORB接口。對(duì)象實(shí)現(xiàn)向下調(diào)用ORB接口和對(duì)象配適器,向上調(diào)用靜態(tài)IDL Skeleton、動(dòng)態(tài)框架接口和對(duì)象配適器。
公共服務(wù)對(duì)象。CORBA在對(duì)象請(qǐng)求代理(ORB)之上定義了很多分布式應(yīng)用中必需的對(duì)象服務(wù),如位置服務(wù)、命名服務(wù)、事務(wù)(交易)服務(wù)、安全服務(wù)等。以后還會(huì)提供更多地涉及分布式應(yīng)用關(guān)鍵技術(shù)的對(duì)象服務(wù)。
公共設(shè)施。由IDL定義的應(yīng)用框架,是一種服務(wù)和協(xié)議??芍苯颖粯I(yè)務(wù)對(duì)象使用,并規(guī)范業(yè)務(wù)對(duì)象的協(xié)作,如:用戶界面、系統(tǒng)管理等。位于CORBA三層結(jié)構(gòu)的最上層。
CORBA是集成的標(biāo)準(zhǔn)結(jié)構(gòu),內(nèi)核穩(wěn)定,對(duì)分布式的應(yīng)用集成友好,處理方便快捷。在CORBA結(jié)構(gòu)中,只有客戶和服務(wù)兩種角色。它提供了跨平臺(tái)、跨語(yǔ)言、跨操作系統(tǒng)的操作標(biāo)準(zhǔn),實(shí)現(xiàn)了多樣化的服務(wù),成為解決難題的標(biāo)準(zhǔn)化規(guī)范,該技術(shù)現(xiàn)已被廣泛應(yīng)用于分布式數(shù)據(jù)庫(kù)系統(tǒng)應(yīng)用中。CORBA體系圖如圖1所示。
圖1 CORBA體系圖
目前大批高校圖書館管理系統(tǒng)都已使用分布式數(shù)據(jù)庫(kù),要實(shí)現(xiàn)高校間數(shù)字圖書館的資源共享,對(duì)于跨操作系統(tǒng),跨操作語(yǔ)言的數(shù)據(jù)庫(kù)管理系統(tǒng),CORBA解決了高校數(shù)字圖書管理系統(tǒng)數(shù)據(jù)庫(kù)的分布存儲(chǔ)、分布式查詢、邏輯互聯(lián)等問(wèn)題,提高了系統(tǒng)響應(yīng)速度。CORBA將不同的數(shù)字圖書館的信息資源與用戶實(shí)現(xiàn)透明性。
CORBA是基于對(duì)象技術(shù)的分布式軟件體系結(jié)構(gòu),它的核心是(ORB)對(duì)象請(qǐng)求代理。它與所用的操作系統(tǒng)和操作語(yǔ)言是無(wú)關(guān)的。但是CORBA的應(yīng)用最常見的是在JAVA平臺(tái)上實(shí)現(xiàn)。方法:創(chuàng)建JAVA對(duì)象,在CORBA ORB中展開。通過(guò)這種方法,可以將新的應(yīng)用開發(fā)與以前的系統(tǒng)開發(fā)集成起來(lái)。用JAVA創(chuàng)建CORBA應(yīng)用,先編寫一個(gè)IDL接口定義文件,然后將該接口定義文件編譯成語(yǔ)言編碼,由此生成服務(wù)器連接框架與客戶端存根;開發(fā)人員使用服務(wù)器連接框架編寫和運(yùn)行服務(wù)對(duì)象應(yīng)用,使用客戶端存根編寫和運(yùn)行客戶對(duì)象調(diào)用。
在高校的數(shù)字圖書管理系統(tǒng)中,WEB可以通過(guò)很多方法訪問(wèn)數(shù)據(jù)庫(kù),比如:通用網(wǎng)關(guān)接口、JDBC、ISAPI/NASPI和微軟的ASP/ADO等。當(dāng)一個(gè)應(yīng)用程序發(fā)出應(yīng)用請(qǐng)求,建立一個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng)的連接,通過(guò)分析運(yùn)算驅(qū)動(dòng)各個(gè)數(shù)據(jù)庫(kù)的驅(qū)動(dòng)程序,完成對(duì)各個(gè)數(shù)據(jù)庫(kù)的查詢操作。通過(guò)這些訪問(wèn)方法,用戶可以使用一個(gè)統(tǒng)一的基于WEB的數(shù)據(jù)檢索軟件,從分布在網(wǎng)絡(luò)各個(gè)節(jié)點(diǎn)的數(shù)字圖書館系統(tǒng)中檢索出目標(biāo)數(shù)據(jù),這樣就實(shí)現(xiàn)了數(shù)字圖書館的資源共享。
CORBA技術(shù)適用于所有需要開放信息平臺(tái)的系統(tǒng)。常見的使用CORBA技術(shù)的系統(tǒng)有:城市軌道交通系統(tǒng)、數(shù)據(jù)采集系統(tǒng)、無(wú)線電系統(tǒng)、高校數(shù)字圖書館管理系統(tǒng)等。以下以高校數(shù)字圖書館管理系統(tǒng)為例分析CORBA技術(shù)如何應(yīng)用在該系統(tǒng)上,幫助該系統(tǒng)實(shí)現(xiàn)數(shù)據(jù)共享。
高校數(shù)字圖書館系統(tǒng)是每一所高校目前在建或在完善的管理系統(tǒng),高校的圖書館是巨大的精神財(cái)富,高校間圖書館實(shí)現(xiàn)數(shù)據(jù)共享有非常重要的意義。每所高校數(shù)字圖書館管理系統(tǒng)所用的操作平臺(tái)、數(shù)據(jù)庫(kù)平臺(tái)都有所不同,是非常典型的分布式異構(gòu)數(shù)據(jù),基于CORBA可以搭建一個(gè)分布式異構(gòu)數(shù)據(jù)庫(kù)的信息檢索模型。用戶在服務(wù)終端發(fā)出一個(gè)搜索請(qǐng)求,該請(qǐng)求通過(guò)網(wǎng)絡(luò)傳遞到服務(wù)器,服務(wù)器通過(guò)網(wǎng)絡(luò)發(fā)出對(duì)象請(qǐng)求代理(ORB),ORB將服務(wù)請(qǐng)求傳遞給各數(shù)據(jù)庫(kù),并將檢索結(jié)果返回給服務(wù)終端。
本文簡(jiǎn)要探討了分布式異構(gòu)數(shù)據(jù)庫(kù)的背景和作用,解析了分布式異構(gòu)數(shù)據(jù)庫(kù)的四層模型,討論了分布式異構(gòu)數(shù)據(jù)庫(kù)實(shí)現(xiàn)的主要技術(shù):中間件技術(shù)和數(shù)據(jù)查詢處理技術(shù)。其中,中間件技術(shù)CORBA技術(shù)可以運(yùn)行在任何一種操作系統(tǒng)平臺(tái)上,尤其是JAVA平臺(tái),JAVA開發(fā)者利用CORBA的強(qiáng)健性可以寫出功能十分強(qiáng)大的應(yīng)用程序。CORBA是目前深受歡迎的主流的實(shí)現(xiàn)分布式異構(gòu)數(shù)據(jù)庫(kù)的中間件技術(shù)。
本文最后描述了一個(gè)實(shí)例。通過(guò)對(duì)高校數(shù)字圖書館管理系統(tǒng)中應(yīng)用以CORBA為中間件技術(shù)的分布式異構(gòu)數(shù)據(jù)庫(kù)系統(tǒng)的實(shí)現(xiàn),來(lái)展示CORBA技術(shù)在分布式異構(gòu)數(shù)據(jù)庫(kù)系統(tǒng)中的實(shí)現(xiàn)。通過(guò)該系統(tǒng),幫助各高校數(shù)字圖書館管理系統(tǒng)實(shí)現(xiàn)獨(dú)立管理的同時(shí)又資源集成,一舉兩得。