複製鏈接
請複製以下鏈接發送給好友

異構數據庫

鎖定
異構數據庫系統是相關的多個數據庫系統的集合,可以實現數據的共享和透明訪問,幾個數據庫系統在加入異構數據庫系統之前本身就已經存在,擁有自己的數據庫管理系統、外構數據庫的各個組成部分具有自身的自治性,實現數據共享的同時,每個數據庫系統仍有自己的應用特性、完整性控制和安全性控制。 [1] 
中文名
異構數據庫
服    務
大型機小型機工作站
屬    性
多個數據庫系統的集合

異構數據庫簡介

異構數據庫系統的異構性主要體現在以下幾個方面:
計算機體系結構的異構
各個參與的數據庫可以分別運行在大型機、小型機工作站、PC或嵌入式系統中。
基礎操作系統的異構
各個數據庫系統的基礎操作系統可以是Unix、Windows NT、 Linux等。
DBMS本身的異構
可以是同為關係型數據庫系統的Oracle、 SQL Server等,也可以是不同數據模型的數據庫,如關係、模式、層次、網絡、面向對象,函數型數據庫共同組成一個異構數據庫系統
----異構數據庫系統的目標在於實現不同數據庫之間的數據信息資源、硬件設備資源和人力資源的合併和共享。其中關鍵的一點就是以局部數據庫模式為基礎,建立全局的數據模式或全局外視圖。這種全局模式對於建立高級的決策支持系統尤為重要。
----大型機構在許多地點都有分支機構,每個子機構的數據庫中都有着自己的信息數據,而決策制訂人員一般只關心宏觀的、為全局模式所描述的信息。建立在數據倉庫技術基礎上的異構數據庫全局模式的描述是一種好的解決方案。數據倉庫可以從異構數據庫系統中的多個數據庫中收集信息,並建立統一的全局模式,同時收集的數據還支持對歷史數據的訪問,用户通過數據倉庫提供的統一的數據接口進行決策支持的查詢。

異構數據庫操作

在SQL Server數據庫之間進行數據導入導出
使用SELECT INTO導出數據
在SQL Server中使用最廣泛的就是通過SELECT INTO語句導出數據,SELECT INTO語句同時具備兩個功能:根據SELECT後跟的字段以及INTO後面跟的表名建立空表(如果SELECT後是*, 空表的結構和FROM所指的表的結構相同);將SELECT查出的數據插入到這個空表中。在使用SELECT INTO語句時,INTO後跟的表必須在數據庫不存在,否則出錯,下面是一個使用SELECT INTO的例子。
假設有一個表table1,字段為f1(int)、f2(varchar(50))。
SELECT * INTO table2 FROM table1
這條SQL語句在建立table2表後,將table1的數據全部插入到table1中的,還可以將*改為f1或f2以便向適當的字段中插入數據。
SELECT INTO不僅可以在同一個數據中建立表,也可以在不同的SQL Server數據庫中建立表。
USE db1
SELECT * INTO db2.dbo.table2 FROM table1
以上語句在數據庫db2中建立了一個所有者是dbo的表table2,在向db2建表時當前登錄的用户必須有在db2建表的權限才能建立table2。使用SELECT INTO要注意的一點是SELECT INTO不可以和COMPUTE一起使用,因為COMPUTE返回的是一組記錄集,這將會引起二義性(即不知道根據哪個表建立空表)。 [2] 

異構數據庫數據共享

----對於異構數據庫系統,實現數據共享應當達到兩點:一是實現數據庫轉換;二是實現數據的透明訪問。由華中科技大學開發的,擁有自主版權的商品化數據庫管理系統DM3系統,通過所提供的數據庫轉換工具和API接口實現了這兩點。
----DM3提供了數據庫轉換工具,可以將一種數據庫系統中定義的模型轉化為另一種數據庫中的模型,然後根據需要再裝入數據,這時用户就可以利用自己熟悉的數據庫系統和熟悉的查詢語言,實現數據共享的目標。數據庫轉換工具首先進行類型轉換,訪問源數據庫系統,將源數據庫的數據定義模型轉換為目標數據庫的數據定義模型,然後進行數據重組,即將源數據庫系統中的數據裝入到目的數據庫中。
----在轉換的過程中,有時要想實現嚴格的等價轉換是比較困難的。首先要確定兩種模型中所存在的各種語法和語義上的衝突,這些衝突可能包括:

