高級數(shù)據(jù)庫技術-第6章_Web數(shù)據(jù)庫_第1頁
高級數(shù)據(jù)庫技術-第6章_Web數(shù)據(jù)庫_第2頁
高級數(shù)據(jù)庫技術-第6章_Web數(shù)據(jù)庫_第3頁
高級數(shù)據(jù)庫技術-第6章_Web數(shù)據(jù)庫_第4頁
高級數(shù)據(jù)庫技術-第6章_Web數(shù)據(jù)庫_第5頁
已閱讀5頁,還剩102頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第第6章章 Web數(shù)據(jù)庫數(shù)據(jù)庫 Web 數(shù)據(jù)庫是近年來發(fā)展很快的一種數(shù)據(jù)庫技術,它是基于Web模式的DBMS的一種信息服務。它以Web這種瀏覽器/服務器模式為平臺,將客戶端融入Web瀏覽器。它能充分發(fā)揮DBMS高效的數(shù)據(jù)存儲和管理能力,為Internet用戶提供了更為方便、內容豐富的服務。6.1 Web數(shù)據(jù)庫的體系結構數(shù)據(jù)庫的體系結構6.1.1 Web數(shù)據(jù)庫的主要優(yōu)點數(shù)據(jù)庫的主要優(yōu)點 基于Web的數(shù)據(jù)庫應用具有以下幾大優(yōu)點: 1)能夠在多平臺、多操作系統(tǒng)上應用; 2) 它能提供高性能的管理應用, 實現(xiàn)了基于WWW標準接口的網(wǎng)絡數(shù)據(jù)庫的開發(fā); 3) 能夠通過網(wǎng)絡實現(xiàn)數(shù)據(jù)庫的遠程存取和動態(tài)交互;

2、4) 使得管理更方便, 而且提高了二次開發(fā)的簡捷性, 使操作簡單、維護方便。 5) 基于WWW 標準開放式接口的數(shù)據(jù)庫的擴展更加方便。 6) 提供通用的圖形用戶接口界面;6.1.2 主機集中式模式 主機集中式模式主要應用在早期的數(shù)據(jù)庫應用系統(tǒng)中,它是一種主機-終端模式,所有的計算任務和數(shù)據(jù)管理都集中在主機上。該模式的優(yōu)點是對具有大量的定型處理的應用有較高的效率,其不足在于對主機的性能要求高,網(wǎng)絡的負載重,而且用戶終端本身不具有圖形用戶界面,程序開發(fā)的自由度小,工作效率低。6.1.3 客戶端/服務器模式 數(shù)據(jù)庫系統(tǒng)的體系結構逐漸從主機集中式向客戶機/服務器模式(即C/S 模式)的方向發(fā)展,C/S

3、模式中的第一層:客戶層主要用于發(fā)送用戶請求和接收從服務器返回的信息;第二層:服務器層主要用于存儲、處理和傳送信息。C/S 模式機制運作的基本過程是:服務器監(jiān)聽相應端口的輸入,客戶機發(fā)請求,服務器接收并處理請求,并將結果返回給客戶機。客戶通過Internet/Intranet 直接與數(shù)據(jù)庫服務器對話,服務器將對話結果返回給客戶機。它的實質就是將數(shù)據(jù)存取和應用程序分離開來,有數(shù)據(jù)服務器執(zhí)行數(shù)據(jù)操作,客戶機來執(zhí)行應用程序,用戶在客戶端通過網(wǎng)絡同服務器打交道,客戶端又包括用戶界面和企業(yè)邏輯,網(wǎng)絡上傳送的數(shù)據(jù)主要是客戶端向服務器發(fā)出的請求以及服務器發(fā)送給客戶端的響應結果和出錯信息 C/S 模式的主要優(yōu)點

4、有:數(shù)據(jù)庫服務器運行是基于關系模型的DBMS,DBMS 提供了保護數(shù)據(jù)庫的功能;C/S模式將任務分開在客戶端和數(shù)據(jù)庫服務器上進行,從而使DBMS 的速度不受工作站速度的約束;可以顯著地減少局域網(wǎng)傳輸量、降低了對數(shù)據(jù)控制的難度,提供了多用戶開發(fā)特性,保障了用戶投資;此外,數(shù)據(jù)庫的無關性、工作站平臺的無關性也是它的優(yōu)點。 C/S 模式也有許多缺點,難以集中控制,企業(yè)邏輯安裝在每一個客戶機上,使得對系統(tǒng)的維護、修改非常困難。此時集中成為企業(yè)管理的強烈要求。安全性差,在兩層結構中,大部分業(yè)務邏輯是在每臺客戶端,這樣企業(yè)的核心機密就容易被泄露,而且每臺客戶機都可以對服務器上的數(shù)據(jù)進行直接操作,勢必產(chǎn)生漏

5、洞。系統(tǒng)龐大之后,就很難保證,系統(tǒng)的穩(wěn)定性了。 為了解決C/S 模式中的許多問題,以及分布式技術不斷發(fā)展,在企業(yè)管理系統(tǒng)中,三層結構逐漸取代了兩層結構。三層結構的基本思想是將用戶界面同企業(yè)邏輯分離,把信息系統(tǒng)按功能劃分為表示、功能和數(shù)據(jù)三大塊,分別放置在相同或不同的硬件平臺上。把傳統(tǒng)的C/S 模式中的服務器部分分解為一個應用服務器(WEB 服務器)和一個或多個數(shù)據(jù)庫服務器。從而構成一個三層結構的客戶服務器體系。其中, 第一層:信息系統(tǒng)的用戶接口部分,即人機界面,是用戶與系統(tǒng)間交互信息的窗口,主要功能是指導操作人員使用界面,輸入數(shù)據(jù)、輸出結果;第二層:是應用的主體,包括了系統(tǒng)中核心的和易變的企業(yè)

6、邏輯(規(guī)劃、運作方法、管理模式等),它的功能是接收輸入,處理后返回結果;第三層:數(shù)據(jù)層即數(shù)據(jù)庫管理系統(tǒng)(DBMS),負責管理對數(shù)據(jù)庫的讀寫和維護,能夠迅速執(zhí)行大量數(shù)據(jù)的更新和檢索。B/S 模式機制運作的基本過程是:客戶發(fā)送請求,并把請求發(fā)送給模型的中間層,中間層接收到請求后再發(fā)送給數(shù)據(jù)庫,數(shù)據(jù)庫服務器對其進行處理,并把處理的結果送回中間層,然后返回給客戶,讓中間層來支持對數(shù)據(jù)庫的存取與特性控制。B/S 模式的主要優(yōu)點是:用戶界面的改變同企業(yè)邏輯的改變互相隔離,互不影響,便于系統(tǒng)的修改和維護,大大增強了系統(tǒng)的靈活性。三層結構實際上也是目前Web應用采用的體系結構,它允許把全部的企業(yè)邏輯和業(yè)務處理

