後一頁
前一頁
回目錄
回首頁
第十八章 Delphi用戶伺服器應用開發(二)

18.1.4.1 本地型資料庫接口 

  本地型資料庫是伴隨微電腦的產生而產生的。dBASEII作為最早的並仍在使用的系統之一就是典型的本地型資料庫。 

  本地型資料庫管理系統的數據存放在一個本地硬碟上。DBMS接受來自用戶或用戶程式的命令。這些命令通常是系統特有的資料庫管理語言。命令被轉換為簡單的磁碟存取命令,並交付文件系統來處理。然後DBMS接收來自磁碟上的數據,並加以處理。

  在本地型DBMS應用中,資料庫引擎(DBE)執行於工作站上。圖18.2暗示數據是存放在工作站的局部磁碟機上,其實在網路中,數據還可存放在文件伺服器上。這�婺禤おw引擎使用典型的文件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應用開發者以直接、獨立共享的對多種數據源的進階存取。

  BDE在設計上是面向物件的。在執行時,資料庫應用通過建立各種型式的BDE 物件與BDE互動,這些執行的物件用於操作資料庫實體如資料庫表、查詢。BDE的擴展的API支援C、C++、Delphi等對資料庫引擎的存取。

  在Delphi應用程式中存取資料庫是通過調BDE的API函數。Delphi在庫單元BDE中提供了大約三十多個API函數和各種BDE訊息和結構。由於Delphi應用程式的開發是基於部件的,有關BDE API的呼叫都嵌入了Delphi可視部件類庫,因此,建立資料庫應用時可以不必管BDE API的細節。只要正確裝設IDAPI的Drivers,並進行正確的組態,就能使你的資料庫應用程式與伺服器連接並存取資料庫。當然為了提高應用程式的資料庫存取性能, 可以在程式中直接呼叫BDE API函數。

  Borland的IDAPI包含對ODBC的支援,因此通過BDE,你的應用程式能存取一切與ODBC相容的資料庫如Access和Btrieve。

  Local InterBase Server提供了一個單用戶多實例的SQL伺服器基台,特別是在將資料庫應用程式轉移到對Oracle、Sybase和Informix等遠端資料庫的存取之前,可以在Local InterBase Server基台建立和測試資料庫應用程式。

  對用戶/伺服器型的資料庫應用程式來說,SQL Links在Delphi資料庫體系結構中起著至關重要的作用。

  Borland SQL Links支援存取局部(Paradox dBASE)和遠端SQL資料庫的BDE應用程式。為了存取特定的遠端SQL伺服器必須在用戶端裝設相應的SQL Links驅動程式。裝設了SQL Links驅動程式後,SQL表達式才能被轉送給相應的伺服器執行。

  一旦你裝設了SQL Links的驅動程式並建立SQL驅動程式的Alias,你就能採用下列方法使資料庫應用程式象存取本地Paradox和dBASE資料庫一樣存取遠端資料庫:

  ● 通過應用程式用戶接口(介面)

● 通過包含嵌入SQL表達式的應用程式

● 直接將SQL表達式轉送給伺服器

 

  BDE也支援應用程式使用SQL存取局部數源,

  裝設了SQL Links驅動程式,你能用SQL存取數據。驅動程式負責SQL伺服器的鍊結,將查詢語句轉換成相容的SQL語句並將它們轉送給SQL資料庫。等處理完成後,SQL資料庫把結果以應 

   ぇ BDE用戶查詢SQL資料庫;

   え SQL Links驅動程式建立用戶工作站與SQL Server的鍊結,並將查詢發送給SQL

伺服器;

   ぉ SQL伺服器進行SQL表達式的錯誤和語法檢查,處理查詢並將結果返回給BDE

用戶;

   お SQL Links驅動程式將結果通過SQL轉換成用戶端能識別的形式,用戶端將其進

行格式化並將數據顯示給用戶。

 

  在應用程式中使用SQL Links驅動程式對使用SQL的資料庫具有如下好處:

  ● 直接查詢SQL伺服器的能力

  ● 支援SQL網路的傳輸

  ● 增強了記錄的快速存取

  ● 數據鎖定

  ● 在SQL結果集和資料庫表的雙向變換

  ● 使用索引給數據排序

  ● 為資料庫目前Session建立書簽,並可在以後重用書簽

  ● 通過動態存取數據源來動態處理SQL數據

 

18.2 Delphi用戶/伺服器應用開發環境的構造

 

