18.1.4.1 本地型數(shù)據(jù)庫(kù)接口
本地型數(shù)據(jù)庫(kù)是伴隨微機(jī)的產(chǎn)生而產(chǎn)生的。dBASEII作為最早的并仍在使用的系統(tǒng)之一就是典型的本地型數(shù)據(jù)庫(kù)。
本地型數(shù)據(jù)庫(kù)管理系統(tǒng)的數(shù)據(jù)存放在一個(gè)本地硬盤上。DBMS接受來自用戶或用戶程序的命令。這些命令通常是系統(tǒng)特有的數(shù)據(jù)庫(kù)管理語言。命令被轉(zhuǎn)換為簡(jiǎn)單的磁盤訪問命令,并交付文件系統(tǒng)來處理。然后DBMS接收來自磁盤上的數(shù)據(jù),并加以處理。
在本地型DBMS應(yīng)用中,數(shù)據(jù)庫(kù)引擎(DBE)運(yùn)行于工作站上。圖18.2暗示數(shù)據(jù)是存放在工作站的局部驅(qū)動(dòng)器上,其實(shí)在網(wǎng)絡(luò)中,數(shù)據(jù)還可存放在文件服務(wù)器上。這里數(shù)據(jù)庫(kù)引擎使用典型的文件I/O調(diào)用和記錄封鎖技術(shù)來直接讀寫數(shù)據(jù)。
存放數(shù)據(jù)的文件位于網(wǎng)絡(luò)中的某個(gè)服務(wù)器上時(shí),DBMS的行力與單機(jī)情況無異。 網(wǎng)絡(luò)操作系統(tǒng)負(fù)責(zé)對(duì)服務(wù)器的管理,因此對(duì)DBMS而言,對(duì)服務(wù)器的使用就象使用局部的驅(qū)動(dòng)器一樣。
當(dāng)用戶發(fā)出命令,請(qǐng)求DBMS讀取數(shù)據(jù)庫(kù)中的數(shù)據(jù)時(shí),該請(qǐng)求首先由工作站(客戶)的網(wǎng)絡(luò)驅(qū)動(dòng)程序處理,它負(fù)責(zé)把請(qǐng)求從網(wǎng)絡(luò)上傳到所需的服務(wù)器網(wǎng)絡(luò)文件系統(tǒng)。服務(wù)器操作系統(tǒng)從適當(dāng)?shù)拇疟P卷上找到數(shù)據(jù),并發(fā)回等待中的工作站驅(qū)動(dòng)程序。最后,數(shù)據(jù)回傳給DBMS,這樣DBMS使用這些數(shù)據(jù)就象使用本地存儲(chǔ)的數(shù)據(jù)一樣。網(wǎng)絡(luò)情況下的接口比單機(jī)情況下接口的處理增加了通信開銷,正常情況下這種額外開銷不會(huì)影響用戶的響應(yīng)時(shí)間,除非在網(wǎng)絡(luò)通信的高峰期間或DBMS要求大數(shù)據(jù)量傳遞。
對(duì)于本地型DBMS其大部分工作都在工作站一側(cè)完成,即使數(shù)據(jù)存儲(chǔ)在文件服務(wù)器上,其對(duì)數(shù)據(jù)的處理仍然要在工作站上進(jìn)行。這種方式的最主要的一個(gè)缺點(diǎn)是無論查詢需要多么少的數(shù)據(jù),都需要首先將查詢中的所有數(shù)據(jù)通過網(wǎng)絡(luò)傳到工作站,然后由工作站負(fù)責(zé)選出滿足查詢條件的數(shù)據(jù),不難想象,當(dāng)幾個(gè)用戶同時(shí)操作數(shù)據(jù)庫(kù)時(shí),數(shù)據(jù)庫(kù)網(wǎng)絡(luò)的帶寬會(huì)很快阻塞。
在這一方式下,工作站不僅要負(fù)責(zé)所有用戶界面管理,還要負(fù)責(zé)所有數(shù)據(jù)處理的工作。在當(dāng)今的數(shù)據(jù)庫(kù)應(yīng)用中,尤其是那些功能強(qiáng)且使用簡(jiǎn)便的系統(tǒng),用戶界面的處理開銷是相當(dāng)大的,象Windows這樣的圖形環(huán)境,處理上的額處開銷會(huì)更大。為此而升級(jí)工作站是很得不償失的。
18.1.4.2 客戶/服務(wù)器型數(shù)據(jù)接口
由于服務(wù)器硬件技術(shù)逐年迅速地提高,數(shù)據(jù)庫(kù)在處理模式上在近五年內(nèi)發(fā)生了改變。本地型DBMS逐漸讓位給客戶/服務(wù)器型DBMS,尤其是在大中型企業(yè)中更是這樣。
正如名字所暗示的,客戶/服務(wù)器是將處理工作分散到工作站和服務(wù)器上去處理,服務(wù)器不僅負(fù)責(zé)存取數(shù)據(jù),還要對(duì)數(shù)據(jù)作一定的處理工作,這樣在數(shù)據(jù)發(fā)送給工作站之前即求得查詢結(jié)果集,從而在大部分情況下可大大減少網(wǎng)絡(luò)傳輸?shù)拈_銷,因此,也減輕了工作處理負(fù)擔(dān),從而只需關(guān)心用戶界面的處理工作即可。
服務(wù)器處理數(shù)據(jù)帶來的另一個(gè)好處是,當(dāng)服務(wù)器中數(shù)據(jù)庫(kù)引擎使用了緩沖機(jī)制時(shí),多個(gè)工作站可以從中受益。例如,一用戶查詢了某數(shù)據(jù),當(dāng)另一用戶要查詢同樣的數(shù)據(jù)時(shí),即可從服務(wù)器緩沖中直接得到結(jié)果,從而免去很多開銷。
客戶/服務(wù)器系統(tǒng)的成功與否在很大程度上依賴于服務(wù)器硬件質(zhì)量和容量。用戶越多,服務(wù)器的處理負(fù)擔(dān)越重,相應(yīng)服務(wù)器硬件性能也要跟得上,否則就會(huì)導(dǎo)致響應(yīng)時(shí)間比本地型數(shù)據(jù)庫(kù)還要差的結(jié)果。
處理工作,而工作站負(fù)責(zé)用戶界面處理工作
客戶和服務(wù)器間的數(shù)據(jù)庫(kù)接口要比本地型系統(tǒng)復(fù)雜得多。它有幾個(gè)轉(zhuǎn)換級(jí)負(fù)責(zé)命令和結(jié)果集在工作站和服務(wù)器間的傳送。圖18.5給出了客戶/服務(wù)器數(shù)據(jù)庫(kù)接口的詳細(xì)情況。
客戶/服務(wù)器的前端應(yīng)用程序?qū)嶋H上不直接與數(shù)據(jù)庫(kù)引擎打交道。每個(gè)客戶服務(wù)器提供一個(gè)數(shù)據(jù)庫(kù)通信接口,該數(shù)據(jù)庫(kù)通信接口運(yùn)行于前端。這些接口也稱為數(shù)據(jù)庫(kù)通信API等。數(shù)據(jù)庫(kù)通信接口的工作流程如下:
① 前端應(yīng)用程序發(fā)送命令給數(shù)據(jù)庫(kù)通信接口。
② 接口通過網(wǎng)絡(luò)把命令傳給數(shù)據(jù)庫(kù)引擎。
③ 數(shù)據(jù)庫(kù)引擎在服務(wù)時(shí)上做查詢或更新操作之類的工作,通過網(wǎng)絡(luò)文件系統(tǒng)訪問物理數(shù)據(jù)。
④ 數(shù)據(jù)庫(kù)引擎將結(jié)果返送給工作站上的通信接口。
⑤ 前端從接口上接到結(jié)果后,顯示或按用戶要求做其它處理。
客戶/服務(wù)器型比本地型DBMS更接近ODBC的原理。因?yàn)橛汕岸讼驍?shù)據(jù)庫(kù)的命令發(fā)送和由數(shù)據(jù)庫(kù)向前端結(jié)果的返回都是透明的,并不需知道具體傳送方式如何,各系統(tǒng)存在差別地方是:客戶/服務(wù)器系統(tǒng)在管理工作站和服務(wù)器間通信的方式不同,彼此會(huì)不兼容。此外,對(duì)于本地型DBMS缺乏讀取不同類型數(shù)據(jù)源的能力的問題。這些問題在IDAPI中得到了有效解決。
18.1.4.3 Borland Delphi 的解決方案
IDAPI是通過BDE(Borland Database Engine)和SQL Links,來解決本地型數(shù)據(jù)庫(kù)接口和客戶/服務(wù)器型數(shù)據(jù)庫(kù)接口的兼容問題的,見圖13.1。
Delphi 的數(shù)據(jù)庫(kù)特性使你能很容易構(gòu)造數(shù)據(jù)庫(kù)應(yīng)用程序。這些應(yīng)用程序能訪問Visual dBASE、Paradox、Local InterBase Server for Windows等本地?cái)?shù)據(jù)庫(kù)和Oracle、Sybase、Informix、SQL Server和Remote InterBase Server等客戶/服務(wù)器數(shù)據(jù)庫(kù)。
BDE是Borland公司支持Delphi 2.0 Client/Server Suite、Paradox for Windows、Visual dBASE for Windows等產(chǎn)品的核心數(shù)據(jù)庫(kù)引擎和互連軟件。BDE 提供了豐富和強(qiáng)壯的特性支持客戶/服務(wù)器應(yīng)用的開發(fā)。
提供支持多種數(shù)據(jù)庫(kù)如dBASE、Paradox、Text、InterBase、Oracle、Sybase和Microsoft SQL Server以及任何ODBC數(shù)據(jù)源的統(tǒng)一和一致的應(yīng)用程序編程接口(API)。開發(fā)者能不用修改數(shù)據(jù)庫(kù)應(yīng)用就能訪問不同的數(shù)據(jù)庫(kù)站點(diǎn)和數(shù)據(jù)庫(kù)格式:
● BDE是用于開發(fā)客戶/服務(wù)器數(shù)據(jù)庫(kù)應(yīng)用的理想工具,數(shù)據(jù)庫(kù)應(yīng)用程序既可訪問本地?cái)?shù)據(jù)庫(kù)又可訪問遠(yuǎn)程數(shù)據(jù)庫(kù)
● 允許數(shù)據(jù)庫(kù)用直接和靈活地訪問數(shù)據(jù)源
● BDE對(duì)于Paradox和dBASE文件格式來是高性能的數(shù)據(jù)庫(kù)引擎
● 支持使用ISAM(Indextd Sequential Access Method)SQL和QBE訪問數(shù)據(jù)
● BDE是數(shù)據(jù)集成化引擎,提高跨不同數(shù)據(jù)庫(kù)的共享服務(wù)。支持不同數(shù)據(jù)庫(kù)格式的相互轉(zhuǎn)化,如dBASE和Oracle表、從InterBase到Paradox拷貝數(shù)據(jù)甚至建立InterBase 和Oracle表之間的一對(duì)多關(guān)系
● BDE查詢引擎為SQL,QBE和面向集合訪問提供一致性的查詢語言。支持用戶定義和訪問基本SQL的服務(wù)器和基于文件數(shù)據(jù)庫(kù)的能力
● BDE支持全32位功能,如多線程,搶占式多進(jìn)程,長(zhǎng)文件名和UNC,用戶可在后臺(tái)執(zhí)行多個(gè)查詢,多個(gè)數(shù)據(jù)庫(kù)應(yīng)用可訪問同一個(gè)數(shù)據(jù)庫(kù)文件
BDE的體系結(jié)構(gòu)是基于數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序的,它提供了各種共享服務(wù):
● 緩沖區(qū)管理(Buffer Manager)
● 排序引擎
● OS服務(wù)
● 內(nèi)存管理
● BLOB快速存取
● SQL查詢引擎
● SQL產(chǎn)生器
● 數(shù)據(jù)庫(kù)重構(gòu)
● 表的批處理
● 數(shù)據(jù)轉(zhuǎn)換服務(wù)
● 連接服務(wù)
● 內(nèi)存數(shù)據(jù)庫(kù)服務(wù)
● SQL驅(qū)動(dòng)程序服務(wù)
● 系統(tǒng)管理
● 語言管理
Paradox、dBASE和文本數(shù)據(jù)庫(kù)BDE包含的數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序支持對(duì)標(biāo)準(zhǔn)數(shù)據(jù)源的一致性訪問。用戶可以增加ODBC驅(qū)動(dòng)和Borland SQL Links產(chǎn)品以支持對(duì)SQL 服務(wù)器的數(shù)據(jù)訪問,如InterBase Oracle和Sybase等。此外BDE給予Windows 95和Windows NT應(yīng)用開發(fā)者以直接、獨(dú)立共享的對(duì)多種數(shù)據(jù)源的高級(jí)訪問。
BDE在設(shè)計(jì)上是面向?qū)ο蟮摹T谶\(yùn)行時(shí),數(shù)據(jù)庫(kù)應(yīng)用通過建立各種類型的BDE 對(duì)象與BDE交互,這些運(yùn)行的對(duì)象用于操作數(shù)據(jù)庫(kù)實(shí)體如數(shù)據(jù)庫(kù)表、查詢。BDE的擴(kuò)展的API支持C、C++、Delphi等對(duì)數(shù)據(jù)庫(kù)引擎的訪問。
在Delphi應(yīng)用程序中訪問數(shù)據(jù)庫(kù)是通過調(diào)BDE的API函數(shù)。Delphi在庫(kù)單元BDE中提供了大約三十多個(gè)API函數(shù)和各種BDE消息和結(jié)構(gòu)。由于Delphi應(yīng)用程序的開發(fā)是基于部件的,有關(guān)BDE API的調(diào)用都嵌入了Delphi可視部件類庫(kù),因此,建立數(shù)據(jù)庫(kù)應(yīng)用時(shí)可以不必管BDE API的細(xì)節(jié)。只要正確安裝IDAPI的Drivers,并進(jìn)行正確的配置,就能使你的數(shù)據(jù)庫(kù)應(yīng)用程序與服務(wù)器連接并訪問數(shù)據(jù)庫(kù)。當(dāng)然為了提高應(yīng)用程序的數(shù)據(jù)庫(kù)訪問性能, 可以在程序中直接調(diào)用BDE API函數(shù)。
Borland的IDAPI包含對(duì)ODBC的支持,因此通過BDE,你的應(yīng)用程序能訪問一切與ODBC兼容的數(shù)據(jù)庫(kù)如Access和Btrieve。
Local InterBase Server提供了一個(gè)單用戶多實(shí)例的SQL服務(wù)器平臺(tái),特別是在將數(shù)據(jù)庫(kù)應(yīng)用程序轉(zhuǎn)移到對(duì)Oracle、Sybase和Informix等遠(yuǎn)程數(shù)據(jù)庫(kù)的訪問之前,可以在Local InterBase Server平臺(tái)建立和測(cè)試數(shù)據(jù)庫(kù)應(yīng)用程序。
對(duì)客戶/服務(wù)器型的數(shù)據(jù)庫(kù)應(yīng)用程序來說,SQL Links在Delphi數(shù)據(jù)庫(kù)體系結(jié)構(gòu)中起著至關(guān)重要的作用。 [1] [2] 下一頁(yè)
|
溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!