RFID世界網(wǎng) >
技術(shù)文章 >
其他 >
正文
數(shù)字圖書館: 面向數(shù)據(jù)庫的中間件
作者:中國(guó)科學(xué)院
來源:RFID世界網(wǎng)
日期:2007-04-12 12:34:52
摘要:結(jié)合數(shù)字圖書館建設(shè)中數(shù)據(jù)庫訪問的問題,介紹了面向數(shù)據(jù)庫的中間件這一關(guān)鍵技術(shù),并對(duì)有關(guān)產(chǎn)品進(jìn)行了分析比較。
前 言
自90年代初,數(shù)字圖書館被提出以來,關(guān)于數(shù)字圖書館的理論和實(shí)踐研究已經(jīng)有了極大的進(jìn)展。數(shù)字圖書館將成為“未來的決策網(wǎng)絡(luò)和應(yīng)急知識(shí)網(wǎng)絡(luò)”。隨著Internet的發(fā)展壯大,數(shù)字圖書館的建設(shè)實(shí)施也在緊鑼密鼓地進(jìn)行中。網(wǎng)上信息源的分散和系統(tǒng)結(jié)構(gòu)的差異給數(shù)字圖書館的建設(shè)帶來很大的困難。此,對(duì)各種不同結(jié)構(gòu)的數(shù)據(jù)庫實(shí)現(xiàn)透明訪問是數(shù)字圖書館建設(shè)中的一個(gè)極為重要的問題。而面因向數(shù)據(jù)庫的中間件正是解決這一問題的必由之路。
2 面向數(shù)據(jù)庫的中間件
2.1 中間件指的是一些系統(tǒng)軟件,它們能使最終用戶和開發(fā)人員覺察不到應(yīng)用程序所使用的各種服務(wù)和資源上的差異。如果一個(gè)計(jì)算環(huán)境由多個(gè)開發(fā)商提供的產(chǎn)品組成,那么這些差異可能是開發(fā)商產(chǎn)品之間的差異或應(yīng)用程序需求之間的差異造成的。中間件的目的是通過為異質(zhì)計(jì)算環(huán)境中的服務(wù)和資源提供統(tǒng)一、一致的觀察結(jié)果,簡(jiǎn)化用戶界面。中間件在為同一平臺(tái)或不同平臺(tái)上使用不同開發(fā)商產(chǎn)品的最終用戶或者開發(fā)人員創(chuàng)造了渾然一體的連通性。因此,確切的說,它是透明的,開發(fā)人員和用戶看不到它。中間件可以分為以下幾類:拷貝管理:數(shù)據(jù)提取、數(shù)據(jù)轉(zhuǎn)換、復(fù)制、傳播網(wǎng)關(guān):數(shù)據(jù)庫和獨(dú)立網(wǎng)關(guān)程序到程序中間件:遠(yuǎn)程過程調(diào)用(RPC)、事務(wù)監(jiān)控程序(TP監(jiān)控程序)、對(duì)象請(qǐng)求代理人面向消息的中間件:提供可靠的、同步的、松散連接的交流服務(wù),使得應(yīng)用程序通過消息、隊(duì)列、許可等交換信息。
2.2 面向數(shù)據(jù)庫的中間件面向數(shù)據(jù)庫的中間件,簡(jiǎn)而言之,就是指一切連接應(yīng)用程序和數(shù)據(jù)庫的軟件。與一般的中間件一樣,面向數(shù)據(jù)庫的中間件允許開發(fā)人員通過單一的、定義良好的API訪問另一臺(tái)計(jì)算機(jī)上的資源,如數(shù)據(jù)庫服務(wù)器。
例如,如果一個(gè)關(guān)系數(shù)據(jù)庫中的數(shù)據(jù)要被作為一個(gè)對(duì)象來訪問,面向數(shù)據(jù)庫的中間件可以將存儲(chǔ)在關(guān)系數(shù)據(jù)庫中的信息映射成源應(yīng)用程序或目標(biāo)應(yīng)用程序可以訪問的對(duì)象。對(duì)于其它類型的數(shù)據(jù)庫(如:層次型數(shù)據(jù)庫、多維數(shù)據(jù)庫等)也是如此。
面向數(shù)據(jù)庫的中間件還可以提供對(duì)任意數(shù)量數(shù)據(jù)庫的訪問,而不需考慮數(shù)據(jù)庫的模型和運(yùn)行平臺(tái),這樣無論是哪一種數(shù)據(jù)庫,SQLServer、DB2、Ora-cle還是Sybase,都可以同時(shí)通過同一界面進(jìn)行訪問。通過這種機(jī)制,就可以把不同類型的源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫映射成相同的模型,使他們易于集成。
面向數(shù)據(jù)庫的中間件提供很多重要的功能,包括:應(yīng)用程序接口將應(yīng)用程序語言轉(zhuǎn)化為可被目標(biāo)數(shù)據(jù)庫理解的語言,如:SQL通過網(wǎng)絡(luò)傳遞數(shù)據(jù)庫查詢請(qǐng)求在目標(biāo)數(shù)據(jù)庫中執(zhí)行查詢將響應(yīng)集(查詢結(jié)果集)通過網(wǎng)絡(luò)返回到請(qǐng)求應(yīng)用程序?qū)㈨憫?yīng)集轉(zhuǎn)化為請(qǐng)求應(yīng)用程序可以理解的格式
2.3 面向數(shù)據(jù)的中間件的類型目前面向數(shù)據(jù)庫的中間件有好幾種類型,但基本上都屬于本地中間件、呼叫層接口(CallLayerIn-terface,CLI)和數(shù)據(jù)庫網(wǎng)關(guān)。
本地中間件是為特定數(shù)據(jù)庫設(shè)計(jì)的,如Sybase設(shè)計(jì)的從C++訪問Sybase數(shù)據(jù)庫的中間件就是一個(gè)面向數(shù)據(jù)庫的本地中間件。由于是為特定的數(shù)據(jù)庫設(shè)計(jì)的,面向數(shù)據(jù)庫的本地中間件能提供最佳的訪問性能。但也因此一旦用本地中間件建立了數(shù)據(jù)庫連接,當(dāng)要改變數(shù)據(jù)庫時(shí),需要對(duì)應(yīng)用程序進(jìn)行很大的修改。
呼叫層接口(CLI)如ODBC和JDBC提供多個(gè)數(shù)據(jù)庫的統(tǒng)一界面。它可以把一般通用的接口呼叫轉(zhuǎn)換成任意的數(shù)據(jù)庫本地語言,也可以把響應(yīng)集再轉(zhuǎn)換成一致的表現(xiàn)形式以便向數(shù)據(jù)庫發(fā)出請(qǐng)求的應(yīng)用程序可以理解。
數(shù)據(jù)庫網(wǎng)關(guān)能提供對(duì)大型系統(tǒng)內(nèi)部數(shù)據(jù)的訪問。它們可以從統(tǒng)一的應(yīng)用程序接口集成多個(gè)數(shù)據(jù)庫以便訪問、重映射舊的數(shù)據(jù)庫模型(如簡(jiǎn)單文件、ISAM、VSAM等)并且對(duì)出入數(shù)據(jù)庫網(wǎng)關(guān)的查詢和信息進(jìn)行轉(zhuǎn)換。
3 幾種常見的面向數(shù)據(jù)庫的中間件
3.1 ODBCODBC實(shí)際上并不是一個(gè)產(chǎn)品,而是微軟在幾年前創(chuàng)建的一個(gè)標(biāo)準(zhǔn)。ODBC是一個(gè)CLI(CallLay-erInterface),通過允許開發(fā)者制作一個(gè)在大多數(shù)關(guān)系數(shù)據(jù)庫中可運(yùn)行的簡(jiǎn)單的API調(diào)用,簡(jiǎn)化從Windows(以及其它一些操作系統(tǒng))到數(shù)據(jù)庫的訪問。
象所有的中間件一樣,ODBC提供一個(gè)定義良好的、不依賴于數(shù)據(jù)庫的API。使用API時(shí),ODBC通過一個(gè)驅(qū)動(dòng)管理器來判定應(yīng)用程序要連接的數(shù)據(jù)庫的類型,并載入(或卸載)適當(dāng)?shù)腛DBC驅(qū)動(dòng),這樣,就實(shí)現(xiàn)使用ODBC的應(yīng)用程序和數(shù)據(jù)庫之間的相互獨(dú)立。
ODBC目前提供32位版本。大多數(shù)的數(shù)據(jù)庫都有ODBC驅(qū)動(dòng)。ODBC是免費(fèi)的,而其驅(qū)動(dòng)不是。這些ODBC驅(qū)動(dòng)可以從數(shù)據(jù)庫供應(yīng)商或第三方提供商購(gòu)買。流行的應(yīng)用程序開發(fā)工具大多通過ODBC提供對(duì)數(shù)據(jù)庫的訪問。實(shí)際上,ODBC是微軟VisualBasic以及其它開發(fā)工具與數(shù)據(jù)庫連接的唯一途徑。
3.2 JDBCJavaSoft的JDBC是第一個(gè)支持Java語言的數(shù)據(jù)庫應(yīng)用程序接口(API),功能上與ODBC相仿,提供Java開發(fā)人員一個(gè)從支持Java開發(fā)或支持Java應(yīng)用程序運(yùn)行的環(huán)境訪問各種數(shù)據(jù)庫的統(tǒng)一的接口。
JDBC主要由兩層組成:JDBC應(yīng)用程序接口(JDBCAPI)和JDBC驅(qū)動(dòng)應(yīng)用程序接口。JDBCAPI提供從應(yīng)用程序到JDBC管理器的通訊。開發(fā)者通過API使用標(biāo)準(zhǔn)Java機(jī)制訪問數(shù)據(jù)庫。數(shù)據(jù)庫供應(yīng)商提供JDBC驅(qū)動(dòng)接口,也可以通過JDBC-ODBC連接橋使用傳統(tǒng)的ODBC連接。
JDBCAPI定義了一個(gè)Java類集,允許Ap-plet、Servlet、JavaBean和Java應(yīng)用程序連接數(shù)據(jù)庫。通常,由這樣一個(gè)小應(yīng)用通過網(wǎng)絡(luò)連接遠(yuǎn)程關(guān)系數(shù)據(jù)庫服務(wù)器,如Syabas、Oracle或Informix。這些由數(shù)據(jù)庫供應(yīng)商提供的原始的JavaJDBC類與用戶自定義的應(yīng)用程序類共存,提供一種“純Java”的、可移植的數(shù)據(jù)庫訪問。這樣就允許從任意支持Java的平臺(tái)到任意數(shù)據(jù)庫的連接。
JDBC管理器和ODBC管理器一樣,按Java小應(yīng)用或應(yīng)用程序的需要載入或卸載數(shù)據(jù)庫驅(qū)動(dòng)器。JDBC支持單個(gè)或多個(gè)數(shù)據(jù)庫服務(wù)器的連接。就是說,一個(gè)小應(yīng)用可以同時(shí)連接本地的所有數(shù)據(jù)庫和Internet上的公用數(shù)據(jù)庫。
3.3 OLE DB
OLEDB常被戲稱為ODBC的“大哥”,它定義了一個(gè)數(shù)據(jù)訪問服務(wù)器的集合,通過這些服務(wù)器可以很容易地連接到任意數(shù)目的數(shù)據(jù)源。這樣,開發(fā)者就可以把多種不同的數(shù)據(jù)源作為單一的虛擬數(shù)據(jù)庫來管理。OLE DB允許使用標(biāo)準(zhǔn)的COM接口訪問數(shù)據(jù)。
OLE DB提供開發(fā)者訪問關(guān)系數(shù)據(jù)庫、文件、擴(kuò)展表、電子郵件等數(shù)據(jù)的方法。通過COM接口,開發(fā)者可以使用OLEDB方便地集成面向?qū)ο蟮臄?shù)據(jù)庫和多維數(shù)據(jù)庫。使用OLEDB時(shí),數(shù)據(jù)庫被簡(jiǎn)單的看作一個(gè)數(shù)據(jù)提供者組件。任何通過OLEDB使用本地?cái)?shù)據(jù)格式和表現(xiàn)方法的組件都被視為數(shù)據(jù)提供者,包括關(guān)系數(shù)據(jù)庫(使用ODBC)、ISAM文件、文本文件、E-mail、微軟Word文件和數(shù)據(jù)流文件。這里的核心思想是生成獨(dú)立的OLEDB組件對(duì)象用以調(diào)度數(shù)據(jù)提供者的各種附加特性和功能。這些獨(dú)立的OLEDB組件叫做“服務(wù)提供者”。服務(wù)提供者類似于查詢處理器允許應(yīng)用程序使用它們實(shí)現(xiàn)不同數(shù)據(jù)聯(lián)合(同族的或異族的)之間的互聯(lián)。數(shù)據(jù)以單一的視圖的形式存在,而不管它們的數(shù)據(jù)模型是關(guān)系型的、面向?qū)ο蟮倪€是多維的。
與數(shù)據(jù)提供者相對(duì)的是OLEDB數(shù)據(jù)消費(fèi)者、單個(gè)數(shù)據(jù)提供者的應(yīng)用程序或作用于任意多數(shù)據(jù)提供者的類屬消費(fèi)者。如微軟的Excel、Word、Project都可以成為數(shù)據(jù)消費(fèi)者。
3.4 數(shù)據(jù)庫網(wǎng)關(guān)
數(shù)據(jù)庫網(wǎng)關(guān)(也叫SQL網(wǎng)關(guān))是一種應(yīng)用程序接口(API),通過使用同一接口提供對(duì)運(yùn)行在多種平臺(tái)上的不同數(shù)據(jù)庫的訪問。它們類似于實(shí)際的數(shù)據(jù)庫中間件產(chǎn)品,提供給開發(fā)者到任意數(shù)目數(shù)據(jù)庫的訪問接口,包括一些運(yùn)行在典型的不易訪問的環(huán)境下的數(shù)據(jù)庫。如,通過一個(gè)ODBC接口和一個(gè)數(shù)據(jù)庫網(wǎng)關(guān),可以同時(shí)訪問存儲(chǔ)在大型主機(jī)環(huán)境下的DB2數(shù)據(jù)庫、小型機(jī)上的Oracle數(shù)據(jù)庫和Unix服務(wù)器上的Sybase數(shù)據(jù)庫。開發(fā)者只需使用一個(gè)API調(diào)用,數(shù)據(jù)庫網(wǎng)關(guān)就可以完成所有的其它工作。數(shù)據(jù)庫網(wǎng)關(guān)把SQL調(diào)用解釋成為標(biāo)準(zhǔn)FAP(FormatandProtocol)格式。FAP格式通用的客戶機(jī)和服務(wù)器連接,也是異質(zhì)數(shù)據(jù)庫和運(yùn)行平臺(tái)的通用聯(lián)結(jié)。網(wǎng)關(guān)可以把API調(diào)用直接翻譯成FAP,把請(qǐng)求傳遞到目標(biāo)數(shù)據(jù)庫并翻譯以便目標(biāo)數(shù)據(jù)庫和平臺(tái)做出響應(yīng)。目前市場(chǎng)上有很多數(shù)據(jù)庫網(wǎng)關(guān)產(chǎn)品,如EDA/SQL、RDA、DRDA等。
RDA并不是一種產(chǎn)品,它是一個(gè)開發(fā)者訪問數(shù)據(jù)的標(biāo)準(zhǔn)。RDA使用OSI并且支持動(dòng)態(tài)SQL語句,允許客戶端同時(shí)連接一個(gè)以上的數(shù)據(jù)庫。但它不支持典型的事務(wù)相關(guān)服務(wù)。
DRDA是IBM的一個(gè)數(shù)據(jù)庫連接標(biāo)準(zhǔn),它有許多數(shù)據(jù)庫的支持如Sybase,Oracle,IBI和Informix。與其它的數(shù)據(jù)庫網(wǎng)關(guān)一樣,DRDA提供便利的運(yùn)行在多平臺(tái)環(huán)境下的任意數(shù)目數(shù)據(jù)庫的連接。DRDA把數(shù)據(jù)庫任務(wù)定義為遠(yuǎn)程請(qǐng)求、遠(yuǎn)程工作單元、分布式工作單元和分布式請(qǐng)求。DRDA是一個(gè)定義良好的標(biāo)準(zhǔn),它要求數(shù)據(jù)庫符合標(biāo)準(zhǔn)的SQL語法,以便能夠充分發(fā)揮DRDA在不同的系統(tǒng)、不同的情況下運(yùn)行不同的數(shù)據(jù)庫的功能
4 結(jié)束語
隨著計(jì)算機(jī)、通訊、多媒體、高密度存儲(chǔ)等信息技術(shù)的發(fā)展和應(yīng)用,尤其是網(wǎng)絡(luò)的迅速普及和擴(kuò)大,數(shù)字圖書館的建設(shè)已經(jīng)成為各國(guó)信息水平的標(biāo)志。而在數(shù)字圖書館的建設(shè)中,中間件的使用則是解決異質(zhì)平臺(tái)、異質(zhì)環(huán)境、異質(zhì)數(shù)據(jù)庫的統(tǒng)一訪問、統(tǒng)一存取的最佳方案,在數(shù)字圖書館的研究和建設(shè)中已經(jīng)有了應(yīng)用,并起到了良好的效果。隨著應(yīng)用需求的發(fā)展,中間件的研究和功能也越來越被重視,應(yīng)用也越來越多。面向數(shù)據(jù)庫的中間件是數(shù)字圖書館的一項(xiàng)關(guān)鍵技術(shù),必將在數(shù)字圖書館的建設(shè)中發(fā)揮更大的作用。
自90年代初,數(shù)字圖書館被提出以來,關(guān)于數(shù)字圖書館的理論和實(shí)踐研究已經(jīng)有了極大的進(jìn)展。數(shù)字圖書館將成為“未來的決策網(wǎng)絡(luò)和應(yīng)急知識(shí)網(wǎng)絡(luò)”。隨著Internet的發(fā)展壯大,數(shù)字圖書館的建設(shè)實(shí)施也在緊鑼密鼓地進(jìn)行中。網(wǎng)上信息源的分散和系統(tǒng)結(jié)構(gòu)的差異給數(shù)字圖書館的建設(shè)帶來很大的困難。此,對(duì)各種不同結(jié)構(gòu)的數(shù)據(jù)庫實(shí)現(xiàn)透明訪問是數(shù)字圖書館建設(shè)中的一個(gè)極為重要的問題。而面因向數(shù)據(jù)庫的中間件正是解決這一問題的必由之路。
2 面向數(shù)據(jù)庫的中間件
2.1 中間件指的是一些系統(tǒng)軟件,它們能使最終用戶和開發(fā)人員覺察不到應(yīng)用程序所使用的各種服務(wù)和資源上的差異。如果一個(gè)計(jì)算環(huán)境由多個(gè)開發(fā)商提供的產(chǎn)品組成,那么這些差異可能是開發(fā)商產(chǎn)品之間的差異或應(yīng)用程序需求之間的差異造成的。中間件的目的是通過為異質(zhì)計(jì)算環(huán)境中的服務(wù)和資源提供統(tǒng)一、一致的觀察結(jié)果,簡(jiǎn)化用戶界面。中間件在為同一平臺(tái)或不同平臺(tái)上使用不同開發(fā)商產(chǎn)品的最終用戶或者開發(fā)人員創(chuàng)造了渾然一體的連通性。因此,確切的說,它是透明的,開發(fā)人員和用戶看不到它。中間件可以分為以下幾類:拷貝管理:數(shù)據(jù)提取、數(shù)據(jù)轉(zhuǎn)換、復(fù)制、傳播網(wǎng)關(guān):數(shù)據(jù)庫和獨(dú)立網(wǎng)關(guān)程序到程序中間件:遠(yuǎn)程過程調(diào)用(RPC)、事務(wù)監(jiān)控程序(TP監(jiān)控程序)、對(duì)象請(qǐng)求代理人面向消息的中間件:提供可靠的、同步的、松散連接的交流服務(wù),使得應(yīng)用程序通過消息、隊(duì)列、許可等交換信息。
2.2 面向數(shù)據(jù)庫的中間件面向數(shù)據(jù)庫的中間件,簡(jiǎn)而言之,就是指一切連接應(yīng)用程序和數(shù)據(jù)庫的軟件。與一般的中間件一樣,面向數(shù)據(jù)庫的中間件允許開發(fā)人員通過單一的、定義良好的API訪問另一臺(tái)計(jì)算機(jī)上的資源,如數(shù)據(jù)庫服務(wù)器。
例如,如果一個(gè)關(guān)系數(shù)據(jù)庫中的數(shù)據(jù)要被作為一個(gè)對(duì)象來訪問,面向數(shù)據(jù)庫的中間件可以將存儲(chǔ)在關(guān)系數(shù)據(jù)庫中的信息映射成源應(yīng)用程序或目標(biāo)應(yīng)用程序可以訪問的對(duì)象。對(duì)于其它類型的數(shù)據(jù)庫(如:層次型數(shù)據(jù)庫、多維數(shù)據(jù)庫等)也是如此。
面向數(shù)據(jù)庫的中間件還可以提供對(duì)任意數(shù)量數(shù)據(jù)庫的訪問,而不需考慮數(shù)據(jù)庫的模型和運(yùn)行平臺(tái),這樣無論是哪一種數(shù)據(jù)庫,SQLServer、DB2、Ora-cle還是Sybase,都可以同時(shí)通過同一界面進(jìn)行訪問。通過這種機(jī)制,就可以把不同類型的源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫映射成相同的模型,使他們易于集成。
面向數(shù)據(jù)庫的中間件提供很多重要的功能,包括:應(yīng)用程序接口將應(yīng)用程序語言轉(zhuǎn)化為可被目標(biāo)數(shù)據(jù)庫理解的語言,如:SQL通過網(wǎng)絡(luò)傳遞數(shù)據(jù)庫查詢請(qǐng)求在目標(biāo)數(shù)據(jù)庫中執(zhí)行查詢將響應(yīng)集(查詢結(jié)果集)通過網(wǎng)絡(luò)返回到請(qǐng)求應(yīng)用程序?qū)㈨憫?yīng)集轉(zhuǎn)化為請(qǐng)求應(yīng)用程序可以理解的格式
2.3 面向數(shù)據(jù)的中間件的類型目前面向數(shù)據(jù)庫的中間件有好幾種類型,但基本上都屬于本地中間件、呼叫層接口(CallLayerIn-terface,CLI)和數(shù)據(jù)庫網(wǎng)關(guān)。
本地中間件是為特定數(shù)據(jù)庫設(shè)計(jì)的,如Sybase設(shè)計(jì)的從C++訪問Sybase數(shù)據(jù)庫的中間件就是一個(gè)面向數(shù)據(jù)庫的本地中間件。由于是為特定的數(shù)據(jù)庫設(shè)計(jì)的,面向數(shù)據(jù)庫的本地中間件能提供最佳的訪問性能。但也因此一旦用本地中間件建立了數(shù)據(jù)庫連接,當(dāng)要改變數(shù)據(jù)庫時(shí),需要對(duì)應(yīng)用程序進(jìn)行很大的修改。
呼叫層接口(CLI)如ODBC和JDBC提供多個(gè)數(shù)據(jù)庫的統(tǒng)一界面。它可以把一般通用的接口呼叫轉(zhuǎn)換成任意的數(shù)據(jù)庫本地語言,也可以把響應(yīng)集再轉(zhuǎn)換成一致的表現(xiàn)形式以便向數(shù)據(jù)庫發(fā)出請(qǐng)求的應(yīng)用程序可以理解。
數(shù)據(jù)庫網(wǎng)關(guān)能提供對(duì)大型系統(tǒng)內(nèi)部數(shù)據(jù)的訪問。它們可以從統(tǒng)一的應(yīng)用程序接口集成多個(gè)數(shù)據(jù)庫以便訪問、重映射舊的數(shù)據(jù)庫模型(如簡(jiǎn)單文件、ISAM、VSAM等)并且對(duì)出入數(shù)據(jù)庫網(wǎng)關(guān)的查詢和信息進(jìn)行轉(zhuǎn)換。
3 幾種常見的面向數(shù)據(jù)庫的中間件
3.1 ODBCODBC實(shí)際上并不是一個(gè)產(chǎn)品,而是微軟在幾年前創(chuàng)建的一個(gè)標(biāo)準(zhǔn)。ODBC是一個(gè)CLI(CallLay-erInterface),通過允許開發(fā)者制作一個(gè)在大多數(shù)關(guān)系數(shù)據(jù)庫中可運(yùn)行的簡(jiǎn)單的API調(diào)用,簡(jiǎn)化從Windows(以及其它一些操作系統(tǒng))到數(shù)據(jù)庫的訪問。
象所有的中間件一樣,ODBC提供一個(gè)定義良好的、不依賴于數(shù)據(jù)庫的API。使用API時(shí),ODBC通過一個(gè)驅(qū)動(dòng)管理器來判定應(yīng)用程序要連接的數(shù)據(jù)庫的類型,并載入(或卸載)適當(dāng)?shù)腛DBC驅(qū)動(dòng),這樣,就實(shí)現(xiàn)使用ODBC的應(yīng)用程序和數(shù)據(jù)庫之間的相互獨(dú)立。
ODBC目前提供32位版本。大多數(shù)的數(shù)據(jù)庫都有ODBC驅(qū)動(dòng)。ODBC是免費(fèi)的,而其驅(qū)動(dòng)不是。這些ODBC驅(qū)動(dòng)可以從數(shù)據(jù)庫供應(yīng)商或第三方提供商購(gòu)買。流行的應(yīng)用程序開發(fā)工具大多通過ODBC提供對(duì)數(shù)據(jù)庫的訪問。實(shí)際上,ODBC是微軟VisualBasic以及其它開發(fā)工具與數(shù)據(jù)庫連接的唯一途徑。
3.2 JDBCJavaSoft的JDBC是第一個(gè)支持Java語言的數(shù)據(jù)庫應(yīng)用程序接口(API),功能上與ODBC相仿,提供Java開發(fā)人員一個(gè)從支持Java開發(fā)或支持Java應(yīng)用程序運(yùn)行的環(huán)境訪問各種數(shù)據(jù)庫的統(tǒng)一的接口。
JDBC主要由兩層組成:JDBC應(yīng)用程序接口(JDBCAPI)和JDBC驅(qū)動(dòng)應(yīng)用程序接口。JDBCAPI提供從應(yīng)用程序到JDBC管理器的通訊。開發(fā)者通過API使用標(biāo)準(zhǔn)Java機(jī)制訪問數(shù)據(jù)庫。數(shù)據(jù)庫供應(yīng)商提供JDBC驅(qū)動(dòng)接口,也可以通過JDBC-ODBC連接橋使用傳統(tǒng)的ODBC連接。
JDBCAPI定義了一個(gè)Java類集,允許Ap-plet、Servlet、JavaBean和Java應(yīng)用程序連接數(shù)據(jù)庫。通常,由這樣一個(gè)小應(yīng)用通過網(wǎng)絡(luò)連接遠(yuǎn)程關(guān)系數(shù)據(jù)庫服務(wù)器,如Syabas、Oracle或Informix。這些由數(shù)據(jù)庫供應(yīng)商提供的原始的JavaJDBC類與用戶自定義的應(yīng)用程序類共存,提供一種“純Java”的、可移植的數(shù)據(jù)庫訪問。這樣就允許從任意支持Java的平臺(tái)到任意數(shù)據(jù)庫的連接。
JDBC管理器和ODBC管理器一樣,按Java小應(yīng)用或應(yīng)用程序的需要載入或卸載數(shù)據(jù)庫驅(qū)動(dòng)器。JDBC支持單個(gè)或多個(gè)數(shù)據(jù)庫服務(wù)器的連接。就是說,一個(gè)小應(yīng)用可以同時(shí)連接本地的所有數(shù)據(jù)庫和Internet上的公用數(shù)據(jù)庫。
3.3 OLE DB
OLEDB常被戲稱為ODBC的“大哥”,它定義了一個(gè)數(shù)據(jù)訪問服務(wù)器的集合,通過這些服務(wù)器可以很容易地連接到任意數(shù)目的數(shù)據(jù)源。這樣,開發(fā)者就可以把多種不同的數(shù)據(jù)源作為單一的虛擬數(shù)據(jù)庫來管理。OLE DB允許使用標(biāo)準(zhǔn)的COM接口訪問數(shù)據(jù)。
OLE DB提供開發(fā)者訪問關(guān)系數(shù)據(jù)庫、文件、擴(kuò)展表、電子郵件等數(shù)據(jù)的方法。通過COM接口,開發(fā)者可以使用OLEDB方便地集成面向?qū)ο蟮臄?shù)據(jù)庫和多維數(shù)據(jù)庫。使用OLEDB時(shí),數(shù)據(jù)庫被簡(jiǎn)單的看作一個(gè)數(shù)據(jù)提供者組件。任何通過OLEDB使用本地?cái)?shù)據(jù)格式和表現(xiàn)方法的組件都被視為數(shù)據(jù)提供者,包括關(guān)系數(shù)據(jù)庫(使用ODBC)、ISAM文件、文本文件、E-mail、微軟Word文件和數(shù)據(jù)流文件。這里的核心思想是生成獨(dú)立的OLEDB組件對(duì)象用以調(diào)度數(shù)據(jù)提供者的各種附加特性和功能。這些獨(dú)立的OLEDB組件叫做“服務(wù)提供者”。服務(wù)提供者類似于查詢處理器允許應(yīng)用程序使用它們實(shí)現(xiàn)不同數(shù)據(jù)聯(lián)合(同族的或異族的)之間的互聯(lián)。數(shù)據(jù)以單一的視圖的形式存在,而不管它們的數(shù)據(jù)模型是關(guān)系型的、面向?qū)ο蟮倪€是多維的。
與數(shù)據(jù)提供者相對(duì)的是OLEDB數(shù)據(jù)消費(fèi)者、單個(gè)數(shù)據(jù)提供者的應(yīng)用程序或作用于任意多數(shù)據(jù)提供者的類屬消費(fèi)者。如微軟的Excel、Word、Project都可以成為數(shù)據(jù)消費(fèi)者。
3.4 數(shù)據(jù)庫網(wǎng)關(guān)
數(shù)據(jù)庫網(wǎng)關(guān)(也叫SQL網(wǎng)關(guān))是一種應(yīng)用程序接口(API),通過使用同一接口提供對(duì)運(yùn)行在多種平臺(tái)上的不同數(shù)據(jù)庫的訪問。它們類似于實(shí)際的數(shù)據(jù)庫中間件產(chǎn)品,提供給開發(fā)者到任意數(shù)目數(shù)據(jù)庫的訪問接口,包括一些運(yùn)行在典型的不易訪問的環(huán)境下的數(shù)據(jù)庫。如,通過一個(gè)ODBC接口和一個(gè)數(shù)據(jù)庫網(wǎng)關(guān),可以同時(shí)訪問存儲(chǔ)在大型主機(jī)環(huán)境下的DB2數(shù)據(jù)庫、小型機(jī)上的Oracle數(shù)據(jù)庫和Unix服務(wù)器上的Sybase數(shù)據(jù)庫。開發(fā)者只需使用一個(gè)API調(diào)用,數(shù)據(jù)庫網(wǎng)關(guān)就可以完成所有的其它工作。數(shù)據(jù)庫網(wǎng)關(guān)把SQL調(diào)用解釋成為標(biāo)準(zhǔn)FAP(FormatandProtocol)格式。FAP格式通用的客戶機(jī)和服務(wù)器連接,也是異質(zhì)數(shù)據(jù)庫和運(yùn)行平臺(tái)的通用聯(lián)結(jié)。網(wǎng)關(guān)可以把API調(diào)用直接翻譯成FAP,把請(qǐng)求傳遞到目標(biāo)數(shù)據(jù)庫并翻譯以便目標(biāo)數(shù)據(jù)庫和平臺(tái)做出響應(yīng)。目前市場(chǎng)上有很多數(shù)據(jù)庫網(wǎng)關(guān)產(chǎn)品,如EDA/SQL、RDA、DRDA等。
RDA并不是一種產(chǎn)品,它是一個(gè)開發(fā)者訪問數(shù)據(jù)的標(biāo)準(zhǔn)。RDA使用OSI并且支持動(dòng)態(tài)SQL語句,允許客戶端同時(shí)連接一個(gè)以上的數(shù)據(jù)庫。但它不支持典型的事務(wù)相關(guān)服務(wù)。
DRDA是IBM的一個(gè)數(shù)據(jù)庫連接標(biāo)準(zhǔn),它有許多數(shù)據(jù)庫的支持如Sybase,Oracle,IBI和Informix。與其它的數(shù)據(jù)庫網(wǎng)關(guān)一樣,DRDA提供便利的運(yùn)行在多平臺(tái)環(huán)境下的任意數(shù)目數(shù)據(jù)庫的連接。DRDA把數(shù)據(jù)庫任務(wù)定義為遠(yuǎn)程請(qǐng)求、遠(yuǎn)程工作單元、分布式工作單元和分布式請(qǐng)求。DRDA是一個(gè)定義良好的標(biāo)準(zhǔn),它要求數(shù)據(jù)庫符合標(biāo)準(zhǔn)的SQL語法,以便能夠充分發(fā)揮DRDA在不同的系統(tǒng)、不同的情況下運(yùn)行不同的數(shù)據(jù)庫的功能
4 結(jié)束語
隨著計(jì)算機(jī)、通訊、多媒體、高密度存儲(chǔ)等信息技術(shù)的發(fā)展和應(yīng)用,尤其是網(wǎng)絡(luò)的迅速普及和擴(kuò)大,數(shù)字圖書館的建設(shè)已經(jīng)成為各國(guó)信息水平的標(biāo)志。而在數(shù)字圖書館的建設(shè)中,中間件的使用則是解決異質(zhì)平臺(tái)、異質(zhì)環(huán)境、異質(zhì)數(shù)據(jù)庫的統(tǒng)一訪問、統(tǒng)一存取的最佳方案,在數(shù)字圖書館的研究和建設(shè)中已經(jīng)有了應(yīng)用,并起到了良好的效果。隨著應(yīng)用需求的發(fā)展,中間件的研究和功能也越來越被重視,應(yīng)用也越來越多。面向數(shù)據(jù)庫的中間件是數(shù)字圖書館的一項(xiàng)關(guān)鍵技術(shù),必將在數(shù)字圖書館的建設(shè)中發(fā)揮更大的作用。