18.2.1 Borland SQL Links 的裝設

 

SQL Links的裝設過程如下:

 ぇ 在用戶端工作站上將SQL Links1號磁碟插入磁碟片磁碟機.A:或B。

え 在Windows 95的文件總管中,選擇執行A:\INSTALL( 或B:\INSTALL),並顯示打開對話方塊。

  ぉ 選擇Continue 或按Enter。INSTALL 偵測工作站上是否已裝設了BDE 的動態鍊結庫IDAPI01.DLL 。如果需要它將顯示一個對話方塊,以讓你描述該文件所在位置。當定位IDAPI01.DLL後,INSTALL顯示Borland SQL Links目錄對話方塊,描述你想裝設的SQL Links驅動程式。

  當你完成這些工作,選擇Continue或按Enter.INSTALL顯示IDAPI組態定位框。

  お 描述你想裝設的IDAPI組態文件的升級版的位置。當你完成這些工作後,選擇Continue或按Enter。在繼續裝設之前按照你所選擇的驅動程式。裝設程式將需要更多的資訊,後面的章節中將敘述這些資訊。

  か 一旦你提供了所有的必要資訊,裝設開始當裝設結束後,你能選擇察看SQL Links自述文件????READLINK.TXT。閱讀這個文件將找到最新的資訊。

 

18.2.2 組態SQL環境

 

  與你的BDE應用程式一起裝設的有BDE組態工具(BDECFG32.EXE),該工具輔助敘述用戶修改他們的應用程式組態。組態參數被存於命名為IDAPI32.CFG的二進制文件中。當應用程式啟動時,將讀這個文件。通常該文件在應用裝設過程中被置於BDE文件目錄中(C:\Program Files\Common\BDE)。

  本節描述怎樣使用BDE組態工具設定應用程式的SQL環境。一旦組態好BDE應用環境,就可開始聯接網路,並存取SQL伺服器。

  關於怎樣使用BDE組態工具的詳細介紹,可參見BDE用戶指南或按執行BDE組態工具選擇Help按鈕顯示在線輔助敘述。

  在開始組態SQL環境前,必須已完成以下工作:

  ● 已裝設SQL Links軟體

  ● 結束所有其它Borland應用程式

  ● 在Windows 95中打開應用程式群群組Borland Delphi 2.0

  ● 選擇IDAPI組態工具圖示,出現組態工作視窗後進入驅動程式管理頁

 

18.2.2.1 組態SQL Link驅動程式缺省設定的方法

 

  SQL Link驅動程式缺省設定是指在BDE組態工具的Drivers頁中的參數設定,這些參數在建立新的Alias中使用。Alias是描述網路資源的一群群組參數的集合。BDE應用使用Alias 聯接共享資料庫。Alias對於存取局部資料庫並不是必要的,但要存取SQL資料庫,卻是必不可少。

  SQL Links驅動程式的缺省設定,是你建立新的Alias 的原型。儘管你在建立Alias後能定制它,但在建立新的Alias前設定相應的缺省設定要來的容易。因為這樣建立的每一個Alias將繼承這些設定。

  要描述驅動程式的缺省設定,要完成以下幾項:

 ● 將亮條移到驅動程式的入口,驅動程式管理程式顯示所有的該驅動程式的組態參數,在參數清單表端可用滾行槓檢察各組態參數

  ● 如果需要編輯驅動程式的缺省組態參數,如果遊標停在這格, 組態工作將自動套用缺省參數

  ● 當完成這些工作,選擇File|Save,修改將在應用程式下一次啟動時生效

 

18.2.2.2 SQL Links驅動程式的缺省設定項目的含義

 

  1. VERSION

SQL Links驅動程式的版本號。

  2. TYPE

描述目前驅動程式型式。SERVER就表示該驅動程式用於連接一個SQL伺服器,FILE就表示驅動程式用於連接一個標準的基於文件伺服器。

  3. DLL選項

所選SQL Links的16位驅動程式的動態鍊結庫名。

4. DLL32

所選SQL Links的32位驅動程式的動態鍊結庫名。

5. DRIVER FIAGS

內部的產品描述標誌。

6. TRACE MODE

描述記錄跟蹤資訊的型式

  7. SERVER NAME

指定目標SQL伺服器名。如果指定為InterBase伺服器,將包含資料庫文件的全部路徑,Servername:/Usr/gds/directoryname/databasenam.gdb

  8. USER NAME

