WWW對大量數據查詢的一種實現_第1頁
WWW對大量數據查詢的一種實現_第2頁
WWW對大量數據查詢的一種實現_第3頁
免費預覽已結束,剩余1頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

WWW對大量數據查詢的一種實現

摘要企業通過WWW服務和數據庫技術相結合的辦法,構建一種三層客戶端/服務器的體系結構,用戶通過INTERNET瀏覽企業信息,但是當瀏覽大量數據庫數據時,網絡連接常因速度緩慢或因超時而中斷。本文介紹了WWW數據庫訪問技術,通過對各種技術進行分析和比較,針對新華書店發行集團網站設計的需求,采用ASP技術實現數據的分頁傳輸。關鍵詞ASP,ADO,三層體系結構,客戶端/服務器,分頁目前,大多數企業通過WWW服務和數據庫技術相結合的辦法,構建一種三層客戶端/服務器的體系結構,即客戶端瀏覽器/中間服務器(WEB服務器)/數據庫服務器(B/W/D),利用INTERNET向世界各地發布企業的商業信息。用戶為了獲得企業的商品信息,通過瀏覽器訪問企業的網站,某些情況下,用戶所需的信息量巨大,此時企業的網頁傳輸時間漫長或連接超時,用戶因此放棄瀏覽信息,給企業造成一定的經濟損失,這當然不是企業所希望的。為了解決這種大數據量的發布問題,首先了解一下三層體系結構是怎樣處理數據庫數據的。1.

三層體系結構的數據庫訪問技術一種通用的三層客戶端/服務器體系結構如下圖1所示,這種體系結構與傳統的二層C/S結構比較,最大的優點就是將網絡通信和數據庫操作分離開來,并在客戶端和WEB服務器間使用多路復用技術,減輕了數據庫服務器CPU的負載,加快數據的處理能力。圖1三層體系結構在開發基于WWW的數據庫應用中,關鍵技術之一在于WEB服務器與數據庫服務器之間的連接技術。目前,數據庫連接技術可歸納為以下幾個方面。

基于CGI(通用網關接口)規范編寫的CGI程序,該程序既要處理WEB服務器與瀏覽器之間的信息傳輸,又要處理WEB服務器與數據庫的連接、查詢和基于查詢結果的HTML頁面的產生。

利用API(應用程序接口)對WEB服務器的功能進行擴展,這種方法較靈活,但編程人員需具有一定的編程技巧,對API詳細了解,以及對C++等語言的熟練掌握,因此開發周期長,成本較高。目前較流行的API有MICROSOFT公司的ISAPI和NETSCAPE公司的NSAPI。

利用JDBC進行數據庫連接,采用JAVA語言進行編程,由于JAVA具有較為嚴格的安全機制,同時它實現了跨平臺性,因此它是一種較為熱門的技術,但JAVA與C++相似,開發效率不是很理想。

利用ASP(ACTIVESERVERPAGES)技術,ASP技術基于微軟的DCOM(分布式COM)標準,是微軟公司提供的一種服務器端腳本支持環境,它通過ADO(ACTIVEXDATAOBJECT)控件的方式來處理與數據庫的連接。由于ASP技術開發周期短,成本低,對控件的支持可以開發出較為理想的應用,所以,ASP得到廣泛的應用。ASP文件是以.asp為擴展名的文本文件,這個文本文件可以包括下列部分:文本、HTML標記、ASP腳本命令。ASP文件存放在WEB服務器相應的目錄中,當客戶瀏覽器從WEB服務器上請求.asp文件時,ASP腳本開始運行,將運行結果和.asp中的靜態部分組合成標準的HTML格式傳輸給客戶端瀏覽器。ASP對數據庫的訪問是通過ADO對象來實現的,它把數據庫查詢結果放在HTML頁中傳給瀏覽器,過程如下圖2示。鑒于ASP的優點,采用它來解決大容量數據庫的訪問。圖2.asp文件處理過程2.