7、放在應用服務器上,支持純粹的瘦客戶機,因此采用三層結構的系統(tǒng)可以較為方便、自然地向Web應用等方向拓展。三層架構不需要客戶端有很強的處理能力,原有的低性能的PC在新系統(tǒng)中仍然能夠得到很好的利用,避免了重復投資,降低了應用成本。三層結構中的三層,只是邏輯上的概念。具體實現(xiàn)時,物理結構上的差異可能會很大。三層可以在一臺計算機上,也可以在兩臺、三臺,甚至更多的計算機上,只要它們在體系上遵循三層C/S結構即可。系統(tǒng)從一臺擴展為兩臺、三臺甚至更多計算機時,對應用沒有任何修改。 B/S 模式的主要缺點是WEB 服務器應用功能弱、構造復雜,應用較難,此外,由于所有的對數(shù)據(jù)庫連接及瀏覽器的請求訪問都必須通過W

8、EB 服務器,從而造成WEB 服務器工作負荷重的問題。 由三層的B/S 模式擴展到四層的體系結構模型,可以把C/S機制加入到B/S 模型中,如改變數(shù)據(jù)庫服務器層,引入C/S 機制,增加數(shù)據(jù)庫客戶端。同時,WEB 服務器也作為數(shù)據(jù)庫服務器的客戶端。瀏覽器層保持不變。對WEB 數(shù)據(jù)庫的操作有兩部分:一是來自首層的一般客戶請求處理,通過協(xié)議( 如CGI、API、ASP)與WEB 服務器連接,再通過ODBC 向數(shù)據(jù)庫服務器發(fā)出SQL 請求,數(shù)據(jù)管理系統(tǒng)執(zhí)行SQL 查詢并將結果通過ODBC 傳回WEB 服務器,最后處理結果返回給首層的客戶;二是來自數(shù)據(jù)庫客戶端的數(shù)據(jù)庫訪問處理,數(shù)據(jù)庫客戶端發(fā)出訪問請求,

9、如對數(shù)據(jù)的插入、刪除、修改、查詢等,并通過JDBC/ODBC 連接到數(shù)據(jù)庫服務器,訪問WEB 數(shù)據(jù)庫進行處理,處理后的結果再通過JDBC/ODBC 返回給數(shù)據(jù)庫客戶端。此外,對訪問控制、數(shù)據(jù)的完整性約束的設置在WEB 服務器、數(shù)據(jù)庫服務器端來完成。這樣,即保留了B/S 模式原有的優(yōu)勢,又解決了B/S 模式構造復雜應用難的問題,同時對數(shù)據(jù)庫操作的分工處理解決了B/S 模式中的WEB 服務器負荷重的問題。 客戶端 Web 服務器 數(shù)據(jù)庫服務器 應用服務器 Web 瀏覽器瀏覽器 HTTP 服務服務 應用邏輯應用邏輯 數(shù)據(jù)庫數(shù)據(jù)庫 四層的體系結構的主要特點是,1) WEB 服務器只提供HTTP 服務,

10、如檢索并返回客戶端請求的WEB 頁面;2)客戶端人機界面部分的程序開發(fā)工作得以簡化。它不必關心業(yè)務邏輯是如何訪問數(shù)據(jù)庫的,只需把精力集中在人機界面上即可;3) 數(shù)據(jù)服務層主要提供對數(shù)據(jù)庫進行各種操作的方法。它主要由應用邏輯層來調用。一旦數(shù)據(jù)庫的結構確定下來,對于它的改動就比較小了;4)所有的應用邏輯集中在應用服務器層。該應用邏輯集主要由WEB 服務器來調用。因為應用邏輯被分離出來,這一部分可以隨著具體業(yè)務的變化而變化,但在客戶端和數(shù)據(jù)服務層所做的改動較小,從而使得該體系結構具有可伸縮的特點,適合于快速開發(fā)。6.2 Web數(shù)據(jù)庫的訪問技術數(shù)據(jù)庫的訪問技術 一般實現(xiàn)Web數(shù)據(jù)庫系統(tǒng)的連接和應用可采

11、取兩種方法, 一種是在Web服務器端提供中間件來連接Web服務器和數(shù)據(jù)庫服務器, 另一種是把應用程序下載到客戶端并在客戶端直接訪問數(shù)據(jù)庫。中間件負責管理Web 服務器和數(shù)據(jù)庫服務器之間的通信并提供應用程序服務,由于駐留在Web服務器上,因而中間件軟件能夠調用作為Web服務器和數(shù)據(jù)庫服務器間傳輸機制的外部程序或編碼,并將執(zhí)行查詢等以HTML頁面或純文本的形式將信息返回給最終用戶。數(shù)據(jù)庫服務器負責管理駐留在數(shù)據(jù)庫服務器中的數(shù)據(jù)。最基本的中間件技術有通過網(wǎng)關接口CGI 和應用程序接口A P I 兩種。6.2.1 CGI CGI(Common Gateway Interface ,即公共網(wǎng)關接口)是一

12、種Web站點上可以用來訪問Web站點的用戶交互的各種程序的標準,使用CGI腳本允許用戶在瀏覽器中等服務器上的數(shù)據(jù)庫交互,完成對數(shù)據(jù)庫的各種操作。它是用于連接主頁和應用程序的接口。CGI 程序的作用是擴展Web 服務器的功能,使之能夠執(zhí)行一些Web 服務器本身不能完成的任務。訪問數(shù)據(jù)庫也是其重要應用。 CGI就是為了擴展主頁的功能而設立的。CGI 應用程序能夠與瀏覽器進行交互, 還可以通過數(shù)據(jù)庫的A P I 與數(shù)據(jù)庫服務器等外部數(shù)據(jù)源進行通信, 也可以將從瀏覽器獲得的數(shù)據(jù)放到數(shù)據(jù)庫中。 CGI 應用程序可由Web瀏覽器來啟動。Web瀏覽器填寫HTML 表單或單擊Web 服務器上的HTML 頁面中

13、的鏈接。CGI應用程序可獲取Web 瀏覽器提供的信息和數(shù)據(jù)庫中的信息。 Web 服務器執(zhí)行CGI 應用程序后, 將執(zhí)行結果返回到HTML 頁面中, 或將信息傳遞到數(shù)據(jù)庫中。用戶通過Web 瀏覽器以HTML 形式向Web 服務器提出訪問數(shù)據(jù)庫的請求,Web 服務器得到請求后, 激活對應的CGI 程序, CGI程序將HTML 語言轉化為SQL 語言文本,同時將請求遞交給數(shù)據(jù)庫管理系統(tǒng), 數(shù)據(jù)庫管理系統(tǒng)得到請求后, 首先驗證其合法性, 然后將操作的數(shù)據(jù)結果轉給CGI 程序, CGI 程序再將這個結果轉化為HTML , 并由Web服務器轉發(fā)給Web 瀏覽器。 0 HTTP請求 數(shù)據(jù)請求 HTTP頁面