存取SQL伺服器的缺省用戶名。

  9. OPENMODE

OPENMODE是SQL Links打開SQL資料庫時的讀寫模式。取值可以是READ/WRITE或READ ONLY,缺省值是READ/WRITE。把OPEN MODE設為READ ONLY,將影響用戶端的操作,但對SQL伺服器沒有影響。

  10. SCHEMA CACHE SIZE

描述被貯存視圖資訊的SQL表個數。取值範圍是0-32, 缺省值為8。

  11. LANGDRIVER

用來操作來自SQL 伺服器的數據的語言驅動程式。當遊標停止LANGDRIVER欄位時,一個滾行框出現在正文欄位的左側,用滾行槓可以用於你的驅動程式的可選的語言清單。如使用美國英語,該缺省值是空格。

  當描述的語言驅動程式與一個伺服器別名相適應,那麼你的應用程式將使用該驅動程式處理從伺服器發來的數據。這包括你察看的所有表和所有查詢返回的結果表。執行在不同系統上的伺服器利用字元集的轉換來決定怎樣對數據編碼。如果你操作在非英語環境,你的BDE應用程式可以使用不同於SQL伺服器的字元集。如果你的基台上的字元集同SQL伺服器上的不匹配,那麼在兩種不同基台間傳遞數據將引起下列問題:

 ● 數據在你的基台上不正確的顯示

  ● SQL資料庫上將記錄錯誤的字元

 

  為防止這種情況的出現,SQL Links提供語言驅動程式,實現你的應用程式的字元集與SQL資料庫的字元集的數據轉換。這將使從SQL伺服器傳來的數據在你的基台上正確顯示,或將你輸入的數據可靠地轉送到伺服器上。

  語言驅動程式包含有關排序和大小寫轉換的資訊。無論何時,對SQL資料庫的查詢按本地資料庫的規則處理應用程式的語言驅動程式用於評測排序的字元範圍。 如果基台上的排序和大小寫轉換與SQL伺服器上的不同,你的應用程式就會顯示不一致的結果。

  如果SQL資料庫使用擴展字元集,請確信用於存取SQL 服務的別名中描述正確的,SQL Links語言版本選擇的驅動程式的字元集應當與SQL伺服器的相同。如果你沒有找到合適的SQL Links語言驅動,你可修改別名中的SQLQRYMODE入口,防止按局部資料庫規則處理查詢。

12. SQLPASSTHRU MODE

描述應用程式存取SQL伺服器時是否借助基台命令和傳遞式SQL。取值範圍和它們的含義列於下表:

 

   表18.3 SQLPASSTHRU MODE設定

  ──────────────────────────────────────

設定            含 義

  ——————————————————————————————————————

  NOT SHARED    傳遞SQL和非傳遞性SQL不共享相同的連接

  SHARED AUTOCOMMIT  缺省值。傳遞SQL和非傳遞SQL將共享相同連接,傳

遞式SQL將以與非傳遞SQL相似的方式動作。 也就說

用戶的傳遞式SQL表達式將被自動提交。

  SHARED NOAUTOCOMMIT 傳遞式SQL和非傳遞式SQL將共享同一個連接,但SQL

驅動程式並不自動提交SQL表達式。在這種模式下,傳

遞行為是伺服器獨立的。

──────────────────────────────────────

 

 SHARED AUTOCOMMIT和SHARED NOAUTOCOMMIT 模式並不支援所有的傳遞式表達式。當SHARED AUTOCOMMIT或SHARED NOAUTOCOMMIT模式被設定,在傳遞式SQL中不需執行事務控制語言。使用你的BDE應用程式設計語言來開始,提交回送事務。當傳遞式SQL和非傳遞式SQL共享一個連接,記錄快存並不立即反映傳遞SQL操作的更新。

  13. SQLQRYMODE

描述處理查詢SQL數據的方法。取值範圍含義列於下表,缺省值NULL:

 

表18.4 SQLQRYMODE設定

──────────────────────────────────────

  設定      模 式      含 義

  ——————————————————————————————————————

  NULL    Server-Local  在Server-local中,查詢模式查詢首先傳遞給SQL服

務器,如果伺服器不能執行查詢,查詢就在本地執

行。

  SERVER Server-Only 在Server-Only查詢模式,查詢被發送給SQL 服務

                 器。如果伺服器不能執行查詢,不執行本地查詢。

  LOCAL Local-Only 在local-only模式,查詢總是本地執行。

