王美迎
(安陽技師學(xué)院,河南 安陽455000)
隨著Internet 的逐步發(fā)展, 數(shù)據(jù)庫商家和WEB 公司也紛紛推出各自的產(chǎn)品和中間件支持Web 技術(shù)與數(shù)據(jù)庫管理系統(tǒng)(DBMS)相融合,通過WWW 訪問數(shù)據(jù)庫的優(yōu)點在于:1)借用現(xiàn)成的瀏覽器軟件,無需開發(fā)數(shù)據(jù)庫前端,使用的數(shù)據(jù)庫應(yīng)用都可以通過瀏覽器來實現(xiàn),界面統(tǒng)一,也減少了開發(fā)費用,能使廣大用戶很方便地訪問數(shù)據(jù)庫信息。2)統(tǒng)一標準,開發(fā)過程簡捷,因為HTML 是WWW 信息地組織方式,是一種國際標準,開發(fā)者只要學(xué)習(xí)過HTML 語言,使用者只需一種瀏覽器界面。3)共用平臺支持,在各種操作系統(tǒng)上都有現(xiàn)成的瀏覽器可使用,為一個WWW 服務(wù)器書寫的HTML 文檔,可以被所有平臺的瀏覽器所瀏覽,實現(xiàn)了跨平臺操作。所以WWW 的應(yīng)用日益普及和擴大, 而目前大部分數(shù)據(jù)存放在數(shù)據(jù)庫中,各種關(guān)系數(shù)據(jù)庫都發(fā)揮各自的優(yōu)勢,建立可實用的數(shù)據(jù)庫訪問接口,將客戶端融入統(tǒng)一的Web 瀏覽器,用戶可以方便地檢索數(shù)據(jù)庫的內(nèi)容,基于各種Web 的數(shù)據(jù)庫訪問接口也應(yīng)運而生并逐步發(fā)展。到目前為止,常用的數(shù)據(jù)庫接口有CGI、ISAPI、JDBC、ASP、IDC、等方式。為Internet 用戶提供使用簡便、內(nèi)容豐富的服務(wù)。
(通用網(wǎng)關(guān)接口:Common Gateway Interface)是WWW 服務(wù)器運行時外部程序的規(guī)范,按照CGI 編寫的程序可以擴展服務(wù)器的功能,完成服務(wù)器本身不能完成的工作,外部程序執(zhí)行時可以生成HTML 文檔,并將文檔返回到WWW 服務(wù)器。CGI 應(yīng)用程序能夠與瀏覽器進行交互作用,還可以通過數(shù)據(jù)庫的API 與數(shù)據(jù)庫服務(wù)器等外部數(shù)據(jù)源進行通信,如一個CGI 程序可以從數(shù)據(jù)庫服務(wù)器中獲取數(shù)據(jù),然后格式化為HTML 文檔后發(fā)送給瀏覽器,也可以將從瀏覽器獲得的數(shù)據(jù)放到數(shù)據(jù)庫中。絕大多數(shù)的CGI 程序被用來解釋處理來自表單的輸入信息,并在服務(wù)器產(chǎn)生相應(yīng)的處理,或?qū)⑾鄳?yīng)的信息反饋給瀏覽器。CGI 程序使網(wǎng)頁具有交互功能。
(互聯(lián)網(wǎng)服務(wù)器應(yīng)用程序接口:Internet Server Application Programming Interface)由兩類組件組成:提供縱向功能層的ISAPI 應(yīng)用程序與提供橫向功能層的ISAPI 過濾器。當(dāng)接收到一個客戶端的請求時,服務(wù)器執(zhí)行一個對應(yīng)的ISAPI 應(yīng)用程序。ISAPI 過濾器則可以實現(xiàn)所有請求所共有的某些功能,當(dāng)過濾器中定義的事件在進程中發(fā)生時,服務(wù)器調(diào)用過濾器中相應(yīng)的函數(shù)進行處理。ISAPI 服務(wù)器擴展是可以被HTTP服務(wù)器加載和調(diào)用的DLL。Internet 服務(wù)器擴展也稱為Internet 服務(wù)器應(yīng)用程序(ISA),用于增強符合Internet 服務(wù)器API(ISAPI)的服務(wù)器的功能。ISA 通過瀏覽器應(yīng)用程序調(diào)用,并且將相似的功能提供給通用網(wǎng)關(guān)接口(CGI)應(yīng)用程序。
公司指定了JDBC(Java Data Base Connectivity Java 數(shù)據(jù)庫連接)技術(shù),作為Java 語言的數(shù)據(jù)庫訪問,Java-Applet(Java小應(yīng)用程序)與其它方式不同。Java 的推出,使WWW 頁面有了活力和動感。Internet 用戶可以從WWW 服務(wù)器上下載Java 小程序到本地瀏覽器上運行。下載的小程序就像本地程序一樣,可獨立地訪問本地和其他服務(wù)器資源。隨著應(yīng)用技術(shù)的開發(fā),Java 在數(shù)據(jù)庫訪問方面也有不相同的擴展,采用JDBC 技術(shù),在Java Applet 中可直接訪問數(shù)據(jù)庫,不再需要Web 數(shù)據(jù)庫的介入,從而避開了CGI 方面的限制,用戶訪問控制可以由數(shù)據(jù)庫服務(wù)器本地的安全機制來解決,提高了安全性。JDBC 是支持基本SQL 功能的一個通用低層的應(yīng)用程序接口,在不同的數(shù)據(jù)庫功能的層次上提供了一個統(tǒng)一的用戶界面,可實現(xiàn)與用戶交互,提供豐富的圖形功能和聲音、視頻等多媒體信息功能。
(動態(tài)服務(wù)器頁:Active Server Pages:)是服務(wù)器端的腳本文件,可以是HTML,也可以是VBScript 或JavaScript,ASP的目的是提供可編程html 頁來響應(yīng)web 請求。
(互聯(lián)網(wǎng)數(shù)據(jù)庫連接器:Internet Database Connector:)使用IDC 文件與HTX 文件,IDC 文件負責(zé)查詢數(shù)據(jù)庫,HTX 文件負責(zé)把查詢結(jié)果格式化之后,返回到客戶端。
五種接口方式采用WINDOWS2003 操作系統(tǒng)平臺及IIS的WEB 服務(wù)器。數(shù)據(jù)庫采用SQL SEVER 7.0 和ORACLE 8.0對比測試。兩種數(shù)據(jù)庫中建有相同的數(shù)據(jù)表,只運行所需測試的WEB 請求,測試分為遠程測試(ADSL)與局域網(wǎng)測試兩個步驟,這五種接口方式由快到慢依次為JAVA-APPLET、ISAPI、ASP、IDC、CGI。
在CGI 方式下,對于每一個用戶請求,CGI 都要求服務(wù)器執(zhí)行一個外部程序,這涉及到在操作系統(tǒng)中創(chuàng)建一個新進程。而ISAPI 不同,它對于每一個請求創(chuàng)建的是線程,系統(tǒng)開銷小、而速度快。IDC、ASP 均是線程級的開銷,其速度都比CGI 快,但IDC、ASP 無法實現(xiàn)數(shù)據(jù)庫資源的駐留,所以速度不如ISAPI。JAVA-APPLET 的速度是最快的,因為它不用在服務(wù)器端運行程序,只需數(shù)據(jù)庫系統(tǒng)提供查詢結(jié)果即可。
從靈活性上比較,IDC 的功能是依賴于SQL 語句,SQL語句的功能是有限的。CGI 的靈活性較IDC 好,它可用服務(wù)器所支持的編程語言來實現(xiàn)。ASP 的靈活性又比CGI 強,它不僅可以使用VB、VJ 之類的語言,而且ASP 本身也提供了功能豐富的控件。ISAPI 不僅能夠?qū)崿F(xiàn)ASP 實現(xiàn)的所有功能,而且還能用過濾器實現(xiàn)許多IDC、CGI 和ASP 所無法實現(xiàn)的功能。JAVA-APPLET 的靈活性更強,JAVA-APPLET 是下載到客戶端運行的程序,這就超越了HTML 語言的限制。
從系統(tǒng)開銷上比較,從內(nèi)存負荷與CPU 的工作量來看,每一次CGI 請求,就產(chǎn)生一個進程的內(nèi)存與CPU 開銷,又無法駐留數(shù)據(jù)庫資源,所以開銷大。ISAPI 只產(chǎn)生一個線程的開銷,且駐留了數(shù)據(jù)庫的資源,故開銷小。而IDC 與ASP 雖是線程級開銷,但無法駐留數(shù)據(jù)庫資源,開銷要比ISAPI 大些,而JAVA-APPLET 從根本上就把運行程序移到了客戶端,服務(wù)器端只需處理與客戶端的JDBC 連接,所以服務(wù)器端開銷最小。CGI、IDC 與ASP 方式內(nèi)存開銷較大,在內(nèi)存有限的情況下,服務(wù)器在用戶訪問高峰值時會出現(xiàn)死機現(xiàn)象,不適合用戶并發(fā)訪問數(shù)量較大的網(wǎng)站。由于各種接口方式的性能不同,采用合適的場合適用。CGI 在UNIX 環(huán)境下,用戶并發(fā)訪問數(shù)量較少。IDC 在WINDOWS 2003 環(huán)境下,用戶并發(fā)訪問數(shù)量不多,且WEB 應(yīng)用程序功能簡單。ISAPI 在WINDOWS 2003 環(huán)境下,可滿足用戶并發(fā)訪問數(shù)量較多、應(yīng)用程序功能復(fù)雜、靈活性與安全性要求較高的情況下。ASP 在WINDOWS 2003 環(huán)境下,用戶并發(fā)訪問數(shù)量不太多,能滿足一些復(fù)雜的功能。適用于大多數(shù)中小型網(wǎng)站。JAVA-APPLET 在寬帶環(huán)境下,用戶并發(fā)訪問數(shù)量大,WEB 應(yīng)用程序功能要求較高時適用。
數(shù)據(jù)庫參數(shù)設(shè)置的不同,數(shù)據(jù)庫性能的發(fā)揮也不同,進而在服務(wù)器端的查詢速度也不一樣。要針對系統(tǒng)的具體情況選擇合適的數(shù)據(jù)庫。要解決WEB 與數(shù)據(jù)庫接口的瓶頸問題,應(yīng)把精力放在數(shù)據(jù)庫性能調(diào)整與接口方式的選擇上。從系統(tǒng)開銷,靈活性及網(wǎng)絡(luò)傳輸速度上看,筆者認為目前來講,JAVA-APPLET 將最終成為WEB 與數(shù)據(jù)庫接口的主流。隨著互聯(lián)網(wǎng)傳輸速度的提高與合理調(diào)配數(shù)據(jù)庫參數(shù),網(wǎng)絡(luò)傳輸延時將最終得以解決,完全相信WEB 與數(shù)據(jù)庫接口方式終將為編程人員正確利用。
[1]劉麗.SQL Server 數(shù)據(jù)庫基礎(chǔ)教程[M].機械工業(yè)出版社.
[2]郭克華,王超.Oracle 數(shù)據(jù)庫開發(fā)與應(yīng)用[M].清華大學(xué)出版社.
[3]孔勇奇.大型數(shù)據(jù)庫及其應(yīng)用[M].北京大學(xué)出版社.