14、數(shù)據(jù)返回 W eb瀏瀏 覽覽 器器 W eb服服 務務 器器 CGI程程 序序 數(shù)數(shù) 據(jù)據(jù) 庫庫 CGI 具有極強的跨平臺性能, 幾乎可以在任何操作系統(tǒng)和Web 服務器上實現(xiàn)。但編寫CGI 應用程序比較復雜。另外, CGI缺點是執(zhí)行速度較慢,Web服務器每啟動一個數(shù)據(jù)查詢服務,就必須啟動一個新的CGI進程,相對服務器資源代價比較高。因此CGI開發(fā)困難、效率低、應用層次不分明。 此外, CGI 程序不能保存變量狀態(tài), 從而給服務器與客戶機之間通信的保持帶來困難。再者系統(tǒng)的安全性也存在著隱患,易受攻擊而導致癱瘓。6.2.2 ODBC和OLE DBODBC 是一個客戶應用程序訪問關系數(shù)據(jù)庫時提供的一

15、個統(tǒng)一的接口,對于不同的數(shù)據(jù)庫,ODBC提供了一套統(tǒng)一的API,使應用程序可以應用所提供的API來訪問任何提供了ODBC驅動程序的數(shù)據(jù)庫。 ODBC 是 Microsoft Windows 開放式服務體系結構 (WOSA) 中的數(shù)據(jù)庫部分。它建立了一組規(guī)范,并提供了一組對數(shù)據(jù)庫訪問的標準API(應用程序編程接口)。這些API利用SQL來完成其大部分任務。ODBC本身也提供了對SQL語言的支持,用戶可以直接將SQL語句送給ODBC ODBC 的組件: ODBC API 函數(shù)調用庫、錯誤代碼集和用于訪問 DBMS 上數(shù)據(jù)的標準結構化查詢語言的 (SQL) 語法。 ODBC 驅動程序管理器 驅動程序

16、管理器包含在ODBC32.DLL中,對用戶是透明的。其任務是管理ODBC驅動程序,是ODBC中最重要的部件。ODBC 數(shù)據(jù)庫驅動程序 是一些DLL,提供了ODBC和數(shù)據(jù)庫之間的接口。有關所提供的驅動程序的列表,請參見文章 ODBC 驅動程序列表。 ODBC 游標庫 駐留在 ODBC 驅動程序管理器和該驅動程序之間并處理數(shù)據(jù)滾動的動態(tài)鏈接庫 (ODBCCR32.DLL)。 ODBC 管理器 該程序位于Windows 95控制面板(Control Panel)的32位ODBC內,其主要任務是管理安裝的ODBC驅動程序和管理數(shù)據(jù)源。 ODBC是客戶應用程序訪問關系數(shù)據(jù)庫時提供的一個統(tǒng)一的接口,對于不

17、同的數(shù)據(jù)庫,ODBC提供了一套統(tǒng)一的API,使應用程序可以應用所提供的API來訪問任何提供了ODBC驅動程序的數(shù)據(jù)庫。ODBC API 把后端匹配為一個 ODBC兼容的數(shù)據(jù)源這些數(shù)據(jù)源可以是從文本文件到 Oracle 或 PostgreSQL RDBMS 的任何東西。并且由于,ODBC已經(jīng)成為一種標準,所以目前所有的關系數(shù)據(jù)庫都提供了ODBC驅動程序,這使ODBC的應用非常廣泛,基本上可用于所有的關系數(shù)據(jù)庫。對后端的訪問來自 ODBC 驅動或者廠商提供的允許訪問數(shù)據(jù)的驅動 一個基于ODBC的應用程序對數(shù)據(jù)庫的操作不依賴任何DBMS,不直接與DBMS打交道,所有的數(shù)據(jù)庫操作由對應的DBMS的OD

18、BC驅動程序完成。ODBC提供一套兩個驅動程序:一個是數(shù)據(jù)庫管理器的語言,另一個為程序設計語言提供公用接口。驅動程序是一些DLL,提供了ODBC和數(shù)據(jù)庫之間的接口。允許Visual C+用標準的函數(shù)調用經(jīng)公用接口訪問數(shù)據(jù)庫的內容,是這兩個驅動程序的匯合點。當然,還有其它和ODBC有關的實用程序類型的DLL。例如,允許管理ODBC數(shù)據(jù)源的DLL。ODBC的實際管理接口出現(xiàn)在SYSTEM文件夾中的某個CPL(控制面板)文件中,我們在后面要談到這方面的問題。 ODBC提供對數(shù)據(jù)庫內容的訪問。首先必須用ODBC管理器注冊一個數(shù)據(jù)源,管理器根據(jù)數(shù)據(jù)源提供的數(shù)據(jù)庫位置、數(shù)據(jù)庫類型及ODBC驅動程序等信息,

19、建立起ODBC與具體數(shù)據(jù)庫的聯(lián)系。這樣,只要應用程序將數(shù)據(jù)源名提供給ODBC,ODBC就能建立起與相應數(shù)據(jù)庫的連接。它沒有提供數(shù)據(jù)庫管理器和C之間盡可能最好的數(shù)據(jù)轉換。唯一影響ODBC前程的是,它的速度極低至少較早版本的產(chǎn)品是這樣,然而以Microsoft的市場影響力,ODBC毫無疑問是成功了。 ODBC (開放數(shù)據(jù)庫聯(lián)接 Open Database Connectivity)是一套 API 用這套 API 允許你書寫可以在各種 RDBMS 服務器上互操作的應用。就是說,利用ODBC API,你可通過統(tǒng)一界面和許多各不相同的數(shù)據(jù)庫進行交互。 OLE DB 是什么,它為何不同于其他數(shù)據(jù)庫技術?

20、OLE DB 是 Visual C+開發(fā)數(shù)據(jù)庫應用中提供的新技術,它基于 COM 接口。因此,OLE DB對所有的文件系統(tǒng)包括關系數(shù)據(jù)庫和非關系數(shù)據(jù)庫都提供了統(tǒng)一的接口。這些特性使得OLE DB技術比傳統(tǒng)的數(shù)據(jù)庫訪問技術更加優(yōu)越。OLE DB 和其他 Microsoft 數(shù)據(jù)庫技術的不同之處在于其提供通用數(shù)據(jù)訪問的方式。 通用數(shù)據(jù)訪問 使用多種相關聯(lián)的應用程序來訪問這些數(shù)據(jù)成為工作中一個很大的瓶頸。如果把信息合并到一個數(shù)據(jù)庫管理系統(tǒng) (DBMS) 來解決。這種解決方案不僅昂貴、耗時,而且在許多情況下是不可行的。 另一種方案就是開發(fā)通用數(shù)據(jù)訪問。OLE DB 和 ADO 提供了通用數(shù)據(jù)訪問功能。

21、 并且,OLE DB 比ADO的性能更強一些,并被推薦和 Visual C+ 應用程序一起使用。有關使用何種技術的更多信息,請參見數(shù)據(jù)訪問技術建議。 通用數(shù)據(jù)訪問技術必須兼?zhèn)鋬煞N功能:其一是讓非 DBMS 數(shù)據(jù)源能為數(shù)據(jù)庫應用程序所訪問的功能;其二是“分布式查詢”或統(tǒng)一訪問多(分布式)數(shù)據(jù)源功能。 非 DBMS 訪問 讓非 DBMS 數(shù)據(jù)源能為數(shù)據(jù)庫應用程序所訪問的能力。DBMS 數(shù)據(jù)源的例子有 IMS、DB2、Oracle、SQL Server、Access 以及 Paradox 等。非 DBMS 數(shù)據(jù)源的例子有存儲于文件系統(tǒng)、電子郵件、電子表格以及項目管理工具等中的信息。 OLE DB 支

