複製鏈接
請複製以下鏈接發送給好友

Web數據庫

鎖定
Web數據庫指在互聯網中以Web查詢接口方式訪問的數據庫資源。促進Internet發展的因素之一就是Web技術。由靜態網頁技術的HTML到動態網頁技術的CGI、ASP、PHP、JSP等,Web技術經歷了一個重要的變革過程。Web已經不再侷限於僅僅由靜態網頁提供信息服務,而改變為動態的網頁,可提供交互式的信息查詢服務,使信息數據庫服務成為了可能。Web數據庫就是將數據庫技術與Web技術融合在一起,使數據庫系統成為Web的重要有機組成部分,從而實現數據庫與網絡技術的無縫結合。這一結合不僅把Web與數據庫的所有優勢集合在了一起,而且充分利用了大量已有數據庫的信息資源。Web數據庫由數據庫服務器(Database Server)、中間件(Middle Ware)、Web服務器(Web Server)、瀏覽器(Browser)4部分組成。
它的工作過程可簡單地描述成:用户通過瀏覽器端的操作界面以交互的方式經由Web服務器來訪問數據庫。用户向數據庫提交的信息以及數據庫返回給用户的信息都是以網頁的形式顯示。
中文名
Web數據庫
特    點
提供一個或多個領域的數據記錄
性    能
為用户提供多個Web數據庫資源
性    質
深度Web的一種資源形勢

Web數據庫原理與步驟