──────────────────────────────────────

 

正常情況下,查詢SQL資料庫將在資料庫伺服器端被處理。然而,在某些情況下,完全在SQL伺服器端執行的查詢的結果不同於在本地執行的查詢的結果。例如,你的BDE 應用程式查詢函數執行在字元欄位的大小寫敏感搜索。如果,伺服器不支援大小寫敏感搜索,那麼Select語句的條件如“>A”在不同地方查詢將產生不同的結果。 如果你想確信所有來自BDE應用的查詢都按照SQL伺服器上的規則來執行,那麼你就應合理組態SQL Links驅動程式,阻止查詢的本地處理。使用BDE組態工具修改SQL資料庫別名,將SQL QRYMODE設定成SERVER就可做到這一點。新的SQLQRYMODE值將在應用程式下一次啟動時生效。

  14. SCHEMA CACHE TIME 

描述表資訊將被貯存多長時間,取值範圍和它們的含義列於下表,缺省值為-1。

 

表18.2 SCHEMA CACHE TIME設定表

  ─────────────────────────

設定 含 義

—————————————————————————

-1 表被貯存至你關閉資料庫

   0        不貯存表

  1…2147483647  貯存表的時間數(秒為單位)

  ─────────────────────────

 

  設定該值能提高資料庫表的存取性能。

15. MAX ROWS

描述SQL Links驅動程式能給伺服器傳遞的SQL語句的最大行數。如果值為-1,則沒有限制。

16. BATCH COUNT

描述在自動提交前包含在BATCH中的修改記錄個數。

 

18.2.2.3 建立和管理SQL別名

 

  設定標準別名的過程包括給Alias參數賦值,描述包含Paradox或dBASE文件的路徑名和目錄名。設定用於SQL資料庫的別名包括給alias賦名,定制用於SQL伺服器和資料庫的存取參數。SQL別名包括目標SQL伺服器的用戶名和密碼。這些參數對於存取任何SQL數據都是必須的。常用的SQL別名是當裝設時,第一次修改缺省的SQL Link驅動程式的參數時自動建立。

  關於如何使用組態工具增加、修改和解除別名,請參閱附錄。

 

18.2.2.4 聯接SQL伺服器

 

  當應用程式第一次存取SQL資料庫,會觸發一個自動聯接過程。聯接過程需要確認存取資料庫的權限。

  如果組態文件和SQL Link驅動正確組態,應能用應用程式的File選擇表通過相應的資料庫別名在你的SQL資料庫中選取一張表。下面介紹如何解決聯接InterBase伺服器過程中出現現的一般問題,並討論有關使用Borland SQL Links的各種主題。

  1. InterBase伺服器需求

  下表所列軟體應當已經裝設在執行InterBase的伺服器

 

表18.5 InterBase伺服器軟體要求

────────────────────────────────────

  項 目       描 述

  ————————————————————————————————————

  資料庫伺服器軟體   InterBaseV4.0或更高版本

  網路通訊協定軟體     與資料庫伺服器和用戶工作端網路通訊協定相容的網路通訊協定

────────────────────────────────────

 

2. 用戶工作站需求

  下表所列軟體應當已經裝設和執行於用戶工作站,表中還列出相關文件和參數。

 

表18.6 用戶工作站軟體要求

──────────────────────────────────────

  項目          描述

  ——————————————————————————————————————

  BDE應用程式    被支援BDE應用程式,並已按產品文檔要求裝設

  硬體和作業系統   1.5MB剩餘磁碟空間,適合Borland Delphi需要的硬體和操作

            系統

  存取網路伺服器的  如果你的Borland Delphi被裝設在網路文件伺服器上,請確

  權力        認對BDE文件裝設目錄有讀寫的權力

  網路通訊協定軟體    網路通訊協定軟體應當與伺服器網路通訊協定和用戶工作端的用戶數

            庫通信驅動程式相容。InterBase支援Windows 95 WinSock API

  HOSTS文件    HOSTS文件包含你要連接的伺服器的標簽和位址:

例如:128.127.50.12 MIS_Server

SERVIDES文件   一個SERVICES文件包含存取InterBase伺服器的通訊協定。 在SQL

Links裝設過程中,“gds_db 3050/tcp”被加入這個文件

──────────────────────────────────────

 

erver)


後一頁
前一頁
回目錄
回首頁