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