萬維網簡稱為Web。Web可以描述為在Internet上運行的、全球的、交互的、動態的、跨平台的、分佈式的、圖形化的超文本信息系統。
1.Web的工作原理
Web是伴隨着Internet技術而產生的。在計算機網絡中,對於提供Web服務的計算機稱為Web服務器。Web採用瀏覽器/服務器的工作方式。每個Web服務器上都放置着大量的Web信息。Web信息的基本單位是Web頁(網頁),多個網頁組成了一個Web節點。每個Web節點的起始頁稱為“主頁”,且擁有一個URL地址(統一資源定位地址)。Web節點之間及網頁之間都是以超文本結構(非線性的網狀結構)來進行組織的。
2.Web的工作步驟
Web的工作步驟如下。
(1)用户打開客户端計算機中的瀏覽器軟件(例如Internet Explorer)。
(2)用户輸入要啓動的Web主頁的URL地址,瀏覽器將生成一個HTTP請求。
(3)瀏覽器連接到指定的Web服務器,併發送HTTP請求。
(4)Web服務器接到HTTP請求,根據請求的內容不同作相應的處理,再將網頁以HTML文件格式發回給瀏覽器。
(5)瀏覽器將網頁顯示到屏幕上。
WWW世界中的標記語言
HTML語言
HTML(Hypertext Markup Language,超文本標記語言)是創建網頁的計算機語言。所謂網頁實際上就是一個HTML文檔。文檔內容由文本和HTML標記組成。HTML文檔的擴展名就是.html或.htm。瀏覽器負責解釋HTML文檔中的標記,並將HTML文檔顯示成網頁。
(1)HTML標記
HTML標記的作用是告訴瀏覽器網頁的結構和格式。每一個標記用尖括號〈〉括起來。大多數標記都有一個開始標記和一個結束標記。標記不分大小寫。多數標記都帶有自己的屬性。例如字體標記有FACE、COLOR、SIZE等屬性:FACE定義字體;COLOR定義字體的顏色;SIZE定義字體的大小。
使用格式: BEIJING 。
網頁中有很多文本鏈接和圖片鏈接。鏈接,又被稱為超鏈接,用於鏈接到WWW萬維網中的其他網頁上。在HTML文檔中表示超鏈接的標記是,通過屬性HREF指出鏈接的網頁地址URL。
(2)HTML程序
HTML程序必須以標記開始,以標記結束。在和標記之間主要由兩部分組成:文件頭和文件體。文件頭用標記 來標識,文件體用標記來標識。在文件的頭部通常包含整個網頁的一些信息。例如標記是用來説明網頁的名稱;標記是用來説明網頁的其他信息,如設計者姓名和版權信息等。所有在瀏覽器中要顯示的內容稱為網頁的主體,必須放在標記中。下面給出的是一個空網頁的HTML程序。
(在此標記中寫網頁的標題)
(在此標記中寫網頁的內容)
(3)HTML規範
HTML規範又稱為HTML標準,它總在不斷地發展。每一新版本的出現,HTML都會增加新的特性和內容。
在不同的瀏覽器中,網頁的顯示效果可能會有所不同。每一個瀏覽器都使用自己獨特的方式解釋HTML文檔中的標記,並且多數瀏覽器不完全支持HTML的所有特性。因為,像Microsoft和Netscape公司在HTML標準上又開發了一些特有的HTML標記和屬性,稱之為HTML的擴展。這些標記和屬性只被他們自己的瀏覽器所識別,不可能被其他公司的瀏覽器識別。如果瀏覽器不能識別HTML文檔中的標記,則會忽略這個標記。
(4)HTML程序的編輯環境與運行環境
HTML文檔是一個普通的文本文件(ASCII),不包含任何與平台、程序有關的信息。因此HTML文檔可以利用任何文本編輯器來方便地生成。要注意的是HTML文檔的擴展名必須是.html或.htm。運行HTML文檔可以在任何瀏覽器下進行,並可在瀏覽器上查看網頁的HTML源代碼。
關於HTML語言中標記的種類與使用方法將會在第5章中更詳細地進行介紹。
可擴展標記語言(XML)
HTML是Web上的通用語言,隨着Internet的深入人心,WWW上的Web文件日益複雜化、多樣化,人們開始感到了HTML這種固定格式的標記語言的不足。1996年W3C開始對HTML的後續語言進行研究,並於1998年正式推出了XML(Extensible Markup Language,可擴展標記語言)。在設計網頁時,XML提供了比HTML更靈活的方法。
(1)XML語言的特點
XML是國際組織W3C為適應WWW的應用,將SGML (Standard Generalized Markup Language)標準進行簡化形成的元標記語言。簡單地説,XML是使用標記來描述內容或與內容相關的形式信息的通用語言。一個XML文檔由標記和字符數據組成。
而作為元標記語言,XML不再使標記固定,允許網頁的設計者定義數量不限的標記來描述內容,同時還允許設計者創建自己的使用規則。
(2)XML的DTD
DTD(Document Type Definition,文檔類型定義)是一組應用在XML文檔中的自定義標記語言的技術規範。DTD中定義了標記的含義及關於標記的語法規則。語法規則中確定了在XML文檔中使用哪些標記符,它們應該按什麼次序出現,標記符之間如何 嵌套,哪些標記符有屬性等等。DTD可以包含在它所描述的XML文檔中,但通常它是一份單獨的文檔或者一系列文檔。作為外部文件可通過URL鏈接,被不同的XML文檔 共享。
XML把DTD的定義權開放,不同行業可以根據自己的實際需求定義描述內容的DTD,以適應本行業內部的信息交流和存檔需要。因此,適合於不同行業、不同平台的標記語言大批湧現。
DTD定義的基本格式是:。其中的規則包括:元素聲明ELEMENT,屬性聲明ATTLIST,實體聲明ENTITY,等。通常出版發行業描述圖書的信息需要有:書號、書名、作者、出版社、出版日期等,那麼下面給出的便是為描述圖書信息而制定的一個DTD和與它對應的XML文檔。
ISBN0001
XML3.0技術內幕
John
清華大學出版社
2001
8
另一本書信息省略
不難看出,在XML的程序清單中使用了具有意義的標記,如、和等。這種用法的優點是:標記具有含義,源碼易於閲讀理解;其次是處理程序可以根據文檔類型定義來驗證XML文檔是否合法。
(3)XML的CSS與XSL
強調內容描述與形式描述的分離,一方面可以使XML文件的編寫者更集中精力於數據本身,而不受顯示方式的細節影響;另一方面允許為相同的數據定義不同的顯示方式,從而適合於不同應用、不同媒體,使XML數據得到最大程度的重用。XML文檔數據的顯示形式是通過樣式單定義的。CSS(Cascading Style Sheets)是XML使用的一種標準的級聯樣式單,XSL(Extensible Style Language)則是可擴展的樣式語言。
由於XML允許用户創建任何所需的標記,而通用瀏覽器卻既無法預期用户標記的意義,又無法為顯示這些標記而提供規則,因此用户必須為自己創建的XML文檔編寫樣式單,樣式單可以實現共享。
瀏覽器對一個XML文檔的處理過程是,首先去關聯它所指定的樣式單文件,如果該樣式單是一個XSL文件,則按照規定對XML數據進行轉換然後再顯示,XSL本身也是基於XML語言的,可以將XML轉化為HTML後再顯示。如果該樣式單是一個CSS文件,瀏覽器就會按照樣式單的規定給每個標記賦予一組樣式後再顯示。

Web數據庫訪問技術

