教你輕松掌握“異構(gòu)數(shù)據(jù)庫”的基本概念
——
計算機(jī)體系結(jié)構(gòu)的異構(gòu)
各個參與的數(shù)據(jù)庫可以分別運(yùn)行在大型機(jī)、小型機(jī)、工作站、PC或嵌入式系統(tǒng)中。
基礎(chǔ)操作系統(tǒng)的異構(gòu)
各個數(shù)據(jù)庫系統(tǒng)的基礎(chǔ)操作系統(tǒng)可以是Unix、Windows NT、 Linux等。
DMBS本身的異構(gòu)
可以是同為關(guān)系型數(shù)據(jù)庫系統(tǒng)的Oracle、 SQL Server等,也可以是不同數(shù)據(jù)模型的數(shù)據(jù)庫,如關(guān)系、模式、層次、網(wǎng)絡(luò)、面向?qū)ο?,函?shù)型數(shù)據(jù)庫共同組成一個異構(gòu)數(shù)據(jù)庫系統(tǒng)。
異構(gòu)數(shù)據(jù)庫系統(tǒng)的目標(biāo)在于實現(xiàn)不同數(shù)據(jù)庫之間的數(shù)據(jù)信息資源、硬件設(shè)備資源和人力資源的合并和共享。其中關(guān)鍵的一點就是以局部數(shù)據(jù)庫模式為基礎(chǔ),建立全局的數(shù)據(jù)模式或全局外視圖。這種全局模式對于建立高級的決策支持系統(tǒng)尤為重要。
大型機(jī)構(gòu)在許多地點都有分支機(jī)構(gòu),每個子機(jī)構(gòu)的數(shù)據(jù)庫中都有著自己的信息數(shù)據(jù),而決策制訂人員一般只關(guān)心宏觀的、為全局模式所描述的信息。建立在數(shù)據(jù)倉庫技術(shù)基礎(chǔ)上的異構(gòu)數(shù)據(jù)庫全局模式的描述是一種好的解決方案。數(shù)據(jù)倉庫可以從異構(gòu)數(shù)據(jù)庫系統(tǒng)中的多個數(shù)據(jù)庫中收集信息,并建立統(tǒng)一的全局模式,同時收集的數(shù)據(jù)還支持對歷史數(shù)據(jù)的訪問,用戶通過數(shù)據(jù)倉庫提供的統(tǒng)一的數(shù)據(jù)接口進(jìn)行決策支持的查詢。
數(shù)據(jù)庫轉(zhuǎn)換
對于異構(gòu)數(shù)據(jù)庫系統(tǒng),實現(xiàn)數(shù)據(jù)共享應(yīng)當(dāng)達(dá)到兩點:一是實現(xiàn)數(shù)據(jù)庫轉(zhuǎn)換;二是實現(xiàn)數(shù)據(jù)的透明訪問。由華中科技大學(xué)開發(fā)的,擁有自主版權(quán)的商品化數(shù)據(jù)庫管理系統(tǒng)DM3系統(tǒng),通過所提供的數(shù)據(jù)庫轉(zhuǎn)換工具和API接口實現(xiàn)了這兩點。
DM3提供了數(shù)據(jù)庫轉(zhuǎn)換工具,可以將一種數(shù)據(jù)庫系統(tǒng)中定義的模型轉(zhuǎn)化為另一種數(shù)據(jù)庫中的模型,然后根據(jù)需要再裝入數(shù)據(jù),這時用戶就可以利用自己熟悉的數(shù)據(jù)庫系統(tǒng)和熟悉的查詢語言,實現(xiàn)數(shù)據(jù)共享的目標(biāo)。數(shù)據(jù)庫轉(zhuǎn)換工具首先進(jìn)行類型轉(zhuǎn)換,訪問源數(shù)據(jù)庫系統(tǒng),將源數(shù)據(jù)庫的數(shù)據(jù)定義模型轉(zhuǎn)換為目標(biāo)數(shù)據(jù)庫的數(shù)據(jù)定義模型,然后進(jìn)行數(shù)據(jù)重組,即將源數(shù)據(jù)庫系統(tǒng)中的數(shù)據(jù)裝入到目的數(shù)據(jù)庫中。
在轉(zhuǎn)換的過程中,有時要想實現(xiàn)嚴(yán)格的等價轉(zhuǎn)換是比較困難的。首先要確定兩種模型中所存在的各種語法和語義上的沖突,這些沖突可能包括:
命名沖突:即源模型中的標(biāo)識符可能是目的模型中的保留字,這時就需要重新命名。
格式?jīng)_突:同一種數(shù)據(jù)類型可能有不同的表示方法和語義差異,這時需要定義兩種模型之間的變換函數(shù)。
結(jié)構(gòu)沖突:如果兩種數(shù)據(jù)庫系統(tǒng)之間的數(shù)據(jù)定義模型不同,如分別為關(guān)系模型和層次模型,那么需要重新定義實體屬性和聯(lián)系,以防止屬性或聯(lián)系信息的丟失。
總之,在進(jìn)行數(shù)據(jù)轉(zhuǎn)換后,一方面源數(shù)據(jù)庫模式中所有需要共享的信息都轉(zhuǎn)換到目的數(shù)據(jù)庫中,另一方面這種轉(zhuǎn)換又不能包含冗余的關(guān)聯(lián)信息。
數(shù)據(jù)庫轉(zhuǎn)換工具可以實現(xiàn)不同數(shù)據(jù)庫系統(tǒng)之間的數(shù)據(jù)模型轉(zhuǎn)換,需要進(jìn)一步研究的問題是:如果數(shù)據(jù)庫轉(zhuǎn)換同時進(jìn)行數(shù)據(jù)定義模式轉(zhuǎn)換和數(shù)據(jù)轉(zhuǎn)換,就可能引起同一數(shù)據(jù)集合在異構(gòu)數(shù)據(jù)庫系統(tǒng)中存在多個副本,因此需要引入新的訪問控制機(jī)制。在保證各個參與數(shù)據(jù)庫自治,維護(hù)其完整性、安全性的基礎(chǔ)上,對于異構(gòu)數(shù)據(jù)庫系統(tǒng)提供全局的訪問控制、并發(fā)機(jī)制和安全控制。
如果數(shù)據(jù)庫轉(zhuǎn)換只進(jìn)行數(shù)據(jù)定義轉(zhuǎn)換,不產(chǎn)生數(shù)據(jù)的副本,那么在新的目的數(shù)據(jù)庫定義模型的框架下訪問數(shù)據(jù),實現(xiàn)上仍是對源數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)的訪問。這時利用新的數(shù)據(jù)庫系統(tǒng)中的數(shù)據(jù)處理語言實現(xiàn)的事務(wù),不能直接訪問源數(shù)據(jù)庫,必須進(jìn)行事務(wù)級的翻譯才可以執(zhí)行。
數(shù)據(jù)的透明訪問
在異構(gòu)數(shù)據(jù)系統(tǒng)中實現(xiàn)了數(shù)據(jù)的透明訪問,用戶就可以將異構(gòu)分布式數(shù)據(jù)庫系統(tǒng)看成普通的分布式數(shù)據(jù)庫系統(tǒng),用自己熟悉的數(shù)據(jù)處理語言去訪問數(shù)據(jù)庫,如同訪問一個數(shù)據(jù)庫系統(tǒng)一樣。但目前還沒有一種廣泛使用的數(shù)據(jù)定義模型和數(shù)據(jù)查詢語言,實現(xiàn)數(shù)據(jù)的透明訪問可以采用多對一轉(zhuǎn)換、雙向的中間件等技術(shù)。開放式數(shù)據(jù)庫互連(Open DataBase Connectivity,簡稱ODBC)是一種用來在相關(guān)或不相關(guān)的數(shù)據(jù)庫管理系統(tǒng)中存取數(shù)據(jù)的標(biāo)準(zhǔn)應(yīng)用程序接口(API)。ODBC為應(yīng)用程序提供了一套高層調(diào)用接口規(guī)范和基于動態(tài)鏈接庫的運(yùn)行支持環(huán)境。目前,常用的數(shù)據(jù)庫應(yīng)用開發(fā)的前端工具如Power Builder、 Delphi等都通過開放數(shù)據(jù)庫互聯(lián)(ODBC)接口來連接各種數(shù)據(jù)庫系統(tǒng)。而多數(shù)數(shù)據(jù)庫管理系統(tǒng)(如:Oracle、Sybase、SQL Server等)都提供了相應(yīng)的ODBC驅(qū)動程序,使數(shù)據(jù)庫系統(tǒng)具有很好的開放性。ODBC接口的最大優(yōu)點是其互操作能力,理想情況下,每個驅(qū)動程序和數(shù)據(jù)源應(yīng)支持完全相同的ODBC函數(shù)調(diào)用和SQL語句,使得ODBC應(yīng)用程序可以操作所有的數(shù)據(jù)庫系統(tǒng)。然而,實際上不同的數(shù)據(jù)庫對SQL語法的支持程度各不相同,因此,ODBC規(guī)范定義了驅(qū)動程序的一致性級別,ODBC API的一致性確定了應(yīng)用程序所能調(diào)用的ODBC函數(shù)種類,ODBC 2.0規(guī)定了三個級別的函數(shù),目前 DM3 ODBC API支持 ODBC 2.0規(guī)范中第二級擴(kuò)展的所有函數(shù)。
隨著Internet應(yīng)用的不斷普及,Internet的異構(gòu)分布式信息系統(tǒng)正在迅速發(fā)展,Java以其平臺無關(guān)性、移植性強(qiáng),安全性高、穩(wěn)定性好、分布式、面向?qū)ο蟮葍?yōu)點而成為Internet應(yīng)用開發(fā)的首選語言。在Internet環(huán)境下,實現(xiàn)基于異種系統(tǒng)平臺的數(shù)據(jù)庫應(yīng)用,必須提供一個獨立于特定數(shù)據(jù)庫管理系統(tǒng)的統(tǒng)一編程界面和一個基于 SQL的通用的數(shù)據(jù)庫訪問方法。Java與數(shù)據(jù)庫接口規(guī)范JDBC(Java Database Connectivity)是支持基本SQL功能的一個通用的應(yīng)用程序編程接口,它在不同的數(shù)據(jù)庫功能模塊的層次上提供了一個統(tǒng)一的用戶界面,為對異構(gòu)數(shù)據(jù)庫進(jìn)行直接的Web訪問提供了新的解決方案。 JDBC已被越來越多的數(shù)據(jù)庫廠商、連接廠商、Internet服務(wù)廠商及應(yīng)用程序編制者所支持。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評論