異構數據庫命名衝突

即源模型中的標識符可能是目的模型中的保留字,這時就需要重新命名。

異構數據庫格式衝突

同一種數據類型可能有不同的表示方法和語義差異,這時需要定義兩種模型之間的變換函數。

異構數據庫結構衝突

如果兩種數據庫系統之間的數據定義模型不同,如分別為關係模型和層次模型,那麼需要重新定義實體屬性和聯繫,以防止屬性或聯繫信息的丟失。
----總之,在進行數據轉換後,一方面源數據庫模式中所有需要共享的信息都轉換到目的數據庫中,另一方面這種轉換又不能包含冗餘的關聯信息。
----數據庫轉換工具可以實現不同數據庫系統之間的數據模型轉換,需要進一步研究的問題是:如果數據庫轉換同時進行數據定義模式轉換和數據轉換,就可能引起同一數據集合在異構數據庫系統中存在多個副本,因此需要引入新的訪問控制機制。在保證各個參與數據庫自治,維護其完整性、安全性的基礎上,對於異構數據庫系統提供全局的訪問控制、併發機制和安全控制。
----如果數據庫轉換隻進行數據定義轉換,不產生數據的副本,那麼在新的目的數據庫定義模型的框架下訪問數據,實現上仍是對源數據庫系統中數據的訪問。這時利用新的數據庫系統中的數據處理語言實現的事務,不能直接訪問源數據庫,必須進行事務級的翻譯才可以執行。

異構數據庫數據庫系統

----在異構數據系統中實現了數據的透明訪問,用户就可以將異構分佈式數據庫系統看成普通的分佈式數據庫系統,用自己熟悉的數據處理語言去訪問數據庫,如同訪問一個數據庫系統一樣。但還沒有一種廣泛使用的數據定義模型和數據查詢語言,實現數據的透明訪問可以採用多對一轉換、雙向的中間件等技術。開放式數據庫互連(Open DataBase Connectivity,簡稱ODBC)是一種用來在相關或不相關的數據庫管理系統中存取數據的標準應用程序接口(API)。ODBC為應用程序提供了一套高層調用接口規範和基於動態鏈接庫的運行支持環境。常用的數據庫應用開發的前端工具如Power Builder、 Delphi等都通過開放數據庫互聯(ODBC)接口來連接各種數據庫系統。而多數數據庫管理系統(如:Oracle、Sybase、SQL Server等)都提供了相應的ODBC驅動程序,使數據庫系統具有很好的開放性。ODBC接口的最大優點是其互操作能力,理想情況下,每個驅動程序和數據源應支持完全相同的ODBC函數調用和SQL語句,使得ODBC應用程序可以操作所有的數據庫系統。然而,實際上不同的數據庫對SQL語法的支持程度各不相同,因此,ODBC規範定義了驅動程序的一致性級別,ODBC API的一致性確定了應用程序所能調用的ODBC函數種類,ODBC 2.0規定了三個級別的函數, DM3 ODBC API支持 ODBC 2.0規範中第二級擴展的所有函數。

異構數據庫應用

隨着Internet應用的不斷普及,Internet的異構分佈式信息系統正在迅速發展,Java以其平台無關性、移植性強,安全性高、穩定性好、分佈式、面向對象等優點而成為Internet應用開發的首選語言。在Internet環境下,實現基於異種系統平台的數據庫應用,必須提供一個獨立於特定數據庫管理系統的統一編程界面和一個基於 SQL的通用的數據庫訪問方法。Java與數據庫接口規範JDBC(Java Database Connectivity)是支持基本SQL功能的一個通用的應用程序編程接口,它在不同的數據庫功能模塊的層次上提供了一個統一的用户界面,為對異構數據庫進行直接的Web訪問提供了新的解決方案。 JDBC已被越來越多的數據庫廠商、連接廠商、Internet服務廠商及應用程序編制者所支持。
參考資料