新聞中心

EEPW首頁(yè) > 消費(fèi)電子 > 學(xué)習(xí)方法與實(shí)踐 > 教你輕松掌握“異構(gòu)數(shù)據(jù)庫(kù)”的基本概念

教你輕松掌握“異構(gòu)數(shù)據(jù)庫(kù)”的基本概念

——
作者: 時(shí)間:2007-11-21 來(lái)源:賽迪網(wǎng)技術(shù)社區(qū) 收藏
        系統(tǒng)是相關(guān)的多個(gè)系統(tǒng)的集合,可以實(shí)現(xiàn)數(shù)據(jù)的共享和透明訪問,每個(gè)系統(tǒng)在加入數(shù)據(jù)庫(kù)系統(tǒng)之前本身就已經(jīng)存在,擁有自己的DMBS。數(shù)據(jù)庫(kù)的各個(gè)組成部分具有自身的自治性,實(shí)現(xiàn)數(shù)據(jù)共享的同時(shí),每個(gè)數(shù)據(jù)庫(kù)系統(tǒng)仍保有自己的應(yīng)用特性、完整性控制和安全性控制。異構(gòu)數(shù)據(jù)庫(kù)系統(tǒng)的異構(gòu)性主要體現(xiàn)在以下幾個(gè)方面: 

        計(jì)算機(jī)體系結(jié)構(gòu)的異構(gòu) 

        各個(gè)參與的數(shù)據(jù)庫(kù)可以分別運(yùn)行在大型機(jī)、小型機(jī)、工作站、PC或系統(tǒng)中。 

        基礎(chǔ)的異構(gòu) 

        各個(gè)數(shù)據(jù)庫(kù)系統(tǒng)的基礎(chǔ)可以是Unix、Windows NT、 Linux等。 

        DMBS本身的異構(gòu) 

       可以是同為關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng)的Oracle、 SQL Server等,也可以是不同數(shù)據(jù)模型的數(shù)據(jù)庫(kù),如關(guān)系、模式、層次、網(wǎng)絡(luò)、面向?qū)ο?,函?shù)型數(shù)據(jù)庫(kù)共同組成一個(gè)異構(gòu)數(shù)據(jù)庫(kù)系統(tǒng)。 

       異構(gòu)數(shù)據(jù)庫(kù)系統(tǒng)的目標(biāo)在于實(shí)現(xiàn)不同數(shù)據(jù)庫(kù)之間的數(shù)據(jù)信息資源、硬件設(shè)備資源和人力資源的合并和共享。其中關(guān)鍵的一點(diǎn)就是以局部數(shù)據(jù)庫(kù)模式為基礎(chǔ),建立全局的數(shù)據(jù)模式或全局外視圖。這種全局模式對(duì)于建立高級(jí)的決策支持系統(tǒng)尤為重要。 

        大型機(jī)構(gòu)在許多地點(diǎn)都有分支機(jī)構(gòu),每個(gè)子機(jī)構(gòu)的數(shù)據(jù)庫(kù)中都有著自己的信息數(shù)據(jù),而決策制訂人員一般只關(guān)心宏觀的、為全局模式所描述的信息。建立在數(shù)據(jù)倉(cāng)庫(kù)技術(shù)基礎(chǔ)上的異構(gòu)數(shù)據(jù)庫(kù)全局模式的描述是一種好的解決方案。數(shù)據(jù)倉(cāng)庫(kù)可以從異構(gòu)數(shù)據(jù)庫(kù)系統(tǒng)中的多個(gè)數(shù)據(jù)庫(kù)中收集信息,并建立統(tǒng)一的全局模式,同時(shí)收集的數(shù)據(jù)還支持對(duì)歷史數(shù)據(jù)的訪問,用戶通過數(shù)據(jù)倉(cāng)庫(kù)提供的統(tǒng)一的數(shù)據(jù)接口進(jìn)行決策支持的查詢。 

        數(shù)據(jù)庫(kù)轉(zhuǎn)換 

        對(duì)于異構(gòu)數(shù)據(jù)庫(kù)系統(tǒng),實(shí)現(xiàn)數(shù)據(jù)共享應(yīng)當(dāng)達(dá)到兩點(diǎn):一是實(shí)現(xiàn)數(shù)據(jù)庫(kù)轉(zhuǎn)換;二是實(shí)現(xiàn)數(shù)據(jù)的透明訪問。由華中科技大學(xué)開發(fā)的,擁有自主版權(quán)的商品化數(shù)據(jù)庫(kù)管理系統(tǒng)DM3系統(tǒng),通過所提供的數(shù)據(jù)庫(kù)轉(zhuǎn)換工具和API接口實(shí)現(xiàn)了這兩點(diǎn)。 

        DM3提供了數(shù)據(jù)庫(kù)轉(zhuǎn)換工具,可以將一種數(shù)據(jù)庫(kù)系統(tǒng)中定義的模型轉(zhuǎn)化為另一種數(shù)據(jù)庫(kù)中的模型,然后根據(jù)需要再裝入數(shù)據(jù),這時(shí)用戶就可以利用自己熟悉的數(shù)據(jù)庫(kù)系統(tǒng)和熟悉的查詢語(yǔ)言,實(shí)現(xiàn)數(shù)據(jù)共享的目標(biāo)。數(shù)據(jù)庫(kù)轉(zhuǎn)換工具首先進(jìn)行類型轉(zhuǎn)換,訪問源數(shù)據(jù)庫(kù)系統(tǒng),將源數(shù)據(jù)庫(kù)的數(shù)據(jù)定義模型轉(zhuǎn)換為目標(biāo)數(shù)據(jù)庫(kù)的數(shù)據(jù)定義模型,然后進(jìn)行數(shù)據(jù)重組,即將源數(shù)據(jù)庫(kù)系統(tǒng)中的數(shù)據(jù)裝入到目的數(shù)據(jù)庫(kù)中。 

        在轉(zhuǎn)換的過程中,有時(shí)要想實(shí)現(xiàn)嚴(yán)格的等價(jià)轉(zhuǎn)換是比較困難的。首先要確定兩種模型中所存在的各種語(yǔ)法和語(yǔ)義上的沖突,這些沖突可能包括: 

        命名沖突:即源模型中的標(biāo)識(shí)符可能是目的模型中的保留字,這時(shí)就需要重新命名。 

       格式?jīng)_突:同一種數(shù)據(jù)類型可能有不同的表示方法和語(yǔ)義差異,這時(shí)需要定義兩種模型之間的變換函數(shù)。 

       結(jié)構(gòu)沖突:如果兩種數(shù)據(jù)庫(kù)系統(tǒng)之間的數(shù)據(jù)定義模型不同,如分別為關(guān)系模型和層次模型,那么需要重新定義實(shí)體屬性和聯(lián)系,以防止屬性或聯(lián)系信息的丟失。 

       總之,在進(jìn)行數(shù)據(jù)轉(zhuǎn)換后,一方面源數(shù)據(jù)庫(kù)模式中所有需要共享的信息都轉(zhuǎn)換到目的數(shù)據(jù)庫(kù)中,另一方面這種轉(zhuǎn)換又不能包含冗余的關(guān)聯(lián)信息。 

       數(shù)據(jù)庫(kù)轉(zhuǎn)換工具可以實(shí)現(xiàn)不同數(shù)據(jù)庫(kù)系統(tǒng)之間的數(shù)據(jù)模型轉(zhuǎn)換,需要進(jìn)一步研究的問題是:如果數(shù)據(jù)庫(kù)轉(zhuǎn)換同時(shí)進(jìn)行數(shù)據(jù)定義模式轉(zhuǎn)換和數(shù)據(jù)轉(zhuǎn)換,就可能引起同一數(shù)據(jù)集合在異構(gòu)數(shù)據(jù)庫(kù)系統(tǒng)中存在多個(gè)副本,因此需要引入新的訪問控制機(jī)制。在保證各個(gè)參與數(shù)據(jù)庫(kù)自治,維護(hù)其完整性、安全性的基礎(chǔ)上,對(duì)于異構(gòu)數(shù)據(jù)庫(kù)系統(tǒng)提供全局的訪問控制、并發(fā)機(jī)制和安全控制。 

       如果數(shù)據(jù)庫(kù)轉(zhuǎn)換只進(jìn)行數(shù)據(jù)定義轉(zhuǎn)換,不產(chǎn)生數(shù)據(jù)的副本,那么在新的目的數(shù)據(jù)庫(kù)定義模型的框架下訪問數(shù)據(jù),實(shí)現(xiàn)上仍是對(duì)源數(shù)據(jù)庫(kù)系統(tǒng)中數(shù)據(jù)的訪問。這時(shí)利用新的數(shù)據(jù)庫(kù)系統(tǒng)中的數(shù)據(jù)處理語(yǔ)言實(shí)現(xiàn)的事務(wù),不能直接訪問源數(shù)據(jù)庫(kù),必須進(jìn)行事務(wù)級(jí)的翻譯才可以執(zhí)行。 

       數(shù)據(jù)的透明訪問 

        在異構(gòu)數(shù)據(jù)系統(tǒng)中實(shí)現(xiàn)了數(shù)據(jù)的透明訪問,用戶就可以將異構(gòu)分布式數(shù)據(jù)庫(kù)系統(tǒng)看成普通的分布式數(shù)據(jù)庫(kù)系統(tǒng),用自己熟悉的數(shù)據(jù)處理語(yǔ)言去訪問數(shù)據(jù)庫(kù),如同訪問一個(gè)數(shù)據(jù)庫(kù)系統(tǒng)一樣。但目前還沒有一種廣泛使用的數(shù)據(jù)定義模型和數(shù)據(jù)查詢語(yǔ)言,實(shí)現(xiàn)數(shù)據(jù)的透明訪問可以采用多對(duì)一轉(zhuǎn)換、雙向的中間件等技術(shù)。開放式數(shù)據(jù)庫(kù)互連(Open DataBase Connectivity,簡(jiǎn)稱ODBC)是一種用來(lái)在相關(guān)或不相關(guān)的數(shù)據(jù)庫(kù)管理系統(tǒng)中存取數(shù)據(jù)的標(biāo)準(zhǔn)應(yīng)用程序接口(API)。ODBC為應(yīng)用程序提供了一套高層調(diào)用接口規(guī)范和基于動(dòng)態(tài)鏈接庫(kù)的運(yùn)行支持環(huán)境。目前,常用的數(shù)據(jù)庫(kù)應(yīng)用開發(fā)的前端工具如Power Builder、 Delphi等都通過開放數(shù)據(jù)庫(kù)互聯(lián)(ODBC)接口來(lái)連接各種數(shù)據(jù)庫(kù)系統(tǒng)。而多數(shù)數(shù)據(jù)庫(kù)管理系統(tǒng)(如:Oracle、Sybase、SQL Server等)都提供了相應(yīng)的ODBC驅(qū)動(dòng)程序,使數(shù)據(jù)庫(kù)系統(tǒng)具有很好的開放性。ODBC接口的最大優(yōu)點(diǎn)是其互操作能力,理想情況下,每個(gè)驅(qū)動(dòng)程序和數(shù)據(jù)源應(yīng)支持完全相同的ODBC函數(shù)調(diào)用和SQL語(yǔ)句,使得ODBC應(yīng)用程序可以操作所有的數(shù)據(jù)庫(kù)系統(tǒng)。然而,實(shí)際上不同的數(shù)據(jù)庫(kù)對(duì)SQL語(yǔ)法的支持程度各不相同,因此,ODBC規(guī)范定義了驅(qū)動(dòng)程序的一致性級(jí)別,ODBC API的一致性確定了應(yīng)用程序所能調(diào)用的ODBC函數(shù)種類,ODBC 2.0規(guī)定了三個(gè)級(jí)別的函數(shù),目前 DM3 ODBC API支持 ODBC 2.0規(guī)范中第二級(jí)擴(kuò)展的所有函數(shù)。 

        隨著Internet應(yīng)用的不斷普及,Internet的異構(gòu)分布式信息系統(tǒng)正在迅速發(fā)展,Java以其平臺(tái)無(wú)關(guān)性、移植性強(qiáng),安全性高、穩(wěn)定性好、分布式、面向?qū)ο蟮葍?yōu)點(diǎn)而成為Internet應(yīng)用開發(fā)的首選語(yǔ)言。在Internet環(huán)境下,實(shí)現(xiàn)基于異種系統(tǒng)平臺(tái)的數(shù)據(jù)庫(kù)應(yīng)用,必須提供一個(gè)獨(dú)立于特定數(shù)據(jù)庫(kù)管理系統(tǒng)的統(tǒng)一編程界面和一個(gè)基于 SQL的通用的數(shù)據(jù)庫(kù)訪問方法。Java與數(shù)據(jù)庫(kù)接口規(guī)范JDBC(Java Database Connectivity)是支持基本SQL功能的一個(gè)通用的應(yīng)用程序編程接口,它在不同的數(shù)據(jù)庫(kù)功能模塊的層次上提供了一個(gè)統(tǒng)一的用戶界面,為對(duì)異構(gòu)數(shù)據(jù)庫(kù)進(jìn)行直接的Web訪問提供了新的解決方案。 JDBC已被越來(lái)越多的數(shù)據(jù)庫(kù)廠商、連接廠商、Internet服務(wù)廠商及應(yīng)用程序編制者所支持。 

linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