18.1.4 IDAPI結(jié)構(gòu)原理
IDAPI(集成數(shù)據(jù)庫應(yīng)用程序設(shè)計接口)是Borland公司解決客戶/服務(wù)器連通性的方案。也是Delphi 客戶/服務(wù)器開發(fā)的重要組成部分。為了說清楚什么是IDAPI,讓我們先來討論一下普通數(shù)據(jù)庫的接口問題。
每個數(shù)據(jù)庫管理系統(tǒng)和數(shù)據(jù)庫應(yīng)用都需一定的方式來訪問內(nèi)容所采用的數(shù)據(jù)格式,連接二者的部分稱為接口,其最簡單的情況就是對文件的直接訪問,也可復(fù)雜到由幾個層次組成。
當(dāng)今,面向用戶的數(shù)據(jù)庫通常都直接與其數(shù)據(jù)打交道,對那些有一定的用戶和使用了一定時間的產(chǎn)品尤其如此。制造商總是認(rèn)為自己的產(chǎn)品就是標(biāo)準(zhǔn),而不關(guān)心對其它數(shù)據(jù)格式的訪問。同樣,許多縱向數(shù)據(jù)庫應(yīng)用用類似C的語言開發(fā),多是直接訪問其數(shù)據(jù)庫。對開發(fā)者,這樣做會變得容易些,但用戶的情況往往是多變的。他對底層數(shù)據(jù)格式的選擇并不一定與產(chǎn)品一致。其實(shí)在ODBC和IDAPI等尚未推出的前20年里,工業(yè)界已經(jīng)認(rèn)識到,一個DBMS不只是要訪問其自身的數(shù)據(jù)格式。
廣義地講,數(shù)據(jù)庫接口可分為以下兩類:
● 本地型(Local)
● 客戶/服務(wù)器型(Client/Server)
18.1.4.1 本地型數(shù)據(jù)庫接口
本地型數(shù)據(jù)庫是伴隨微機(jī)的產(chǎn)生而產(chǎn)生的。dBASEII作為最早的并仍在使用的系統(tǒng)之一就是典型的本地型數(shù)據(jù)庫。
本地型數(shù)據(jù)庫管理系統(tǒng)的數(shù)據(jù)存放在一個本地硬盤上。DBMS接受來自用戶或用戶程序的命令。這些命令通常是系統(tǒng)特有的數(shù)據(jù)庫管理語言。命令被轉(zhuǎn)換為簡單的磁盤訪問命令,并交付文件系統(tǒng)來處理。然后DBMS接收來自磁盤上的數(shù)據(jù),并加以處理。
在本地型DBMS應(yīng)用中,數(shù)據(jù)庫引擎(DBE)運(yùn)行于工作站上。圖18.2暗示數(shù)據(jù)是存放在工作站的局部驅(qū)動器上,其實(shí)在網(wǎng)絡(luò)中,數(shù)據(jù)還可存放在文件服務(wù)器上。這里數(shù)據(jù)庫引擎使用典型的文件I/O調(diào)用和記錄封鎖技術(shù)來直接讀寫數(shù)據(jù)。
存放數(shù)據(jù)的文件位于網(wǎng)絡(luò)中的某個服務(wù)器上時,DBMS的行力與單機(jī)情況無異。 網(wǎng)絡(luò)操作系統(tǒng)負(fù)責(zé)對服務(wù)器的管理,因此對DBMS而言,對服務(wù)器的使用就象使用局部的驅(qū)動器一樣。
當(dāng)用戶發(fā)出命令,請求DBMS讀取數(shù)據(jù)庫中的數(shù)據(jù)時,該請求首先由工作站(客戶)的網(wǎng)絡(luò)驅(qū)動程序處理,它負(fù)責(zé)把請求從網(wǎng)絡(luò)上傳到所需的服務(wù)器網(wǎng)絡(luò)文件系統(tǒng)。服務(wù)器操作系統(tǒng)從適當(dāng)?shù)拇疟P卷上找到數(shù)據(jù),并發(fā)回等待中的工作站驅(qū)動程序。最后,數(shù)據(jù)回傳給DBMS,這樣DBMS使用這些數(shù)據(jù)就象使用本地存儲的數(shù)據(jù)一樣。網(wǎng)絡(luò)情況下的接口比單機(jī)情況下接口的處理增加了通信開銷,正常情況下這種額外開銷不會影響用戶的響應(yīng)時間,除非在網(wǎng)絡(luò)通信的高峰期間或DBMS要求大數(shù)據(jù)量傳遞。
對于本地型DBMS其大部分工作都在工作站一側(cè)完成,即使數(shù)據(jù)存儲在文件服務(wù)器上,其對數(shù)據(jù)的處理仍然要在工作站上進(jìn)行。這種方式的最主要的一個缺點(diǎn)是無論查詢需要多么少的數(shù)據(jù),都需要首先將查詢中的所有數(shù)據(jù)通過網(wǎng)絡(luò)傳到工作站,然后由工作站負(fù)責(zé)選出滿足查詢條件的數(shù)據(jù),不難想象,當(dāng)幾個用戶同時操作數(shù)據(jù)庫時,數(shù)據(jù)庫網(wǎng)絡(luò)的帶寬會很快阻塞。
在這一方式下,工作站不僅要負(fù)責(zé)所有用戶界面管理,還要負(fù)責(zé)所有數(shù)據(jù)處理的工作。在當(dāng)今的數(shù)據(jù)庫應(yīng)用中,尤其是那些功能強(qiáng)且使用簡便的系統(tǒng),用戶界面的處理開銷是相當(dāng)大的,象Windows這樣的圖形環(huán)境,處理上的額處開銷會更大。為此而升級工作站是很得不償失的。
18.1.4.2 客戶/服務(wù)器型數(shù)據(jù)接口
由于服務(wù)器硬件技術(shù)逐年迅速地提高,數(shù)據(jù)庫在處理模式上在近五年內(nèi)發(fā)生了改變。本地型DBMS逐漸讓位給客戶/服務(wù)器型DBMS,尤其是在大中型企業(yè)中更是這樣。
正如名字所暗示的,客戶/服務(wù)器是將處理工作分散到工作站和服務(wù)器上去處理,服務(wù)器不僅負(fù)責(zé)存取數(shù)據(jù),還要對數(shù)據(jù)作一定的處理工作,這樣在數(shù)據(jù)發(fā)送給工作站之前即求得查詢結(jié)果集,從而在大部分情況下可大大減少網(wǎng)絡(luò)傳輸?shù)拈_銷,因此,也減輕了工作處理負(fù)擔(dān),從而只需關(guān)心用戶界面的處理工作即可。
服務(wù)器處理數(shù)據(jù)帶來的另一個好處是,當(dāng)服務(wù)器中數(shù)據(jù)庫引擎使用了緩沖機(jī)制時,多個工作站可以從中受益。例如,一用戶查詢了某數(shù)據(jù),當(dāng)另一用戶要查詢同樣的數(shù)據(jù)時,即可從服務(wù)器緩沖中直接得到結(jié)果,從而免去很多開銷。
客戶/服務(wù)器系統(tǒng)的成功與否在很大程度上依賴于服務(wù)器硬件質(zhì)量和容量。用戶越多,服務(wù)器的處理負(fù)擔(dān)越重,相應(yīng)服務(wù)器硬件性能也要跟得上,否則就會導(dǎo)致響應(yīng)時間比本地型數(shù)據(jù)庫還要差的結(jié)果。
處理工作,而工作站負(fù)責(zé)用戶界面處理工作
客戶和服務(wù)器間的數(shù)據(jù)庫接口要比本地型系統(tǒng)復(fù)雜得多。它有幾個轉(zhuǎn)換級負(fù)責(zé)命令和結(jié)果集在工作站和服務(wù)器間的傳送。圖18.5給出了客戶/服務(wù)器數(shù)據(jù)庫接口的詳細(xì)情況。
客戶/服務(wù)器的前端應(yīng)用程序?qū)嶋H上不直接與數(shù)據(jù)庫引擎打交道。每個客戶服務(wù)器提供一個數(shù)據(jù)庫通信接口,該數(shù)據(jù)庫通信接口運(yùn)行于前端。這些接口也稱為數(shù)據(jù)庫通信API等。數(shù)據(jù)庫通信接口的工作流程如下:
、 前端應(yīng)用程序發(fā)送命令給數(shù)據(jù)庫通信接口。
、 接口通過網(wǎng)絡(luò)把命令傳給數(shù)據(jù)庫引擎。
、 數(shù)據(jù)庫引擎在服務(wù)時上做查詢或更新操作之類的工作,通過網(wǎng)絡(luò)文件系統(tǒng)訪問物理數(shù)據(jù)。
④ 數(shù)據(jù)庫引擎將結(jié)果返送給工作站上的通信接口。
⑤ 前端從接口上接到結(jié)果后,顯示或按用戶要求做其它處理。
客戶/服務(wù)器型比本地型DBMS更接近ODBC的原理。因?yàn)橛汕岸讼驍?shù)據(jù)庫的命令發(fā)送和由數(shù)據(jù)庫向前端結(jié)果的返回都是透明的,并不需知道具體傳送方式如何,各系統(tǒng)存在差別地方是:客戶/服務(wù)器系統(tǒng)在管理工作站和服務(wù)器間通信的方式不同,彼此會不兼容。此外,對于本地型DBMS缺乏讀取不同類型數(shù)據(jù)源的能力的問題。這些問題在IDAPI中得到了有效解決。
18.1.4.3 Borland Delphi 的解決方案
IDAPI是通過BDE(Borland Database Engine)和SQL Links,來解決本地型數(shù)據(jù)庫接口和客戶/服務(wù)器型數(shù)據(jù)庫接口的兼容問題的,見圖13.1。
Delphi 的數(shù)據(jù)庫特性使你能很容易構(gòu)造數(shù)據(jù)庫應(yīng)用程序。這些應(yīng)用程序能訪問Visual dBASE、Paradox、Local InterBase Server for Windows等本地數(shù)據(jù)庫和Oracle、Sybase、Informix、SQL Server和Remote InterBase Server等客戶/服務(wù)器數(shù)據(jù)庫。
BDE是Borland公司支持Delphi 2.0 Client/Server Suite、Paradox for Windows、Visual dBASE for Windows等產(chǎn)品的核心數(shù)據(jù)庫引擎和互連軟件。BDE 提供了豐富和強(qiáng)壯的特性支持客戶/服務(wù)器應(yīng)用的開發(fā)。
提供支持多種數(shù)據(jù)庫如dBASE、Paradox、Text、InterBase、Oracle、Sybase和Microsoft SQL Server以及任何ODBC數(shù)據(jù)源的統(tǒng)一和一致的應(yīng)用程序編程接口(API)。開發(fā)者能不用修改數(shù)據(jù)庫應(yīng)用就能訪問不同的數(shù)據(jù)庫站點(diǎn)和數(shù)據(jù)庫格式:
● BDE是用于開發(fā)客戶/服務(wù)器數(shù)據(jù)庫應(yīng)用的理想工具,數(shù)據(jù)庫應(yīng)用程序既可訪問本地數(shù)據(jù)庫又可訪問遠(yuǎn)程數(shù)據(jù)庫
● 允許數(shù)據(jù)庫用直接和靈活地訪問數(shù)據(jù)源
● BDE對于Paradox和dBASE文件格式來是高性能的數(shù)據(jù)庫引擎
● 支持使用ISAM(Indextd Sequential Access Method)SQL和QBE訪問數(shù)據(jù)
● BDE是數(shù)據(jù)集成化引擎,提高跨不同數(shù)據(jù)庫的共享服務(wù)。支持不同數(shù)據(jù)庫格式的相互轉(zhuǎn)化,如dBASE和Oracle表、從InterBase到Paradox拷貝數(shù)據(jù)甚至建立InterBase 和Oracle表之間的一對多關(guān)系
● BDE查詢引擎為SQL,QBE和面向集合訪問提供一致性的查詢語言。支持用戶定義和訪問基本SQL的服務(wù)器和基于文件數(shù)據(jù)庫的能力
● BDE支持全32位功能,如多線程,搶占式多進(jìn)程,長文件名和UNC,用戶可在后臺執(zhí)行多個查詢,多個數(shù)據(jù)庫應(yīng)用可訪問同一個數(shù)據(jù)庫文件
BDE的體系結(jié)構(gòu)是基于數(shù)據(jù)庫驅(qū)動程序的,它提供了各種共享服務(wù):
● 緩沖區(qū)管理(Buffer Manager)
● 排序引擎
● OS服務(wù)
● 內(nèi)存管理
● BLOB快速存取
● SQL查詢引擎
● SQL產(chǎn)生器
● 數(shù)據(jù)庫重構(gòu)
● 表的批處理
● 數(shù)據(jù)轉(zhuǎn)換服務(wù)
● 連接服務(wù)
● 內(nèi)存數(shù)據(jù)庫服務(wù)
● SQL驅(qū)動程序服務(wù)
● 系統(tǒng)管理
● 語言管理
Paradox、dBASE和文本數(shù)據(jù)庫BDE包含的數(shù)據(jù)庫驅(qū)動程序支持對標(biāo)準(zhǔn)數(shù)據(jù)源的一致性訪問。用戶可以增加ODBC驅(qū)動和Borland SQL Links產(chǎn)品以支持對SQL 服務(wù)器的數(shù)據(jù)訪問,如InterBase Oracle和Sybase等。此外BDE給予Windows 95和Windows NT應(yīng)用開發(fā)者以直接、獨(dú)立共享的對多種數(shù)據(jù)源的高級訪問。
BDE在設(shè)計上是面向?qū)ο蟮摹T谶\(yùn)行時,數(shù)據(jù)庫應(yīng)用通過建立各種類型的BDE 對象與BDE交互,這些運(yùn)行的對象用于操作數(shù)據(jù)庫實(shí)體如數(shù)據(jù)庫表、查詢。BDE的擴(kuò)展的API支持C、C++、Delphi等對數(shù)據(jù)庫引擎的訪問。
在Delphi應(yīng)用程序中訪問數(shù)據(jù)庫是通過調(diào)BDE的API函數(shù)。Delphi在庫單元BDE中提供了大約三十多個API函數(shù)和各種BDE消息和結(jié)構(gòu)。由于Delphi應(yīng)用程序的開發(fā)是基于部件的,有關(guān)BDE API的調(diào)用都嵌入了Delphi可視部件類庫,因此,建立數(shù)據(jù)庫應(yīng)用時可以不必管BDE API的細(xì)節(jié)。只要正確安裝IDAPI的Drivers,并進(jìn)行正確的配置,就能使你的數(shù)據(jù)庫應(yīng)用程序與服務(wù)器連接并訪問數(shù)據(jù)庫。當(dāng)然為了提高應(yīng)用程序的數(shù)據(jù)庫訪問性能, 可以在程序中直接調(diào)用BDE API函數(shù)。
Borland的IDAPI包含對ODBC的支持,因此通過BDE,你的應(yīng)用程序能訪問一切與ODBC兼容的數(shù)據(jù)庫如Access和Btrieve。
Local InterBase Server提供了一個單用戶多實(shí)例的SQL服務(wù)器平臺,特別是在將數(shù)據(jù)庫應(yīng)用程序轉(zhuǎn)移到對Oracle、Sybase和Informix等遠(yuǎn)程數(shù)據(jù)庫的訪問之前,可以在Local InterBase Server平臺建立和測試數(shù)據(jù)庫應(yīng)用程序。
對客戶/服務(wù)器型的數(shù)據(jù)庫應(yīng)用程序來說,SQL Links在Delphi數(shù)據(jù)庫體系結(jié)構(gòu)中起著至關(guān)重要的作用。
Borland SQL Links支持訪問局部(Paradox dBASE)和遠(yuǎn)程SQL數(shù)據(jù)庫的BDE應(yīng)用程序。為了訪問特定的遠(yuǎn)程SQL服務(wù)器必須在客戶端安裝相應(yīng)的SQL Links驅(qū)動程序。安裝了SQL Links驅(qū)動程序后,SQL表達(dá)式才能被傳送給相應(yīng)的服務(wù)器執(zhí)行。
一旦你安裝了SQL Links的驅(qū)動程序并建立SQL驅(qū)動程序的Alias,你就能采用下列方法使數(shù)據(jù)庫應(yīng)用程序象訪問本地Paradox和dBASE數(shù)據(jù)庫一樣訪問遠(yuǎn)程數(shù)據(jù)庫:
● 通過應(yīng)用程序用戶接口(界面)
● 通過包含嵌入SQL表達(dá)式的應(yīng)用程序
● 直接將SQL表達(dá)式傳送給服務(wù)器
BDE也支持應(yīng)用程序使用SQL訪問局部數(shù)源,
安裝了SQL Links驅(qū)動程序,你能用SQL訪問數(shù)據(jù)。驅(qū)動程序負(fù)責(zé)SQL服務(wù)器的鏈接,將查詢語句轉(zhuǎn)換成兼容的SQL語句并將它們傳送給SQL數(shù)據(jù)庫。等處理完成后,SQL數(shù)據(jù)庫把結(jié)果以應(yīng)
、 BDE客戶查詢SQL數(shù)據(jù)庫;
、 SQL Links驅(qū)動程序建立客戶工作站與SQL Server的鏈接,并將查詢發(fā)送給SQL
服務(wù)器;
⑶ SQL服務(wù)器進(jìn)行SQL表達(dá)式的錯誤和語法檢查,處理查詢并將結(jié)果返回給BDE
客戶;
、 SQL Links驅(qū)動程序?qū)⒔Y(jié)果通過SQL轉(zhuǎn)換成客戶端能識別的形式,客戶端將其進(jìn)
行格式化并將數(shù)據(jù)顯示給用戶。
在應(yīng)用程序中使用SQL Links驅(qū)動程序?qū)κ褂肧QL的數(shù)據(jù)庫具有如下好處:
● 直接查詢SQL服務(wù)器的能力
● 支持SQL網(wǎng)絡(luò)的傳輸
● 增強(qiáng)了記錄的快速存取
● 數(shù)據(jù)鎖定
● 在SQL結(jié)果集和數(shù)據(jù)庫表的雙向變換
● 使用索引給數(shù)據(jù)排序
● 為數(shù)據(jù)庫當(dāng)前Session建立書簽,并可在以后重用書簽
● 通過動態(tài)訪問數(shù)據(jù)源來動態(tài)處理SQL數(shù)據(jù)
18.2 Delphi客戶/服務(wù)器應(yīng)用開發(fā)環(huán)境的構(gòu)造
18.2.1 Borland SQL Links 的安裝
SQL Links的安裝過程如下:
、 在客戶端工作站上將SQL Links1號磁盤插入軟盤驅(qū)動器.A:或B。
、 在Windows 95的資源管理器中,選擇運(yùn)行A:\INSTALL( 或B:\INSTALL),并顯示打開對話框。
、 選擇Continue 或按Enter。INSTALL 檢測工作站上是否已安裝了BDE 的動態(tài)鏈接庫IDAPI01.DLL 。如果需要它將顯示一個對話框,以讓你描述該文件所在位置。當(dāng)定位IDAPI01.DLL后,INSTALL顯示Borland SQL Links目錄對話框,描述你想安裝的SQL Links驅(qū)動程序。
當(dāng)你完成這些工作,選擇Continue或按Enter.INSTALL顯示IDAPI配置定位框。
⑷ 描述你想安裝的IDAPI配置文件的升級版的位置。當(dāng)你完成這些工作后,選擇Continue或按Enter。在繼續(xù)安裝之前按照你所選擇的驅(qū)動程序。安裝程序?qū)⑿枰嗟男畔,后面的章?jié)中將敘述這些信息。
、 一旦你提供了所有的必要信息,安裝開始當(dāng)安裝結(jié)束后,你能選擇察看SQL Links自述文件——READLINK.TXT。閱讀這個文件將找到最新的信息。
18.2.2 配置SQL環(huán)境
與你的BDE應(yīng)用程序一起安裝的有BDE配置工具(BDECFG32.EXE),該工具幫助用戶修改他們的應(yīng)用程序配置。配置參數(shù)被存于命名為IDAPI32.CFG的二進(jìn)制文件中。當(dāng)應(yīng)用程序啟動時,將讀這個文件。通常該文件在應(yīng)用安裝過程中被置于BDE文件目錄中(C:\Program Files\Common\BDE)。
本節(jié)描述怎樣使用BDE配置工具設(shè)置應(yīng)用程序的SQL環(huán)境。一旦配置好BDE應(yīng)用環(huán)境,就可開始聯(lián)接網(wǎng)絡(luò),并訪問SQL服務(wù)器。
關(guān)于怎樣使用BDE配置工具的詳細(xì)介紹,可參見BDE用戶指南或按運(yùn)行BDE配置工具選擇Help按鈕顯示在線幫助。
在開始配置SQL環(huán)境前,必須已完成以下工作:
● 已安裝SQL Links軟件
● 退出所有其它Borland應(yīng)用程序
● 在Windows 95中打開應(yīng)用程序組Borland Delphi 2.0
● 選擇IDAPI配置工具圖標(biāo),出現(xiàn)配置工作窗口后進(jìn)入驅(qū)動程序管理頁
18.2.2.1 配置SQL Link驅(qū)動程序缺省設(shè)置的方法
SQL Link驅(qū)動程序缺省設(shè)置是指在BDE配置工具的Drivers頁中的參數(shù)設(shè)置,這些參數(shù)在建立新的Alias中使用。Alias是描述網(wǎng)絡(luò)資源的一組參數(shù)的集合。BDE應(yīng)用使用Alias 聯(lián)接共享數(shù)據(jù)庫。Alias對于訪問局部數(shù)據(jù)庫并不是必要的,但要訪問SQL數(shù)據(jù)庫,卻是必不可少。
SQL Links驅(qū)動程序的缺省設(shè)置,是你建立新的Alias 的原型。盡管你在建立Alias后能定制它,但在建立新的Alias前設(shè)置相應(yīng)的缺省設(shè)置要來的容易。因?yàn)檫@樣建立的每一個Alias將繼承這些設(shè)置。
要描述驅(qū)動程序的缺省設(shè)置,要完成以下幾項(xiàng):
● 將亮條移到驅(qū)動程序的入口,驅(qū)動程序管理程序顯示所有的該驅(qū)動程序的配置參數(shù),在參數(shù)列表表端可用滾行杠檢察各配置參數(shù)
● 如果需要編輯驅(qū)動程序的缺省配置參數(shù),如果光標(biāo)停在這格, 配置工作將自動套用缺省參數(shù)
● 當(dāng)完成這些工作,選擇File|Save,修改將在應(yīng)用程序下一次啟動時生效
相關(guān)推薦:2010年9月計算機(jī)等級考試試題及答案解析專題北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |