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