物聯(lián)傳媒 旗下網(wǎng)站
登錄 注冊
RFID世界網(wǎng) >  技術文章  >  其他  >  正文

數(shù)字圖書館: 面向數(shù)據(jù)庫的中間件

作者:中國科學院
來源:RFID世界網(wǎng)
日期:2007-04-12 12:34:52
摘要:結(jié)合數(shù)字圖書館建設中數(shù)據(jù)庫訪問的問題,介紹了面向數(shù)據(jù)庫的中間件這一關鍵技術,并對有關產(chǎn)品進行了分析比較。
    前 言  

       自90年代初,數(shù)字圖書館被提出以來,關于數(shù)字圖書館的理論和實踐研究已經(jīng)有了極大的進展。數(shù)字圖書館將成為“未來的決策網(wǎng)絡和應急知識網(wǎng)絡”。隨著Internet的發(fā)展壯大,數(shù)字圖書館的建設實施也在緊鑼密鼓地進行中。網(wǎng)上信息源的分散和系統(tǒng)結(jié)構(gòu)的差異給數(shù)字圖書館的建設帶來很大的困難。此,對各種不同結(jié)構(gòu)的數(shù)據(jù)庫實現(xiàn)透明訪問是數(shù)字圖書館建設中的一個極為重要的問題。而面因向數(shù)據(jù)庫的中間件正是解決這一問題的必由之路。  

  2         面向數(shù)據(jù)庫的中間件  

  2.1       中間件指的是一些系統(tǒng)軟件,它們能使最終用戶和開發(fā)人員覺察不到應用程序所使用的各種服務和資源上的差異。如果一個計算環(huán)境由多個開發(fā)商提供的產(chǎn)品組成,那么這些差異可能是開發(fā)商產(chǎn)品之間的差異或應用程序需求之間的差異造成的。中間件的目的是通過為異質(zhì)計算環(huán)境中的服務和資源提供統(tǒng)一、一致的觀察結(jié)果,簡化用戶界面。中間件在為同一平臺或不同平臺上使用不同開發(fā)商產(chǎn)品的最終用戶或者開發(fā)人員創(chuàng)造了渾然一體的連通性。因此,確切的說,它是透明的,開發(fā)人員和用戶看不到它。中間件可以分為以下幾類:拷貝管理:數(shù)據(jù)提取、數(shù)據(jù)轉(zhuǎn)換、復制、傳播網(wǎng)關:數(shù)據(jù)庫和獨立網(wǎng)關程序到程序中間件:遠程過程調(diào)用(RPC)、事務監(jiān)控程序(TP監(jiān)控程序)、對象請求代理人面向消息的中間件:提供可靠的、同步的、松散連接的交流服務,使得應用程序通過消息、隊列、許可等交換信息。  

  2.2       面向數(shù)據(jù)庫的中間件面向數(shù)據(jù)庫的中間件,簡而言之,就是指一切連接應用程序和數(shù)據(jù)庫的軟件。與一般的中間件一樣,面向數(shù)據(jù)庫的中間件允許開發(fā)人員通過單一的、定義良好的API訪問另一臺計算機上的資源,如數(shù)據(jù)庫服務器。  

  例如,如果一個關系數(shù)據(jù)庫中的數(shù)據(jù)要被作為一個對象來訪問,面向數(shù)據(jù)庫的中間件可以將存儲在關系數(shù)據(jù)庫中的信息映射成源應用程序或目標應用程序可以訪問的對象。對于其它類型的數(shù)據(jù)庫(如:層次型數(shù)據(jù)庫、多維數(shù)據(jù)庫等)也是如此。  

  面向數(shù)據(jù)庫的中間件還可以提供對任意數(shù)量數(shù)據(jù)庫的訪問,而不需考慮數(shù)據(jù)庫的模型和運行平臺,這樣無論是哪一種數(shù)據(jù)庫,SQLServer、DB2、Ora-cle還是Sybase,都可以同時通過同一界面進行訪問。通過這種機制,就可以把不同類型的源數(shù)據(jù)庫和目標數(shù)據(jù)庫映射成相同的模型,使他們易于集成。  

  面向數(shù)據(jù)庫的中間件提供很多重要的功能,包括:應用程序接口將應用程序語言轉(zhuǎn)化為可被目標數(shù)據(jù)庫理解的語言,如:SQL通過網(wǎng)絡傳遞數(shù)據(jù)庫查詢請求在目標數(shù)據(jù)庫中執(zhí)行查詢將響應集(查詢結(jié)果集)通過網(wǎng)絡返回到請求應用程序?qū)㈨憫D(zhuǎn)化為請求應用程序可以理解的格式  

  2.3       面向數(shù)據(jù)的中間件的類型目前面向數(shù)據(jù)庫的中間件有好幾種類型,但基本上都屬于本地中間件、呼叫層接口(CallLayerIn-terface,CLI)和數(shù)據(jù)庫網(wǎng)關。  

  本地中間件是為特定數(shù)據(jù)庫設計的,如Sybase設計的從C++訪問Sybase數(shù)據(jù)庫的中間件就是一個面向數(shù)據(jù)庫的本地中間件。由于是為特定的數(shù)據(jù)庫設計的,面向數(shù)據(jù)庫的本地中間件能提供最佳的訪問性能。但也因此一旦用本地中間件建立了數(shù)據(jù)庫連接,當要改變數(shù)據(jù)庫時,需要對應用程序進行很大的修改。  

  呼叫層接口(CLI)如ODBC和JDBC提供多個數(shù)據(jù)庫的統(tǒng)一界面。它可以把一般通用的接口呼叫轉(zhuǎn)換成任意的數(shù)據(jù)庫本地語言,也可以把響應集再轉(zhuǎn)換成一致的表現(xiàn)形式以便向數(shù)據(jù)庫發(fā)出請求的應用程序可以理解。  

  數(shù)據(jù)庫網(wǎng)關能提供對大型系統(tǒng)內(nèi)部數(shù)據(jù)的訪問。它們可以從統(tǒng)一的應用程序接口集成多個數(shù)據(jù)庫以便訪問、重映射舊的數(shù)據(jù)庫模型(如簡單文件、ISAM、VSAM等)并且對出入數(shù)據(jù)庫網(wǎng)關的查詢和信息進行轉(zhuǎn)換。  

  3         幾種常見的面向數(shù)據(jù)庫的中間件  

  3.1       ODBCODBC實際上并不是一個產(chǎn)品,而是微軟在幾年前創(chuàng)建的一個標準。ODBC是一個CLI(CallLay-erInterface),通過允許開發(fā)者制作一個在大多數(shù)關系數(shù)據(jù)庫中可運行的簡單的API調(diào)用,簡化從Windows(以及其它一些操作系統(tǒng))到數(shù)據(jù)庫的訪問。          

  象所有的中間件一樣,ODBC提供一個定義良好的、不依賴于數(shù)據(jù)庫的API。使用API時,ODBC通過一個驅(qū)動管理器來判定應用程序要連接的數(shù)據(jù)庫的類型,并載入(或卸載)適當?shù)腛DBC驅(qū)動,這樣,就實現(xiàn)使用ODBC的應用程序和數(shù)據(jù)庫之間的相互獨立。  

  ODBC目前提供32位版本。大多數(shù)的數(shù)據(jù)庫都有ODBC驅(qū)動。ODBC是免費的,而其驅(qū)動不是。這些ODBC驅(qū)動可以從數(shù)據(jù)庫供應商或第三方提供商購買。流行的應用程序開發(fā)工具大多通過ODBC提供對數(shù)據(jù)庫的訪問。實際上,ODBC是微軟VisualBasic以及其它開發(fā)工具與數(shù)據(jù)庫連接的唯一途徑。  

  3.2       JDBCJavaSoft的JDBC是第一個支持Java語言的數(shù)據(jù)庫應用程序接口(API),功能上與ODBC相仿,提供Java開發(fā)人員一個從支持Java開發(fā)或支持Java應用程序運行的環(huán)境訪問各種數(shù)據(jù)庫的統(tǒng)一的接口。  

  JDBC主要由兩層組成:JDBC應用程序接口(JDBCAPI)和JDBC驅(qū)動應用程序接口。JDBCAPI提供從應用程序到JDBC管理器的通訊。開發(fā)者通過API使用標準Java機制訪問數(shù)據(jù)庫。數(shù)據(jù)庫供應商提供JDBC驅(qū)動接口,也可以通過JDBC-ODBC連接橋使用傳統(tǒng)的ODBC連接。  

  JDBCAPI定義了一個Java類集,允許Ap-plet、Servlet、JavaBean和Java應用程序連接數(shù)據(jù)庫。通常,由這樣一個小應用通過網(wǎng)絡連接遠程關系數(shù)據(jù)庫服務器,如Syabas、Oracle或Informix。這些由數(shù)據(jù)庫供應商提供的原始的JavaJDBC類與用戶自定義的應用程序類共存,提供一種“純Java”的、可移植的數(shù)據(jù)庫訪問。這樣就允許從任意支持Java的平臺到任意數(shù)據(jù)庫的連接。  

  JDBC管理器和ODBC管理器一樣,按Java小應用或應用程序的需要載入或卸載數(shù)據(jù)庫驅(qū)動器。JDBC支持單個或多個數(shù)據(jù)庫服務器的連接。就是說,一個小應用可以同時連接本地的所有數(shù)據(jù)庫和Internet上的公用數(shù)據(jù)庫。  

  3.3       OLE DB  

  OLEDB常被戲稱為ODBC的“大哥”,它定義了一個數(shù)據(jù)訪問服務器的集合,通過這些服務器可以很容易地連接到任意數(shù)目的數(shù)據(jù)源。這樣,開發(fā)者就可以把多種不同的數(shù)據(jù)源作為單一的虛擬數(shù)據(jù)庫來管理。OLE DB允許使用標準的COM接口訪問數(shù)據(jù)。  

  OLE DB提供開發(fā)者訪問關系數(shù)據(jù)庫、文件、擴展表、電子郵件等數(shù)據(jù)的方法。通過COM接口,開發(fā)者可以使用OLEDB方便地集成面向?qū)ο蟮臄?shù)據(jù)庫和多維數(shù)據(jù)庫。使用OLEDB時,數(shù)據(jù)庫被簡單的看作一個數(shù)據(jù)提供者組件。任何通過OLEDB使用本地數(shù)據(jù)格式和表現(xiàn)方法的組件都被視為數(shù)據(jù)提供者,包括關系數(shù)據(jù)庫(使用ODBC)、ISAM文件、文本文件、E-mail、微軟Word文件和數(shù)據(jù)流文件。這里的核心思想是生成獨立的OLEDB組件對象用以調(diào)度數(shù)據(jù)提供者的各種附加特性和功能。這些獨立的OLEDB組件叫做“服務提供者”。服務提供者類似于查詢處理器允許應用程序使用它們實現(xiàn)不同數(shù)據(jù)聯(lián)合(同族的或異族的)之間的互聯(lián)。數(shù)據(jù)以單一的視圖的形式存在,而不管它們的數(shù)據(jù)模型是關系型的、面向?qū)ο蟮倪€是多維的。  

  與數(shù)據(jù)提供者相對的是OLEDB數(shù)據(jù)消費者、單個數(shù)據(jù)提供者的應用程序或作用于任意多數(shù)據(jù)提供者的類屬消費者。如微軟的Excel、Word、Project都可以成為數(shù)據(jù)消費者。  

  3.4       數(shù)據(jù)庫網(wǎng)關  

  數(shù)據(jù)庫網(wǎng)關(也叫SQL網(wǎng)關)是一種應用程序接口(API),通過使用同一接口提供對運行在多種平臺上的不同數(shù)據(jù)庫的訪問。它們類似于實際的數(shù)據(jù)庫中間件產(chǎn)品,提供給開發(fā)者到任意數(shù)目數(shù)據(jù)庫的訪問接口,包括一些運行在典型的不易訪問的環(huán)境下的數(shù)據(jù)庫。如,通過一個ODBC接口和一個數(shù)據(jù)庫網(wǎng)關,可以同時訪問存儲在大型主機環(huán)境下的DB2數(shù)據(jù)庫、小型機上的Oracle數(shù)據(jù)庫和Unix服務器上的Sybase數(shù)據(jù)庫。開發(fā)者只需使用一個API調(diào)用,數(shù)據(jù)庫網(wǎng)關就可以完成所有的其它工作。數(shù)據(jù)庫網(wǎng)關把SQL調(diào)用解釋成為標準FAP(FormatandProtocol)格式。FAP格式通用的客戶機和服務器連接,也是異質(zhì)數(shù)據(jù)庫和運行平臺的通用聯(lián)結(jié)。網(wǎng)關可以把API調(diào)用直接翻譯成FAP,把請求傳遞到目標數(shù)據(jù)庫并翻譯以便目標數(shù)據(jù)庫和平臺做出響應。目前市場上有很多數(shù)據(jù)庫網(wǎng)關產(chǎn)品,如EDA/SQL、RDA、DRDA等。  

       RDA并不是一種產(chǎn)品,它是一個開發(fā)者訪問數(shù)據(jù)的標準。RDA使用OSI并且支持動態(tài)SQL語句,允許客戶端同時連接一個以上的數(shù)據(jù)庫。但它不支持典型的事務相關服務。  

  DRDA是IBM的一個數(shù)據(jù)庫連接標準,它有許多數(shù)據(jù)庫的支持如Sybase,Oracle,IBI和Informix。與其它的數(shù)據(jù)庫網(wǎng)關一樣,DRDA提供便利的運行在多平臺環(huán)境下的任意數(shù)目數(shù)據(jù)庫的連接。DRDA把數(shù)據(jù)庫任務定義為遠程請求、遠程工作單元、分布式工作單元和分布式請求。DRDA是一個定義良好的標準,它要求數(shù)據(jù)庫符合標準的SQL語法,以便能夠充分發(fā)揮DRDA在不同的系統(tǒng)、不同的情況下運行不同的數(shù)據(jù)庫的功能  

  4         結(jié)束語  

  隨著計算機、通訊、多媒體、高密度存儲等信息技術的發(fā)展和應用,尤其是網(wǎng)絡的迅速普及和擴大,數(shù)字圖書館的建設已經(jīng)成為各國信息水平的標志。而在數(shù)字圖書館的建設中,中間件的使用則是解決異質(zhì)平臺、異質(zhì)環(huán)境、異質(zhì)數(shù)據(jù)庫的統(tǒng)一訪問、統(tǒng)一存取的最佳方案,在數(shù)字圖書館的研究和建設中已經(jīng)有了應用,并起到了良好的效果。隨著應用需求的發(fā)展,中間件的研究和功能也越來越被重視,應用也越來越多。面向數(shù)據(jù)庫的中間件是數(shù)字圖書館的一項關鍵技術,必將在數(shù)字圖書館的建設中發(fā)揮更大的作用。