22、持開發(fā)能訪問各種DBMS 和非 DBMS 數(shù)據(jù)源的應用程序。OLE DB它利用一套 COM 接口來訪問和操縱所有類型的數(shù)據(jù)。COM 不僅在數(shù)據(jù)源之間而且還在其他各種應用程序之間減少了不必要的重復服務,同時還使它們之間的交互操作達到最大。 分布式查詢 所謂分布式查詢就是有能統(tǒng)一訪問分布數(shù)據(jù)源中的數(shù)據(jù)的能力。數(shù)據(jù)源既可以為同一類型,也可以為不同類型, OLE DB定義了一組COM接口,這組接口封裝了各種數(shù)據(jù)系統(tǒng)的訪問操作,這組接口為數(shù)據(jù)使用方和數(shù)據(jù)提供方建立了標準,OLE DB還提供了一組標準的服務組件,用于提供查詢、緩存、數(shù)據(jù)更新、事務處理等操作,因此,數(shù)據(jù)提供方只需實現(xiàn)一些簡單的數(shù)據(jù)操作,在使

23、用方就可以獲得全部的數(shù)據(jù)控制能力。 OLE DB 還定義了一批可擴展并且可以維護的接口,這些接口代管并封裝 DBMS 功能中一致、可重復使用的部分,并且定義了 DBMS 組件的邊界,例如行容器、查詢處理器和事務處理協(xié)調器,使用這些組件可對各種信息源進行統(tǒng)一事務訪問。 OLE DB 應用程序通常寫作 DLL,但是其 COM 實現(xiàn)通過使用組件化代碼克服了 DLL 的缺陷(例如命名和版本問題)。在 OLE DB 中,可使用全局唯一標識符 (GUID) 來調用接口或者訪問其他組件。 最后一點,COM 使用引用計數(shù)來保持對組件使用的跟蹤。調用接口方法時,引用計數(shù)遞增;方法返回時,引用計數(shù)遞減。當計數(shù)等于

24、零時,該方法所屬的組件被釋放。 OLE DB 是新的低層接口,它介紹了一種“通用的”數(shù)據(jù)訪問范例。OLE DB和ODBC標準都是為了提供統(tǒng)一的訪問數(shù)據(jù)接口,實際上,ODBC標準的對象是基于SQL的數(shù)據(jù)源(SQL-Based Data Source),而OLE DB的對象則是范圍更為廣泛的任何數(shù)據(jù)存儲。從這個意義上說,符合ODBC標準的數(shù)據(jù)源是符合OLE DB標準的數(shù)據(jù)存儲的子集。符合ODBC標準的數(shù)據(jù)源要符合OLE DB標準,還必須提供相應的OLE DB服務程序(Service Provider),就像SQL Server要符合ODBC標準,必須提供SQL Server ODBC驅動程序一樣。

25、現(xiàn)在,微軟自己已經(jīng)為所有的ODBC數(shù)據(jù)源提供了一個統(tǒng)一的OLE DB服務程序,叫做ODBC OLE DB Provider。6.2.3 JDBC JDBC是由SUN公司推出的第一個標準的、可執(zhí)行SQL語句的Java API。由JAVA 語言寫的類和界面組成。JDBC 是一種規(guī)范, 能為開發(fā)者提供標準的數(shù)據(jù)庫訪問類和接口, 能夠方便地向任何關系數(shù)據(jù)庫發(fā)送SQL 語句, 同時JDBC是一個支持基本SQL 功能的低層應用程序接口, 但實際上也支持高層的數(shù)據(jù)庫訪問工具及A P I。所有這些工作都建立在X/Open SQL CL I 基礎上。 簡單的說JDBC完成下列三件事:第一,同一個 數(shù)據(jù)庫建立連接

26、;第二,向數(shù)據(jù)庫發(fā)送SQL語句;第三,處理數(shù)據(jù)庫返回的結果。另外,JDBC是低級的I/0 與高級的I/0 的基礎,由于它既可以直接調用SQL語句,又可以作為構造高級接口與工具的基礎,所以是一種“低級”的接口。 JDBC 技術 在JAVA Applet 中訪問數(shù)據(jù)庫的優(yōu)點在于: 直接訪問數(shù)據(jù)庫, 不再需要Web 數(shù)據(jù)庫的介入,從而避開了CGI 方法的一些局限性; 用戶訪問控制可以由數(shù)據(jù)庫服務器本地的安全機制來解決, 提高了安全性;JDBC 是支持基本SQL 功能的一個通用低層的應用程序接口, 在不同的數(shù)據(jù)庫功能的層次上提供了一個統(tǒng)一的用戶界面, 為跨平臺跨數(shù)據(jù)庫系統(tǒng)進行直接的Web 訪問提供了方

27、案。從而克服了A P I 方法一些缺陷; 同時, 可以方便地實現(xiàn)與用戶的交互, 提供豐富的圖形功能和聲音、視頻等多媒體信息功能。 JDBC 的兩種主要接口分別是面向應用程序的開發(fā)人員的JDBC API 和面向驅動程序低層的JDBC Driver API。 基于JDBC 的Web 數(shù)據(jù)庫結構的缺點是: 不能進行OLTP,只能進行簡單的數(shù)據(jù)庫查詢等操作,;完全跨平臺跨數(shù)據(jù)庫系統(tǒng)的功能和標準遠未實現(xiàn);安全性、緩沖機制和連接管理仍不完善。 JDBC主要由兩層組成:JDBC應用程序接口(JDBC API)和JDBC驅動應用程序接口。JDBC API提供從應用程序到JDBC管理器的通訊。開發(fā)者通過API使

28、用標準Java機制訪問數(shù)據(jù)庫。數(shù)據(jù)庫供應商提供JDBC驅動接口,也可以通過JDBC-ODBC連接橋使用傳統(tǒng)的ODBC連接。 Java Application/Web Application JDBC Driver Manager JDBC-Net Driver JDBC Driver JDBC-ODBC Bridge Driver ODBC and DB Driver JDBC提供了一個通用的JDBC Driver Manager(如圖6-4) ,用來管理各數(shù)據(jù)庫軟件商提供的JDBC 驅動程序,就可以訪問其數(shù)據(jù)庫。此外,對沒有提供相應JDBC驅動程序的數(shù)據(jù)庫系統(tǒng),開發(fā)了特殊的驅動程序:JDBC