Web數據庫訪問技術通常是通過三層結構來實現的。建立與Web數據庫連接訪問的技術方法可歸納為CGI技術,ODBC技術和ASP、JSP、PHP技術。
CGI技術
CGI(Common Gateway Interface,通用網關界面)是一種Web服務器上運行的基於Web瀏覽器輸入程序的方法,是最早的訪問數據庫的解決方案。CGI程序可以建立網頁與數據庫之間的連接,將用户的查詢要求轉換成數據庫的查詢命令,然後將查詢結果通過網頁返回給用户。
CGI程序需要通過一個接口才能訪問數據庫。這種接口多種多樣,數據庫系統對CGI程序提供了各種數據庫接口如Perl、C/C++、VB等。為了使用各種數據庫系統,CGI程序支持ODBC方式,通過ODBC接口訪問數據庫。
ODBC技術
ODBC(Open Database Connectivity,開放數據庫互接)是一種使用SQL的應用程序接口(API)。ODBC最顯著的優點就是它生成的程序與數據庫系統無關,為程序員方便地編寫訪問各種DBMS的數據庫應用程序提供了一個統一接口,使應用程序和數據庫源之間完成數據交換。ODBC的內部結構為4層:應用程序層、驅動程序管理器層、驅動程序層、數據源層。它們之間的關係如圖1-5所示。由於ODBC適用於不同的數據庫產品,因此許多服務器擴展程序都使用了包含ODBC層的系統結構。
Web服務器通過ODBC數據庫驅動程序向數據庫系統發出SQL請求,數據庫系統接收到的是標準SQL查詢語句,並將執行後的查詢結果再通過ODBC傳回Web服務器,Web服務器將結果以HTML網頁傳給Web瀏覽器,工作原理如圖1-6所示。
由於Java語言所顯示出來的編程優勢贏得了眾多數據庫廠商的支持。在數據庫處理方面,Java提供的JDBC為數據庫開發應用提供了標準的應用程序編程接口。與ODBC類似,JDBC也是一種特殊的API,是用於執行SQL語句的Java應用程序接口。它規定了Java如何與數據庫之間交換數據的方法。採用Java和JDBC編寫的數據庫應用程序具有與平台無關的特性。
ASP、JSP、PHP技術
ASP是Microsoft開發的動態網頁技術,主要應用於Windows NT+IIS或 Windows 9x+PWS平台。確切地説ASP不是一種語言,而是Web服務器端的開發環境。利用ASP可以產生和運行動態的、交互的、高性能的Web服務應用程序。ASP支持多種腳本語言,除了VBScript和Pscript,也支持Perl語言,並且可以在同一ASP文件中使用多種腳本語言以發揮各種腳本語言的最大優勢。但ASP默認只支持VBScript和Pscript,若要使用其他腳本語言,必須安裝相應的腳本引擎。ASP支持在服務器端調用ActiveX組件ADO對象實現對數據庫的操作。在具體的應用中,若腳本語言中有訪問數據庫的請求,可通過ODBC與後台數據庫相連,並通過ADO執行訪問庫的操作。關於ASP的編程技術將會在第7章中詳細介紹。
JSP是Sun公司推出的新一代Web開發技術。作為Java家族的一員,幾乎可以運行在所有的操作系統平台和Web服務器上,因此JSP的運行平台更為廣泛。JSP支持的腳本語言只有Java。JSP使用JDBC實現對數據庫的訪問。目標數據庫必須有一個JDBC的驅動程序,即一個從數據庫到Java的接口,該接口提供了標準的方法使Java應用程序能夠連接到數據庫並執行對數據庫的操作。JDBC不需要在服務器上創建數據源,通過JDBC、JSP就可以實現SQL語句的執行。
PHP是Rasmus Lerdorf推出的一種跨平台的嵌入式腳本語言,可以在Windows、UNIX、Linux等流行的操作系統和IIS、Apache、Netscape等Web服務器上運行,用户更換平台時,無需變換PHP代碼。PHP是通過Internet合作開發的開放源代碼軟件,它借用了C、Java、Perl語言的語法並結合PHP自身的特性,能夠快速寫出動態生成頁面。PHP可以通過ODBC訪問各種數據庫,但主要通過函數直接訪問數據庫。PHP支持絕大多數的數據庫,提供許多與各類數據庫直接互連的函數,包括Sybase、Oracle、SQL Server等,其中與SQL Server數據庫互連是最佳組合。

Web數據庫層次體系

