Web資料庫

Web資料庫

Web資料庫指在網際網路中以Web查詢介面方式訪問的資料庫資源。促進Internet發展的因素之一就是Web技術。由靜態網頁技術的HTML到動態網頁技術的CGIASP、PHP、JSP等,Web技術經歷了一個重要的變革過程。Web已經不再局限於僅僅由靜態網頁提供信息服務,而改變為動態的網頁,可提供互動式的信息查詢服務,使信息資料庫服務成為了可能。Web資料庫就是將資料庫技術與Web技術融合在一起,使資料庫系統成為Web的重要有機組成部分,從而實現資料庫與網路技術的無縫結合。這一結合不僅把Web與資料庫的所有優勢集合在了一起,而且充分利用了大量已有資料庫的信息資源。Web資料庫由資料庫伺服器(Database Server)、中間件(Middle Ware)、Web伺服器(Web Server)、瀏覽器(Browser)4部分組成。

它的工作過程可簡單地描述成:用戶通過瀏覽器端的操作界面以交互的方式經由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程序必須以標記開始,以標記結束。在和標記之間主要由兩部分組成:文件頭和文件體。文件頭用標記 來標識,文件體用標記來標識。在文件的頭部通常包含整個網頁的一些信息。例如<TITLE>標記是用來說明網頁的名稱;<META>標記是用來說明網頁的其他信息,如設計者姓名和版權信息等。所有在瀏覽器中要顯示的內容稱為網頁的主體,必須放在標記中。下面給出的是一個空網頁的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定義的基本格式是:DOCTYPE 根元素[……規則……]>。其中的規則包括:元素聲明ELEMENT,屬性聲明ATTLIST,實體聲明ENTITY,等。通常出版發行業描述圖書的信息需要有:書號、書名、作者、出版社、出版日期等,那麼下面給出的便是為描述圖書信息而制定的一個DTD和與它對應的XML文檔。
ELEMENT PublishingTime(year, month)>
]>
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資料庫連接訪問的技術方法可歸納為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、UNIXLinux等流行的操作系統和IISApache、Netscape等Web伺服器上運行,用戶更換平台時,無需變換PHP代碼。PHP是通過Internet合作開發的開放源代碼軟體,它借用了C、Java、Perl語言的語法並結合PHP自身的特性,能夠快速寫出動態生成頁面。PHP可以通過ODBC訪問各種資料庫,但主要通過函數直接訪問資料庫。PHP支持目前絕大多數的資料庫,提供許多與各類資料庫直接互連的函數,包括SybaseOracleSQL Server等,其中與SQL Server資料庫互連是最佳組合。

層次體系


當前,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應用的趨勢。
  • 目錄