29、 - ODBC橋,它通過將JDBC操作轉換為ODBC操作來實現(xiàn)JDBC操作。對ODBC,它像是通常的應用程序,橋為所有對ODBC可用的數(shù)據(jù)庫實現(xiàn)JDBC。由于ODBC被廣泛地使用,該橋的優(yōu)點是讓JDBC能夠訪問幾乎所有的數(shù)據(jù)庫,規(guī)模較小而效率高的特點。JDBC - NET Driver 允許使用通用的網(wǎng)絡協(xié)議訪問不同的數(shù)據(jù)庫服務器。 DriverManager Connection Connection Statement Statement Statement ResultSet ResultSet 6.2.4 對象/關系映射 對象-關系映射用兩個步驟完成。首先,把 XML 模式(這里是 D

30、TD)映射成一個對象模式,接著把對象模式映射成數(shù)據(jù)庫模式。這兩步映射可以隨意的被結合在一起為直接的 DTD-到-數(shù)據(jù)庫映射,如同今天多數(shù)軟件所做的那樣。 在考慮這種映射的時候,理解涉及到的對象是特定于每個 DTD 的,而不是來自 DOM 的對象是很重要的。特別是,這些對象建模在 XML 文檔中的數(shù)據(jù),而 DOM 建模 XML 文檔的結構。6.3 XML數(shù)據(jù)庫數(shù)據(jù)庫 XML數(shù)據(jù)庫方式充分考慮了XML數(shù)據(jù)本身的特點,針對這些特點進行存儲和索引。在該方式下,既可以實現(xiàn)細粒度的查找和更新,也不需要將XML文檔拆分成多個部分進行存儲。 XML數(shù)據(jù)庫為XML文檔定義了一個邏輯模型,并根據(jù)這個模型存取文件。

31、這個模型包括元素、屬性、PCDATA和文件順序。XML數(shù)據(jù)庫以XML文件作為其基本的邏輯存儲單位,就好像關系數(shù)據(jù)庫中數(shù)據(jù)表中的記錄一樣。XML數(shù)據(jù)庫對底層的物理存儲的實現(xiàn)模型沒有固定的要求,它可以建立在關系型數(shù)據(jù)庫、面向對象數(shù)據(jù)庫或層次數(shù)據(jù)庫之上,甚至采用特定的存儲格式 總之,XML數(shù)據(jù)庫是為存儲XML文檔并保持其完整性而設計的,存儲時以XML文檔為基本存儲單位的一種數(shù)據(jù)存儲方式。XML數(shù)據(jù)庫不是一種全新的數(shù)據(jù)庫模式,它并不是要取代現(xiàn)存的數(shù)據(jù)庫模式,而是為人們處理XML文檔提供一種更方便的存儲方式。 XML是一種基于SGML簡單靈活的元語言,具有良好的數(shù)據(jù)存儲格式、可擴展性、高度結構化、便于網(wǎng)

32、絡傳輸?shù)忍匦?,這些特性使得XML本身非常適用于數(shù)據(jù)庫間的信息交互。所以,XML技術和數(shù)據(jù)庫技術的結合就成為必然的趨勢,以XML為中介實現(xiàn)數(shù)據(jù)庫之間的信息交互就成為XML技術應用研究的熱點。 XML 數(shù)據(jù)庫是一種Web 數(shù)據(jù)庫,它是可以對XML 文檔進行存取管理和數(shù)據(jù)查詢的數(shù)據(jù)庫,是一個能夠在應用中管理XML 數(shù)據(jù)和文檔的數(shù)據(jù)庫系統(tǒng)。簡單一點說,XML 數(shù)據(jù)庫就是一個XML 文檔的集合,這些文檔是持久的并且是可以操作的。 由于XML 這種語言的特點是可以自己定義數(shù)據(jù)結構。采用這種數(shù)據(jù)傳輸格式可以搭建起一個獨立于數(shù)據(jù)庫的網(wǎng)關平臺,它屏蔽了數(shù)據(jù)庫的異構性,也屏蔽了接收和發(fā)送數(shù)據(jù)的兩端在實現(xiàn)應用所采用

33、的編程語言上的異構性。所以這種基于XML的數(shù)據(jù)庫網(wǎng)關平臺不會影響原有系統(tǒng)的使用,可以實現(xiàn)平滑的升級和移植,這對于企業(yè)升級是非常有意義的 6.3.1 XML技術的基本思想 20世紀60年代,IBM公司的研究人員發(fā)明了第一種現(xiàn)代標記語言通用標記語言(Generalized Markup Language,GML)。GML可以用于標記任何數(shù)據(jù)集合的結構,同時它也是一種元語言(meta-language),即能夠描述其他語言及其語法和詞匯表的語言。 1986年, SGML被國際標準化組織(ISO)接受為國際性的數(shù)據(jù)存儲和交換的標準,并收錄在ISO 8879當中。Web技術的出現(xiàn)和進步將對工業(yè)界的發(fā)展和

34、人類的通信行為產(chǎn)生的巨大影響,因此,GML的問世具有重要的意義。 1996年,W3C組織開始設計一種可擴展的標記語言,它將SGML的強大的靈活性和完善的功能與HTML技術結合起來。這就是后來的XML語言。 XML重新定義了SGML的一些內部值和參數(shù),去掉了大量的很少用到的功能,這些繁雜的功能使得SGML在設計網(wǎng)站時顯得復雜化。XML保留了SGML的結構化功能,這樣就使得網(wǎng)站設計者可以定義自己的文檔類型,XML同時也推出一種新型文檔類型,使得開發(fā)者也可以不必定義文檔類型。 XML是一種界定文本數(shù)據(jù)的簡便而標準的方法。XML不關心任何視覺表示形式,只關心數(shù)據(jù)本身。XML的標記用來說明你所描述的概念

35、,而屬性則用來控制它們的結構。在這樣的描述機制下,XML的數(shù)據(jù)是開放的。XML能夠在不同的用戶和程序之間交換數(shù)據(jù),而不論其平臺如何。它的自描述的特性使其對于B2B和企業(yè)內部網(wǎng)解決方案來說是一種有效的選擇。并且無需協(xié)調就可以在程序之間共享數(shù)據(jù)。所以,你可以定義自己所設計出的語法并同其他人共享。 格式正規(guī)的XML XML的語法規(guī)則是XML進行工作的基礎。最基本的,格式正規(guī)的XML會遵守W3C的XML 1.0推薦標準的語法要求。吸取HTML松散格式帶來的經(jīng)驗教訓,XML一開始就堅持實行良好的格式。 我們先看HTML的一些語句。 1.sample 2.sample 3.sample 4.samplar

36、 在XML文檔中,上述幾種語句的語法都是錯誤的。因為: 1所有的XML標記都必須合理嵌套; 2.所有的標記都必須要有一個相應的結束標記; 3.所有XML標記都區(qū)分大小寫; 4.所有標記的屬性必須用括起來; 所以上列語句在XML中正確的寫法是 1.sample 2.sample 3.sample 4.samplar 另外,XML標記必須遵循下面的命名規(guī)則: 1.名字中可以包含字母、數(shù)字以及其它字母; 2.名字不能以數(shù)字或_ (下劃線) 開頭; 3.名字中不能包含空格; 4.名字不能以字母 xml (或 XML 或 Xml .) 開頭; 文檔類型定義 文檔類型定義( Document Type D

37、efinition,DTD)是一種保證XML文檔格式正確的有效方法,可以比較XML文檔和DTD文件來看文檔是否符合規(guī)范,元素和標簽使用是否正確。一個DTD文檔包含:元素的定義規(guī)則,元素間關系的定義規(guī)則,元素可使用的屬性,可使用的實體或符號規(guī)則。 DTD文件也是一個ASCII的文本文件,后綴名為.dtd。 調用DTD文件的方法有兩種:直接包含在XML文檔內的DTD和調用獨立的DTD文件。數(shù)據(jù)建模XML技術的主要優(yōu)勢之一就是XML詞匯表的高效率。詞匯表是元素及其屬性、以及你所指定的文檔結構的規(guī)范。一個有效的詞匯表,是創(chuàng)建良好的支持XML的應用程序的重要基礎。XML數(shù)據(jù)模型比關系數(shù)據(jù)模型更加豐富,同