當前,Internet/Intranet技術發展異常迅速,越來越多的數據庫應用軟件運行在Internet/Intranet環境下。在此之前,數據庫應用系統的發展經歷了單機結構、集中式結構、客户機/服務器(C/S)結構之後,隨着Internet的普及,又出現了瀏覽器/服務器(B/S)結構與多層結構。在構造一個應用系統時,首先考慮的是系統的體系結構,採用哪種結構取決於系統的網絡環境、應用需求等因素。
客户機/服務器結構
1.二層C/S結構
二層C/S結構是當前非常流行的數據庫系統結構,在這種結構中,客户機提出請求,服務器對客户機的服務請求做出回答。它把界面和數據處理操作分開在前端(客户端)和後端(服務器端),這個主要特點使得C/S系統的工作速度主要取決於進行大量數據操作的服務器,而不是前端的硬件設備;同時也大大降低了對網絡傳輸速度的要求,因為只須客户端把服務請求發送給數據庫服務器,數據庫服務器只把服務結果傳回前端。
在設計時,對數據可能有如下不同的處理形式。
(1)在處理時,客户機先向服務器索取數據,然後釋放數據庫,即客户機發出的是文件請求,在客户機端處理數據,最後將結果送回服務器。這種處理方式的缺點很明顯:所有的應用處理都在客户端完成,這就要求客户端的計算機必須有足夠的能力,以便執行需要的任何程序。更為糟糕的是,由於所有的處理均在客户端完成,每次運行時都要將文件整體傳送到客户端,然後才能執行。如:Student表中有30 000條記錄,客户端發出命令:
Select * From Student Where Sno='200101'
這條命令將要求服務器將Student表中的所有記錄傳送到客户端,然後在客户端執行查詢,結果只用到一條記錄;如果查詢的記錄不存在,網絡傳輸的數據實際上是無 用的。如此大的數據傳輸量是不可想象的。因此,人們提出了在服務器中能夠執行部分代碼的客户機/服務器結構。
(2)在處理時,客户機接受用户要求,併發給服務器;在服務器端處理用户要求,最後將結果傳回客户機顯示或打印。這種處理方式網絡通信量較小。客户機向服務器發出的是處理請求,而不是文件請求,處理請求中的代碼在服務器端執行後向客户機傳送處理後的結果。
這樣,為了特定任務,客户機上的程序和服務器上的程序協同工作:客户機端的代碼用於完成用户的輸入輸出及數據的檢查,而服務器端的代碼完成對數據庫的操作。
客户機/服務器結構的另一個主要特點在於軟件、硬件平台的無關性。數據庫服務器上的數據庫管理系統集中負責管理數據,它向客户端提供一個開放的使用環境,客户端通過數據庫接口,如ODBC(開放數據庫連接)和SQL語言訪問數據庫,也就是説,不管客户端採用什麼樣的硬件和軟件,它只要能夠通過網絡和數據庫接口程序連接到服務器,就可對數據庫進行訪問。
在客户機/服務器結構中,常把客户機稱為前台,而把服務器端稱為後台。前台應用程序的功能包括用户界面、接收用户數據、處理應用邏輯、向後台發出請求、同時接收後台返回的結果,最後再將返回的結果按一定的格式或方式顯示給用户。而後台服務器則負責共享外部設備、存取共享數據、響應前台客户端的請求並回送結果等工作。前台的應用程序和數據一般是用户專用的,而後台的數據和代碼是所有用户可以共享的。
由於數據庫服務器不僅要管理共享數據,保證數據的完整性,還要執行一部分代碼,完成客户端的一些處理請求,所以對用於服務器的計算機提出較高的要求。最好要採用一台專用的服務器,有較快的處理速度,有大容量的硬盤和內存,支持磁帶等大容量的存儲設備。
上面講的客户機/服務器結構將應用分在了客户機、服務器兩級,稱其為兩層客户機/ 服務器結構。總之,兩層C/S結構的基本工作方式是客户程序向數據庫服務器發送SQL請求,服務器返回數據或結果。
這種C/S結構有兩種實現方式,一種是客户來完成表示部分和應用邏輯部分,而服務器完成數據訪問部分,這種情況是以客户為中心的,適用於應用相對簡單、數據訪問量不是很大的情況。另一種是以服務器為中心的,把一些重要的應用邏輯部分放到服務器上,這樣可充分利用服務器的計算能力,減少網絡上需要傳送的數據。通常以存儲過程和觸發器的形式出現,但存儲過程都依賴於特定數據庫,不同數據庫之間很難移植,而三層C/S結構可以很好地解決這個問題。
注意:觸發器(trigger)是數據庫系統中,一個在插入、刪除、修改操作之後運行的記錄級事件代碼。不同的事件可以對應不同的動作。通常有3種類型的觸發器:INSERT觸發器、DELETE觸發器和UPDATE觸發器。
2.三層C/S結構
由於兩層結構的客户機/服務器系統本身固有的缺陷,使得它不能應用於一些大型、結構較為複雜的系統中,故出現了3層結構的客户機/服務器系統,將兩層結構中服務器部分和客户端部分的應用單獨劃分出來,即採用“客户機—應用服務器—數據庫服務器”結構(如圖1-8所示)。典型的數據庫應用可分為三部分:表示部分、應用邏輯(商業邏輯)部分和數據訪問部分,三層結構便是對應於這三部分。
其中,應用服務器和數據庫服務器可位於同一主機,也可位於不同主機。客户機是應用的用户接口部分,負責用户與應用程序的交互,運行在客户機端的軟件也稱為表示層軟件。應用服務器存放業務邏輯層(也稱為功能層)軟件,是應用邏輯處理的核心,實現具體業務。它能響應客户機請求,完成業務處理或複雜計算。若有數據庫訪問任務時,應用服務器層可根據客户機的要求向數據庫服務器發送SQL指令。應用邏輯變得複雜或增加新的應用時,可增加新的應用服務器。數據庫服務器便是用來執行功能層送來的SQL指令,完成數據的存儲、訪問和完整性約束等。操作完成後再通過應用服務器向客户機返回操作結果。
瀏覽器/服務器結構
隨着Internet技術和Web技術的廣泛應用,C/S結構已無法滿足人們的需要。因為在典型C/S體系中,通常為客户安裝前端應用程序的做法已不再現實,並且限制客户端工作環境只能基於Windows、Macintosh或UNIX等操作系統也不切實際。於是基於瀏覽器/服務器結構(Browser/Server)的系統應運而生。
採用B/S結構後,在客户端只需安裝一個通用的瀏覽器即可,不再受具體操作系統和硬件的制約,實現了跨平台的應用。
基於B/S結構的典型應用通常採用三層結構:“瀏覽器—Web服務器—數據庫服務器”,B/S模式的工作原理是:通過瀏覽器以超文本的形式向Web服務器提出訪問數據庫的請求,Web服務器接受客户請求後,激活對應的CGI程序將超文本HTML語言轉化為SQL語法,將這個請求交給數據庫,數據庫服務器得到請求後,進行數據處理,然後將處理結果集返回給CGI程序。CGI再將結果轉化為HTML,並由Web服務器轉發給請求方的瀏覽器,如圖1-9所示。
在B/S模式中,客户端的標準配置是瀏覽器,如IE;業務功能處理由獨立的應用服務器處理,Web服務器成為應用處理的標準配置;數據處理仍然由數據庫服務器處理。
從本質上講,B/S結構與傳統的C/S結構都是以同一種請求和應答方式來執行應用的,區別主要在於:C/S是一種兩層或三層結構模式,其客户端集中了大量應用軟件,而B/S是一種基於超鏈接(HyperLink)、HTML、Java的三級或多級C/S結構,客户端僅需單一的瀏覽器軟件,是一種全新的體系結構,解決了跨平台問題。這兩種結構在不同方面都有着廣泛的應用。雖然C/S結構在Internet環境下明顯不如B/S結構具有優勢,但它在局域網環境下仍具有優勢。
Internet/Intranet信息系統的多層體系結構
多層結構應用軟件與傳統的兩層結構應用軟件相比,有可伸縮性好、可管理性強、安全性高、軟件重用性好等諸多優點,如何在Internet/Intranet環境下構建應用軟件體系結構就成為一個非常重要的問題,也是現今軟件體系研究的一個新熱點。
各種技術層出不窮,如最初的靜態HTML頁面、簡單的CGI網關程序、Java Applet程序,ASP等Web數據庫技術,還有動態的Java在線遊戲及PHP技術等。
實際上,多層的概念是由Sun公司提出來的。Sun公司提出的多層應用體系包括4層:客户層、頂端Web服務層、應用服務層和數據庫層。其中頂端Web服務層是Sun公司多層體系結構中非常重要的一層,它主要起代理和緩存的作用。頂端Web服務器的作用是緩存本地各客户機經常使用的Java Applet程序和靜態數據,通常被放置在客户機所在的局域網內,起到一個Java Applet主機(向Web瀏覽器傳送Java Applet程序的計算機)和訪問其他服務的代理作用。與普通代理服務器的作用相同。構建多層結構應用軟件時,選用Java平台是一個很好的選擇,因為它跨越各應用平台。總之,在Java平台上構建多層應用軟件體系代表着今後Internet/Intranet應用的趨勢。