問題的提出前面已經提到,客戶端訪問企業網站時從數據庫中查詢出大量數據傳送給客戶端,易造成連接超時而中斷傳輸。作者在開發某新華書店發行集團網站中就遇到類似的情況,由于數據庫中書目表記錄多達6萬多條,而在發行行業中有一種分類法稱為十大類分類法,平均每類書目達五六千種。這樣,當各地分銷商查詢某一類書目時,在服務器端采用ASP技術,將查詢結果存于ADO對象庫的RECORDSET對象中,然后將查詢結果生成HTML格式傳輸給分銷商的瀏覽器。我們可以計算一下,每條記錄長度為250字節,查詢一類書目就需至少傳輸250*5000即1250K字節的數據,通常情況下,網絡會因超時而中止連接。因此,能否解決這種情況,關系到企業網站的生存,對其他類似情況也具有實際借鑒意義。3.

實際解決方案在新華書店發行集團的網站開發中,一方面為了避免由于數據整體傳送時間過長而導致的斷連,另一方面為了滿足用戶瀏覽數據的局部性要求,故將數據化整為零,采用分頁技術來加快數據的傳輸。在訪問WEB服務器時,有兩個因素限制了網頁的連接時間:一是數據庫的查詢操作,另一個是網絡傳輸的數據量。在數據庫中的查詢,可以通過建立索引來解決,例如,對前面提到的書目表按十大類字段進行索引,這樣,大大加快了數據庫查詢速度。為了減少網絡傳輸數據量,采用分頁傳輸的技術,例如,客戶端查詢出五千多條記錄可以一次僅傳輸二十條記錄,這樣,加快網頁的連接時間就不會因超時而中斷。分頁技術用onepage.asp腳本實現部分代碼如下:setConn=Server.CreateObject("adodb.connection")‘連接ODBCConn.Open"xhsd",”sa”,”hxrjb1”

.‘生成sql語句

.setRs=Server.CreateObject("adodb.recordset")‘查詢結果存于RsRs.Opensql,Connsetsession("Rs")=Rs首先,通過ASP的內置對象SERVER創建一CONNECTION對象conn,并將其與指定的數據庫關聯,通過該對象的open方法打開。接著,可根據系統的實際需求,構造滿足所需數據的SQL語句,然后再通過SERVER對象創建一RecordSet對象Rs,并由Rs的方法open取得數據庫記錄,同時將Rs保存在Session中,以供其他頁面使用。為了計算數據記錄分多少頁,必須先定義每頁顯示的記錄數和記錄的總數。代碼中使用變量Session(“PageSize”)標志每頁記錄數,Session(“PageCount”)標志分頁數。下面一段代碼功能為顯示某一頁的記錄,這一段代碼為分頁顯示的核心代碼。Rs.MoveFirstRs.Move(1)*Session(“PageSize“)fori=1toSession(“PageSize“)Response.Write"<tr>"forj=0tors.Fields.Count-1

Response.Write"<td>"&rs.Fields(j).Value&"</td>"nextResponse.Write"</tr>"Rs.MoveNextifRs.EOFthen

exitforendifnextResponse.Write"</table></center>"Response.Write"<p><center>"代碼通過對象Rs的方法Move將記錄指向由page確定的那一頁的第一條記錄,然后用循環語句依次列出每條記錄。為了定位在某一頁,必須使用一參數將頁碼信息傳給服務器,此處,使用帶參數的超級鏈接來實現。具體代碼如下:ifpage<>1thenResponse.Write"<ahref=’onepage.asp?page=1’>第一頁</a>"Response.Write"<ahref=’onepage.asp?page="&(1)&"’>上一頁</a>"endififpage<>Session(“PageCount”)thenResponse.Write"<ahref=’onepage.asp?page="&(page+1)&"’>下一頁</a>"Response.Write"<ahref=’onepage.asp?page="&Session(“PageCount”)&"’>最后一頁</a>"endifResponse.Write"</center></p>"如果當前頁是

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論