38、時也更加復雜。XML數(shù)據(jù)模型不僅允許對復雜的數(shù)據(jù)進行建模,而且會保留層次關系和數(shù)據(jù)中的文檔順序。文檔順序和層次關系是通過基于XML節(jié)點標識符的排序維護的。將結構化數(shù)據(jù)存儲在關系型結構中,可以獲得更好的性能。但如果數(shù)據(jù)是半結構化或非結構化的,則可以選擇使用XML數(shù)據(jù)模型來進行建模,加入XML標記。如果把結構化的數(shù)據(jù)用 XML數(shù)據(jù)模型來存放,則會影響數(shù)據(jù)訪問的性能。 文檔對象模型(DOM) 在文檔對象模型DOM中,應用程序所操作的XML文檔不是一個普通的文本流,而是一個對象樹。程序可以十分方便地查詢或修改對象及其屬性,這里的屬性可以是與當前對象對應的元素或子元素,也可以是它所包含的文本內容。 文檔

39、對象模型DOM就是一個操作結構化文檔的應用程序編程接口(API),它定義了XML文檔的邏輯結構以及對XML文檔進行各種操作的方法。通過DOM模型,應用程序設計者可以十分方便地創(chuàng)建XML文檔,遍歷XML文檔的結構,增加、修改、刪除文檔的元素和內容。DOM標準接口的提出大大簡化了應用程序中對結構化文檔處理操作XML簡單API(SAX)操作XML文檔的另一個最主要的編程接口是SAX(Simple API for XML)。SAX提供了一種事件驅動的模式去處理XML文檔,SAX解析器處理XML文檔時,當遇到元素開始、元素結束、文本、文檔的開始或結束等時,它會發(fā)出相應的事件。應用程序設計者就可以有選擇地

40、決定對哪些事件進行處理和如何處理.SAX解析器在處理XML文檔的過程并不創(chuàng)建對象,而只是將相應的事件傳遞給相應的應用程序,由應用程序決定如何處理。SAX解析器在解析開始的時候就開始發(fā)送事件。當解析器遇到文檔開始、結束,元素開始,結束和文本的等的時候,相應的應用程序代碼會收到一個事件。應用程序就可以立即開始執(zhí)行,得到相應的結果,而不需要等到整個文檔被解析完畢。 轉換XML轉換(transformation)是XML技術中一項功能強大的技術。通過轉換,應用程序設計者可以把一套規(guī)則應用在一個文檔上,將這個文檔轉換成另一種形式的文檔。在運行的時候,當決定要進行哪一種轉換時,就可以將相應的規(guī)則應用到文檔

41、上并進行轉換。對于電子商務中的B2B模式以及供應鏈管理方面的應用來說,這項功能就顯得特別重要。一種被稱作可擴展樣式語言XSL( Extensible Style Language)是用來定義XML文檔樣式的語言,它能使得客戶端的WEB瀏覽器控制文檔的表示形式,從而不需要再與服務器進行交互通信??蓴U展樣式表語言轉換 (XSLT)主要用于識別XML文檔并使用XSL樣式。其目的是將某個XML文檔的內容轉換為另一種格式或不同結構的文檔。雖然XSLT并不是一種通用的轉換語言,但它的靈活性還是相當好的,利用XSLT,你可以進行許多XML中的轉換、排序和組織操作,而不需要自己編寫程序代碼來實現(xiàn)。只需要根據(jù)元

42、素顯示的先后關系編寫XML的轉換規(guī)則就可以了。鏈接和查詢鏈接是在標記語言當中一個很受歡迎的特征。在關系型數(shù)據(jù)庫中,數(shù)據(jù)表會形成一個鏈接自身的表單,使用外鍵獲取另一個表的數(shù)據(jù)。任何一種技術要想很好地應用于穩(wěn)定的數(shù)據(jù)庫中,就必須提供某種與數(shù)據(jù)主體鏈接的能力。XML也提供了這樣的能力。XML的使用者經(jīng)常希望將一個XML文檔與另一個XML文檔鏈接起來,或者將一些非XML的內容與XML文檔鏈接起來。因此,鏈接是XML研究者們投入很大精力進行研究的重要原因。XML鏈接可分為簡單鏈接和擴展鏈接。目前,XML解析器中并沒有對鏈接提供標準的支持,但有些解析器提供了實現(xiàn)的鏈接的常見形式。XML技術的研究者們感興趣

43、的另一個領域是查詢。查詢技術是十分重要的。XML使用者經(jīng)常要通過某種途徑把一些規(guī)則傳遞給XML解析器,從而獲得符合這些規(guī)則的文檔片斷集合。具備了這種能力,一個XML文檔就可以看成某種類型的數(shù)據(jù)庫。除了有類似于數(shù)據(jù)庫查詢的特征以外,XML的查詢也是轉換操作的中心。命名空間(Namespace)和模式(Schema)XML技術的開發(fā)者在近幾年提出了解決XML文檔結構自動檢測的新技術,即XML的模式(Schema)和命名空間(Namespace)。所謂命名空間,是指一組保持唯一的名稱,是在邏輯上相關的任何一組名稱,而且每個名稱都必須唯一。命名空間是一種層次的結構。使用命名空間更容易保證產(chǎn)生唯一的名稱

44、。要保證名稱的全球唯一性,是一件很困難的事情。但如果將唯一性限制在一個比較窄的語境中,就會變得簡單得多。命名空間的層次性就提供了這樣一種環(huán)境,只需要保證在同一個命名空間里名稱唯一就可以了。在將一個新名稱添加到某個命名空間中之前,命名空間的管理機構必須確保該命名空間中沒有這個新名稱。在一般情況下,這是非常簡單的事情,因為它屬于子命名系統(tǒng),子命名系統(tǒng)中保證名稱唯一是比較容易的。然而,在某些情況下,這也可能會變得相當復雜。當今的許多 Internet 命名機構就是現(xiàn)實中一個很好的例子。如果在加入新名稱時不檢查唯一性,將會破壞命名空間,這樣一來,某些沒有多義性的名稱也無法被正確引用。如果出現(xiàn)這種情況,

