1)數(shù)據(jù)的遷移和轉(zhuǎn)換
利用數(shù)據(jù)轉(zhuǎn)換程序,對(duì)數(shù)據(jù)格式進(jìn)行轉(zhuǎn)換,從而能被其它的系統(tǒng)接收。這種方法處理簡(jiǎn)單,已為大多數(shù)用戶理解和接受。許多數(shù)據(jù)庫(kù)管理系統(tǒng)DBMS都自帶有一些數(shù)據(jù)轉(zhuǎn)換程序,也為用戶提供了方便。但這種方式當(dāng)數(shù)據(jù)更新時(shí)會(huì)帶來不同步的問題,即使人工定時(shí)運(yùn)行轉(zhuǎn)換程序也只能達(dá)到短期同步,這對(duì)于數(shù)據(jù)更新頻繁而實(shí)時(shí)性要求很高的場(chǎng)合是不太適用。
2)使用中間件
中間件(middleware)是位于Client與Server之間的中介接口軟件,是異構(gòu)系統(tǒng)集成所需的粘接劑,F(xiàn)有的數(shù)據(jù)庫(kù)中間件允許Client在異構(gòu)數(shù)據(jù)庫(kù)上調(diào)用SQL服務(wù),解決異構(gòu)數(shù)據(jù)庫(kù)的互操作性問題。功能完善的數(shù)據(jù)庫(kù)中間件,可以對(duì)用戶屏蔽數(shù)據(jù)的分布地點(diǎn)、DBMS平臺(tái)、SQL方言/擴(kuò)展、特殊的本地API等等差異。
使用中間件的異種數(shù)據(jù)庫(kù)集成有以下幾種方法
(1)通用SQL API 即在Client端的所有應(yīng)用程序都采用通用的SQL API訪問數(shù)據(jù)庫(kù),而由不同的DBMS Server提供不同的數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序,解決連接問題。通用的SQL API又可分為嵌入式SQL(ESQL——Embedded SQL)和調(diào)用級(jí)SQL(CLI——Call Layer Interface)。ESQL是將SQL嵌入到C、Pascal、COBOL等程序設(shè)計(jì)語言中,通過預(yù)編譯程序進(jìn)行處理,因而SQL的所有功能及其非過程性的特點(diǎn)得到繼承。CLI則采用一個(gè)可調(diào)用的SQL API作為數(shù)據(jù)存取接口,它不需要預(yù)編譯過程,允許在運(yùn)行時(shí)產(chǎn)生并執(zhí)行SQL語句。由于CLI更為靈活,現(xiàn)在應(yīng)用較廣,如Microsoft的ODBC、IBM的DRDA、Borland的IDAPI、Sybase的Open Client / Open Server等等。 mda.com
。2)通用網(wǎng)關(guān) 網(wǎng)關(guān)(gateway)是當(dāng)前流行的中間件方案。在Client端有一個(gè)公共的客戶機(jī)驅(qū)動(dòng)程序(Gateway Driver);在Server端有一個(gè)網(wǎng)關(guān)接受程序,它捕獲進(jìn)來的格式和規(guī)程(Format and Protocol,F(xiàn)AP)信息,然后進(jìn)行轉(zhuǎn)換,送至本地的SQL接口。
。3)通用協(xié)議 通用協(xié)議是指公共的FAP和公共的API,并且有一個(gè)單一的數(shù)據(jù)庫(kù)管理接口。公共FAP支持適用于所有的SQL方言的超級(jí)設(shè)置或容忍全部本地SQL方言通過。
。4)基于組件技術(shù)的一致數(shù)據(jù)訪問接口 例如,Microsoft推出的UDA(Universal Data Access)技術(shù),分別提供了底層的系統(tǒng)級(jí)編程接口和高層的應(yīng)用級(jí)編程接口。前者定義了一組COM(組件對(duì)象模型)接口,建立了抽象數(shù)據(jù)源的概念,封裝了對(duì)關(guān)系型及非關(guān)系型各種數(shù)據(jù)源的訪問操作,為數(shù)據(jù)的使用方和提供方建立了標(biāo)準(zhǔn);后者是建立在前者基礎(chǔ)上的,它提供了一組可編程的自動(dòng)化對(duì)象,更適合于各種客戶機(jī)/服務(wù)器應(yīng)用系統(tǒng),尤其適用于在一些腳本語言中訪問各種數(shù)據(jù)源。
3)多數(shù)據(jù)庫(kù)系統(tǒng)
在CIMS環(huán)境下,從系統(tǒng)和規(guī)模上來解決異種數(shù)據(jù)庫(kù)集成的方法為多數(shù)據(jù)庫(kù)系統(tǒng)。所謂多數(shù)據(jù)庫(kù)系統(tǒng)就是一種能夠接受和容納多個(gè)異構(gòu)數(shù)據(jù)庫(kù)的系統(tǒng),對(duì)外呈現(xiàn)出一種集成結(jié)構(gòu),而對(duì)內(nèi)又允許各個(gè)異構(gòu)數(shù)據(jù)庫(kù)的“自治性”。mda.com
這種多數(shù)據(jù)庫(kù)系統(tǒng)和分布式數(shù)據(jù)庫(kù)系統(tǒng)有所不同。多數(shù)據(jù)庫(kù)系統(tǒng)不存在一個(gè)統(tǒng)一的數(shù)據(jù)庫(kù)管理系統(tǒng)軟件,而分布式數(shù)據(jù)庫(kù)系統(tǒng)是在一個(gè)統(tǒng)一的數(shù)據(jù)庫(kù)管理系統(tǒng)軟件的管理與控制之下運(yùn)行的。多數(shù)據(jù)庫(kù)系統(tǒng)主要采用自下而上的數(shù)據(jù)集成方法,因?yàn)楫悩?gòu)情況在前而集成要求在后,而分布式數(shù)據(jù)庫(kù)系統(tǒng)主要采用自上而下的數(shù)據(jù)集成方法,全局?jǐn)?shù)據(jù)庫(kù)是各個(gè)子庫(kù)的并集。多數(shù)據(jù)庫(kù)系統(tǒng)主要解決異種數(shù)據(jù)庫(kù)集成問題,可以保護(hù)原有的數(shù)據(jù)資源,使各局部數(shù)據(jù)庫(kù)享有高度“自治性”,而分布式數(shù)據(jù)庫(kù)系統(tǒng)是在數(shù)據(jù)的統(tǒng)一規(guī)劃下,著重解決數(shù)據(jù)的合理分布和對(duì)用戶透明的問題。當(dāng)然,兩者之間在技術(shù)上有很多交叉,可以互相借鑒。 多數(shù)據(jù)庫(kù)系統(tǒng)一般分為兩類
。1)有全局統(tǒng)一模式的多數(shù)據(jù)庫(kù)系統(tǒng)。多個(gè)異構(gòu)數(shù)據(jù)庫(kù)集成時(shí)有一個(gè)全局統(tǒng)一的概念模式,它是通過映射各異構(gòu)的局部數(shù)據(jù)庫(kù)的概念模式而得到。
。2)聯(lián)邦式數(shù)據(jù)庫(kù)系統(tǒng)。各個(gè)異構(gòu)的局部數(shù)據(jù)庫(kù)之間僅存在著松散的聯(lián)邦式耦合關(guān)系,沒有全局統(tǒng)一模式,各局部庫(kù)通過定義輸入、輸出模式進(jìn)行彼此之間的數(shù)據(jù)訪問。 到目前為止,沒有商品化的多數(shù)據(jù)庫(kù)系統(tǒng),在CIMS環(huán)境中實(shí)施有一定難度。