18.1.4.1 本地型數據庫接口
本地型數據庫是伴隨微機的產生而產生的。dBASEII作為最早的並仍在使用的系統之一就是典型的本地型數據庫。
本地型數據庫管理系統的數據存放在一個本地硬盤上。DBMS接受來自用戶或用戶程序的命令。這些命令通常是系統特有的數據庫管理語言。命令被轉換為簡單的磁盤訪問命令,並交付文件系統來處理。然後DBMS接收來自磁盤上的數據,並加以處理。
在本地型DBMS應用中,數據庫引擎(DBE)運行於工作站上。圖18.2暗示數據是存放在工作站的局部驅動器上,其實在網絡中,數據還可存放在文件服務器上。這裡數據庫引擎使用典型的文件I/O調用和記錄封鎖技術來直接讀寫數據。
存放數據的文件位於網絡中的某個服務器上時,DBMS的行力與單機情況無異。 網絡操作系統負責對服務器的管理,因此對DBMS而言,對服務器的使用就象使用局部的驅動器一樣。
當用戶發出命令,請求DBMS讀取數據庫中的數據時,該請求首先由工作站(客戶)的網絡驅動程序處理,它負責把請求從網絡上傳到所需的服務器網絡文件系統。服務器操作系統從適當的磁盤卷上找到數據,並發回等待中的工作站驅動程序。最後,數據回傳給DBMS,這樣DBMS使用這些數據就象使用本地存儲的數據一樣。網絡情況下的接口比單機情況下接口的處理增加了通信開銷,正常情況下這種額外開銷不會影響用戶的響應時間,除非在網絡通信的高峰期間或DBMS要求大數據量傳遞。
對於本地型DBMS其大部分工作都在工作站一側完成,即使數據存儲在文件服務器上,其對數據的處理仍然要在工作站上進行。這種方式的最主要的一個缺點是無論查詢需要多麼少的數據,都需要首先將查詢中的所有數據通過網絡傳到工作站,然後由工作站負責選出滿足查詢條件的數據,不難想象,當幾個用戶同時操作數據庫時,數據庫網絡的帶寬會很快阻塞。
在這一方式下,工作站不僅要負責所有用戶界面管理,還要負責所有數據處理的工作。在當今的數據庫應用中,尤其是那些功能強且使用簡便的系統,用戶界面的處理開銷是相當大的,象Windows這樣的圖形環境,處理上的額處開銷會更大。為此而升級工作站是很得不償失的。
18.1.4.2 客戶/服務器型數據接口
由於服務器硬件技術逐年迅速地提高,數據庫在處理模式上在近五年內發生了改變。本地型DBMS逐漸讓位給客戶/服務器型DBMS,尤其是在大中型企業中更是這樣。
正如名字所暗示的,客戶/服務器是將處理工作分散到工作站和服務器上去處理,服務器不僅負責存取數據,還要對數據作一定的處理工作,這樣在數據發送給工作站之前即求得查詢結果集,從而在大部分情況下可大大減少網絡傳輸的開銷,因此,也減輕了工作處理負擔,從而只需關心用戶界面的處理工作即可。
服務器處理數據帶來的另一個好處是,當服務器中數據庫引擎使用了緩沖機制時,多個工作站可以從中受益。例如,一用戶查詢了某數據,當另一用戶要查詢同樣的數據時,即可從服務器緩沖中直接得到結果,從而免去很多開銷。
客戶/服務器系統的成功與否在很大程度上依賴於服務器硬件質量和容量。用戶越多,服務器的處理負擔越重,相應服務器硬件性能也要跟得上,否則就會導致響應時間比本地型數據庫還要差的結果。
處理工作,而工作站負責用戶界面處理工作
客戶和服務器間的數據庫接口要比本地型系統復雜得多。它有幾個轉換級負責命令和結果集在工作站和服務器間的傳送。圖18.5給出了客戶/服務器數據庫接口的詳細情況。
客戶/服務器的前端應用程序實際上不直接與數據庫引擎打交道。每個客戶服務器提供一個數據庫通信接口,該數據庫通信接口運行於前端。這些接口也稱為數據庫通信API等。數據庫通信接口的工作流程如下:
① 前端應用程序發送命令給數據庫通信接口。
② 接口通過網絡把命令傳給數據庫引擎。
③ 數據庫引擎在服務時上做查詢或更新操作之類的工作,通過網絡文件系統訪問物理數據。
④ 數據庫引擎將結果返送給工作站上的通信接口。
⑤ 前端從接口上接到結果後,顯示或按用戶要求做其它處理。
客戶/服務器型比本地型DBMS更接近ODBC的原理。因為由前端向數據庫的命令發送和由數據庫向前端結果的返回都是透明的,並不需知道具體傳送方式如何,各系統存在差別地方是:客戶/服務器系統在管理工作站和服務器間通信的方式不同,彼此會不兼容。此外,對於本地型DBMS缺乏讀取不同類型數據源的能力的問題。這些問題在IDAPI中得到了有效解決。
18.1.4.3 Borland Delphi 的解決方案
IDAPI是通過BDE(Borland Database Engine)和SQL Links,來解決本地型數據庫接口和客戶/服務器型數據庫接口的兼容問題的,見圖13.1。
Delphi 的數據庫特性使你能很容易構造數據庫應用程序。這些應用程序能訪問Visual dBASE、Paradox、Local InterBase Server for Windows等本地數據庫和Oracle、Sybase、Informix、SQL Server和Remote InterBase Server等客戶/服務器數據庫。
BDE是Borland公司支持Delphi 2.0 Client/Server Suite、Paradox for Windows、Visual dBASE for Windows等產品的核心數據庫引擎和互連軟件。BDE 提供了豐富和強壯的特性支持客戶/服務器應用的開發。
提供支持多種數據庫如dBASE、Paradox、Text、InterBase、Oracle、Sybase和Microsoft SQL Server以及任何ODBC數據源的統一和一致的應用程序編程接口(API)。開發者能不用修改數據庫應用就能訪問不同的數據庫站點和數據庫格式:
● BDE是用於開發客戶/服務器數據庫應用的理想工具,數據庫應用程序既可訪問本地數據庫又可訪問遠程數據庫
● 允許數據庫用直接和靈活地訪問數據源
● BDE對於Paradox和dBASE文件格式來是高性能的數據庫引擎
● 支持使用ISAM(Indextd Sequential Access Method)SQL和QBE訪問數據
● BDE是數據集成化引擎,提高跨不同數據庫的共享服務。支持不同數據庫格式的相互轉化,如dBASE和Oracle表、從InterBase到Paradox拷貝數據甚至建立InterBase 和Oracle表之間的一對多關系
● BDE查詢引擎為SQL,QBE和面向集合訪問提供一致性的查詢語言。支持用戶定義和訪問基本SQL的服務器和基於文件數據庫的能力
● BDE支持全32位功能,如多線程,搶占式多進程,長文件名和UNC,用戶可在後台執行多個查詢,多個數據庫應用可訪問同一個數據庫文件
BDE的體系結構是基於數據庫驅動程序的,它提供了各種共享服務:
● 緩沖區管理(Buffer Manager)
● 排序引擎
● OS服務
● 內存管理
● BLOB快速存取
● SQL查詢引擎
● SQL產生器
● 數據庫重構
● 表的批處理
● 數據轉換服務
● 連接服務
● 內存數據庫服務
● SQL驅動程序服務
● 系統管理
● 語言管理
Paradox、dBASE和文本數據庫BDE包含的數據庫驅動程序支持對標准數據源的一致性訪問。用戶可以增加ODBC驅動和Borland SQL Links產品以支持對SQL 服務器的數據訪問,如InterBase Oracle和Sybase等。此外BDE給予Windows 95和Windows NT應用開發者以直接、獨立共享的對多種數據源的高級訪問。