45、這組名稱將不再算是正式的命名空間了。根據(jù)定義,命名空間必須確保它的成員具有唯一性。命名空間還必須具有自己的名稱,使用者需要通過命名空間的名稱引用命名空間里的成員。 傳統(tǒng)的DTD技術存在許多不足之處。因此W3C 在提出最初的 XML 規(guī)范的幾年之后開發(fā)了 XML Schema 規(guī)范。模式(Schema)技術是用來代替DTD的。模式可以定義能在DTD中使用的所有文檔結構,它還可以定義數(shù)據(jù)類型和比DTD更復雜的規(guī)則。因此,它比DTD更加強大完善。6.3.2 XML數(shù)據(jù)庫的分類 XML數(shù)據(jù)庫分為基于文本的XML數(shù)據(jù)庫和基于模型的XML數(shù)據(jù)庫兩個大類。 基于文本的XML數(shù)據(jù)庫 基于文本的XML數(shù)據(jù)庫將X

46、ML以文本的方式進行存儲。它可以是操作系統(tǒng)中文件系統(tǒng)中的文件的形式,或者是關系數(shù)據(jù)庫中的BLOB數(shù)據(jù),或者特定的文件格式。索引的方式對所有基于文本的XML數(shù)據(jù)庫來說都是基本一樣的,它可以使查詢引擎很方便地跳到XML文檔內的任何地方。這就可以大大提高數(shù)據(jù)庫存取文件或文件片斷的速度。 基于文本的XML數(shù)據(jù)庫與層次結構的數(shù)據(jù)庫非常相似,當存取預先定義好層次的數(shù)據(jù)的時候,它比關系數(shù)據(jù)庫更加方便高效。和層次結構的數(shù)據(jù)庫一樣,當以其它形式(如轉置層次)存取數(shù)據(jù)時,XML數(shù)據(jù)庫也會存在不足。它不能像很多關系數(shù)據(jù)庫那樣使用邏輯指針,使相同復雜度的查詢以相同的速度完成。基于模型的XML數(shù)據(jù)庫它根據(jù)XML文檔構造

47、一個內部的模型并根據(jù)這個模型進行存儲。至于具體的存儲實現(xiàn)方式則由數(shù)據(jù)庫的具體方式來決定。有些實現(xiàn)方法將特定的模型存儲于現(xiàn)有的DBMS,如關系型數(shù)據(jù)庫或面向對象數(shù)據(jù)庫中。例如采用DOM模型來表示XML文檔,在關系型數(shù)據(jù)庫中存儲DOM時,就會有對元素、屬性、PCDATA、實體、實體引用等進行分別存儲的表格。而其它數(shù)據(jù)庫一般使用為特定模型專門設計和優(yōu)化的專有存儲格式。使用專有存儲格式的基于模型的XML數(shù)據(jù)庫,如果以文件的存儲順序讀取文件,其性能和基于文本的XML數(shù)據(jù)庫相似。這是因為這種數(shù)據(jù)庫大多在節(jié)點間使用了物理指針,這樣其讀取性能和讀取文本差不多。和基于文本的XML數(shù)據(jù)庫一樣,如果數(shù)據(jù)的讀取順序和

48、存儲順序不同,基于模型的XML數(shù)據(jù)庫也會遇到性能上的問題。6.3.3 XML數(shù)據(jù)庫的主要特點 以文檔集合為中心的管理方式?,F(xiàn)在,大部分的XML數(shù)據(jù)庫都支持集合,其作用相當于關系數(shù)據(jù)庫中的表(記錄的集合)和文件系統(tǒng)中的文件夾(文件的集合)。在XML數(shù)據(jù)庫中,XML文檔放在集合中進行管理。一個文檔集合把一類文檔聚集在一起,方便用戶操作。集合級別上的查詢、修改操作都會反映到集合內的每個文檔。 以XPath為主的查找方式。大多數(shù)的XML數(shù)據(jù)庫都支持一種或者多種查詢語言。最常用的是XPath的查詢方式。而現(xiàn)有的XML數(shù)據(jù)庫一般都不能支持關系數(shù)據(jù)庫中的最普遍的SQL查詢語言。XPath是基于XML文檔樹形

49、模型,給出從某個結點起的查詢路徑,搜索文檔。目前,XPath作為數(shù)據(jù)庫查詢語言還有不少缺陷:不能分組、排序、連接等。 XML數(shù)據(jù)庫一般都為用戶提供操作XML的應用程序編程接口API。它提供數(shù)據(jù)庫連接、瀏覽元數(shù)據(jù)、執(zhí)行查詢和返回結果的方法。返回結果通常是XML字符串、DOM樹。如果查詢返回結果是多個文檔或文檔片斷(Fragment)的話,通常都會提供枚舉這些結果的方法。對于以Client/Server模式運行的數(shù)據(jù)庫產(chǎn)品,還可以將結果通過網(wǎng)絡協(xié)議(如HTTP)回傳給客戶端。 事務、鎖定和并發(fā)方面的支持還不足。如今,很多XML數(shù)據(jù)庫都支持事務處理,包括事務的提交以及回滾。但是,鎖的粒度通常比較大,

50、對整個文檔的而不是對文檔片斷(Fragment)的,所以多用戶并發(fā)性的支持相對較低。具體的并發(fā)程度取決于應用程序以及文檔的構成。 基于DOM的數(shù)據(jù)更新方式。對于關系數(shù)據(jù)庫,采用SQL語言進行數(shù)據(jù)更新是非常方便的。但對于XML數(shù)據(jù)庫而言,XPath, XQuery查詢語言還沒有支持數(shù)據(jù)更新的功能。現(xiàn)在常見的一種方法是先把數(shù)據(jù)轉換成DOM對象,再對DOM對象進行數(shù)據(jù)更新。這種方式的不足是占用較多內存(生成DOM對象會占用較大內存),時間效率也不好,因為要先通過解析生成DOM對象,再對DOM對象的數(shù)據(jù)進行更新,再進行轉換后保存。 保持完整的XML文檔。這是它的一個重要特性。與其他方式相比,XML數(shù)據(jù)

51、庫的一個最重要特性是它可以為XML文檔提供了保持原樣的功能。就是說可以將XML文件存放在XML數(shù)據(jù)庫中,而且再取回同樣的XML文檔。對于以文檔為中心的應用程序來說非常重要,因為實體應用、注釋和處理指令是這些文檔不可缺少的組成部分。特別是對于法律和醫(yī)學領域中格式不允許隨意竄改的數(shù)據(jù)文檔。 XML數(shù)據(jù)庫并沒有對數(shù)據(jù)的規(guī)范化作強制的要求,如果使用不當,使用XML數(shù)據(jù)庫很容易設計出一些不合理的,易于出錯的存儲結構。因此,在將文件存入XML數(shù)據(jù)庫之前,需要注意XML文檔的結構。XML數(shù)據(jù)庫的規(guī)范化和關系型數(shù)據(jù)庫的規(guī)范化一樣,其主要目標是要求文檔的設計保證數(shù)據(jù)不會重復存儲。兩者的不同在于XML支持多值屬性

52、而一般的關系型數(shù)據(jù)庫并不支持。這樣就有可能以一種在關系型數(shù)據(jù)庫中難以實現(xiàn)的方式來規(guī)范XML數(shù)據(jù)庫的數(shù)據(jù)。 與數(shù)據(jù)規(guī)范化密切相關的是引用完整性。引用完整性即相關數(shù)據(jù)的引用指針的有效性,是保持數(shù)據(jù)庫數(shù)據(jù)一致性的必要條件。如果你的銷售訂單含有一個客戶代碼,而相應的客戶信息并不存在,這對你沒什么好處。發(fā)貨部門不知道往哪里發(fā)貨,而財務部門不知道給哪里寄發(fā)票。在關系型數(shù)據(jù)庫中,引用完整性意味著確保外部鍵指向合法的主鍵,也就是說,對每個外部鍵都要檢查相應的主鍵記錄。在原生XML數(shù)據(jù)庫中,引用完整性意味著XLink或其他專有鏈接機制指向合法的文件或文件片斷。 XML的內容和應用分開,結構化,自描述性,開放性等

53、特點,使基于XML的數(shù)據(jù)庫有以下新特性: (1)可實現(xiàn)異構數(shù)據(jù)庫間數(shù)據(jù)的共享 (2)將比列可觀的處理工作從服務器端轉移到WEB客戶端,提高了系統(tǒng)運行效率 (3)實現(xiàn)了同一數(shù)據(jù)以不同的瀏覽形式展現(xiàn)給不同的用戶 XML 由于具有可擴展性、與平臺無關性等特點, 使其在Web 數(shù)據(jù)庫應用中具有以下新優(yōu)勢: (1) 實現(xiàn)異構數(shù)據(jù)源數(shù)據(jù)的集成; (2) 將大量處理任務轉移到客戶端, 減輕了服務器端的負荷, 提高了系統(tǒng)運行效率; (3) 客戶端可通過編程對數(shù)據(jù)進行二次處理, 提高了數(shù)據(jù)復用性. XML 元素比關系具有更多的固有的靈活性。一個XML 元素可以包含任意數(shù)量的特性(作為子元素或屬性) ,并且每個子

54、元素可能包含不止一個數(shù)據(jù)項。這就是XML 的分層結構。這個特性對于工藝卡片信息的描述尤其重要,如下是一個存儲工藝卡片信息的XML 文件(作了適當簡化) : 車工藝基準 三相異步電動機 1 清江機械加工工序卡片 工序卡片 工步號;工步內容;工藝裝備;主軸轉速;切削深度;進給次數(shù);手動 1 車工藝基準,保證尺寸156 及6 ,要求全批統(tǒng)一. 2 粗車軸孔29 0. 2. 游標卡尺 XML 的另一大優(yōu)勢是它存儲數(shù)據(jù)的形式是可讀的,即人可以直接閱讀和編輯XML 文檔,而數(shù)據(jù)庫中的表不通過數(shù)據(jù)庫管理系統(tǒng)是無法訪問的。另外,對于編程方面,XML 還有一些類似于面向對象編程語言中的對象的特性,如元素類型、命

55、名屬性和表示層次結構的能力,這個特性使XML 能成為數(shù)據(jù)表示的基礎。如果信息的形式比較復雜,個別字段非常大且復雜,數(shù)據(jù)庫不大但對可伸縮性要求較高,而數(shù)據(jù)類型不是十分重要,那么XML 數(shù)據(jù)庫的優(yōu)勢將十分明顯。 一般CAPP系統(tǒng)包括確定加工方法,選擇加工設備,進行工藝路線安排和工序設計等活動。的實質就是:把以特征為基礎進行描述的產(chǎn)品設計信息與以工作基元為基礎進行描述的制造資源信息進行匹配,最終生成工藝規(guī)程的過程。因此可以認為,通用化系統(tǒng),就是一個由推理機制和支撐知識庫兩部分組成的、且相互完全分離的系統(tǒng)程序。 6.3.4 XML 數(shù)據(jù)庫的模式設計 XML數(shù)據(jù)庫的模式設計分為“概念模式”的設計和“物理

56、模式”的設計。 數(shù)據(jù)庫概念模式設計 XML 數(shù)據(jù)庫是由很多XML 元素的集合組成,例如在網(wǎng)絡化CAPP 系統(tǒng)中存儲某一個零件的所有卡片信息的XML文件為: 通過如下的方法可以轉換成一個關系型的模式: 每個元素變成表(關系) ; 每個XML 屬性變成列(關系型屬性) ; 一個元素的每個子元素變換成表中的列,這個表與子元素指定的表之間具有一個外鍵約束 轉換后的關系如下: Cards( Part ID , PartName , Card) Card( ID , Name , Template , Instance) 反過來轉換是一樣的道理。從這個轉換對比可以看出,XML 中的數(shù)據(jù)(存在方式可以是內容

57、、屬性值、元素名等) 就相當于關系模式中的字段,XML 中數(shù)據(jù)的相互位置關系就相當于關系模式中元組與元組的關系及元組與字段的關系。設計好這兩個方面,就構建了一個XML 數(shù)據(jù)庫的簡單概念模型。 從圖5 還可以看到,XML 數(shù)據(jù)庫的這個模型與對象數(shù)據(jù)庫十分相象,因為它同樣也是由節(jié)點組成的,并且每個節(jié)點都可以包含異類數(shù)據(jù),而XML 數(shù)據(jù)庫節(jié)點異類的程度大部分取決于用于定義XML 文檔結構的特定DTD 或模式 物理模式設計 對幾個主要的數(shù)據(jù)模型用類封裝的形式簡單的說明實現(xiàn)的過程: 文檔 文檔必須具有一個名字和一個根元素。首先創(chuàng)建一個文檔:CreateNewDocument (name As strin

58、g) , “name”是一個唯一標識,創(chuàng)建成功則返回一個XMLDocument 對象;其次是訪問文檔, 主要包括創(chuàng)建一個根節(jié)點:CreateDocument Element ( document As XMLDocument , tag Asstring) ; 訪問根節(jié)點: GetDocument Element ( document As XMLDocument) 。 元素 元素是以某種方式標記的,計算機能識別的文檔的組成部分。是一個具有類型名、屬性集和字符數(shù)據(jù)的集合,它可以包含其他元素和屬性。它下面可以再有一個元素的集合。所以創(chuàng)建的操作就包括創(chuàng)建屬性、字符數(shù)據(jù)區(qū)和元素等,如下:CreatA

59、ttribute (element As XML Element , name As string ,value As string) ;Creat Element (element As XML Element , tag As string) ;元素的操作還包括檢索和刪除:GetAttribute (element As XML Element , name As string) ;RemoveAttribute (element As XML Element , name As string) ;GetChild(element As XML Element , index As Int

60、eger) ;RemoveChild(element As XML Element , index As Integer) ; 屬性 屬性是不能包含其他元素的命名的簡單類型定義。一個元素可以包含一個或多個屬性,屬性是一個由“=”隔開的名稱值,它的操作可以歸類為三種: GetName (attribute As XmlAttribute) ; GetValue (attribute As XmlAttribute) ; SetValue (attribute As XmlAttribute , value As string) ; 當您的信息需要簡單類型的數(shù)據(jù)并且存在以下情況時,請使用屬性: (

溫馨提示

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

評論

0/150

提交評論