李艷紅
(西安外事學院 陜西 西安 710077)
分布式數據庫系統[1](Distributed Database System,DDS)是數據庫技術與計算機網絡技術不斷發展的產物。分布式數據庫系統是相對于集中式數據庫系統而言的,它將數據分布地存放在由計算機網絡相連的不同結點的計算機中,其中每一個結點都有自治處理(即獨立處理)能力并能完成局部應用,而每一個結點并不是互不相關,它們在分布式數據庫管理系統作用下,也參與全局應用程序的執行,該全局應用程序可通過通信網絡系統存取若干結點的數據。簡單的說就是數據分布、局部自治、全局參與。
早在1980年第一個數據庫系統出現時,數據庫的世紀就已經悄然開始。那時的觀念是由應用程序控制關系型數據庫,這種數據處理的模式一般被稱為是單層結構(1-Tier)。由于這種結構的數據庫占用計算機資源比較多,于是在二十世紀八十年代中期,數據庫應用開始轉向C/S機構,也就是客戶機/服務器兩層結構(2-Tier)。目前,基于Internet/Intranet的三(多)層分布式計算應用系統正源源不斷的出現,其對于大型信息系統的開發有很好的實際效果。
客戶機/服務器兩層結構(2-Tier)在二十世紀九十年代不但得到了廣泛的應用,而且還相當的成功。然而隨著信息系統結構的復雜和規模的日益擴大,兩層C/S結構成功的背后卻逐漸的暴露出其構架上的缺陷。具體表現在以下幾個方面:
1)由于客戶端和服務器端直接連接,服務器將消耗部分系統資源用于處理與客戶端的連接工作。那么每當同時存在大量客戶端數據請求時,服務器的有限資源將被用于頻繁應付與客戶端之間的連接,從而就無法及時響應數據請求。客戶端數據請求堆積的直接后果將導致系統整體運行效率的大幅降低甚至全面崩潰。
2)在主從結構中,唯一在線的數據庫服務器成為系統可靠性的極大隱患,如果數據庫服務器因為某種原因停止工作,那么整個系統將會趨于癱瘓。
3)客戶端應用程序的分發工作的煩瑣程度令人難以接受。系統開發過程完成后,隨之而來的程序分發除了要求為每臺客戶機安裝客戶端程序的執行文件以外,還要求安裝程序必需的動態鏈接文件(*.dll)、程序初始化文件(*.ini)等許多其他文件。另外,還必須完成每臺客戶機器的ODBC或BDE的配置工作。不僅如此,每次對客戶端程序的修改和升級,由意味著上述相同分發過程的又一次重復。
4)在存儲過程調用中,所有的處理過程都在數據庫層進行,只將最終結果返回到客戶端。這種結構的業務邏輯需要采用專用的語言進行開發,很難再移植到其它的數據庫上去。
今天信息技術部門所面臨的問題是如何能夠創建通向未來的沒有中斷的跨越LAN、WAN和Internet平臺的分布式可伸縮性的應用結構,以滿足當今復雜的、不斷發展變化的業務需求,同時又能確保企業在系統、應用、信息及人員上的投資。能夠適應這種變化的結構是多層分布式計算機體系結構。多層體系結構能夠在低費用的條件下比現行的PC LAN、兩層客戶機/ 服務器或主機/終端應用結構提供更好、更及時的信息的可能性。多層分布式計算機應用服務技術是目前數據庫應用發展的潮流,傳統的客戶機/服務器(二層)的應用正朝著三層或者N-Tier結構發展。
三層結構[2]是傳統的客戶機/服務器(兩層)結構的發展,代表了企業級應用的未來,典型的有Web下的應用、多層C/S應用等。多層結構和三層結構的含義是一樣的,只是細節有所不同。之所以會有雙層、三層提法,是因為應用程序需要解決三個層面的問題:
1)界面層提供給用戶一個視覺上的界面,通過界面層,用戶輸入數據、獲取數據。界面層同時也提供一定的安全性,確保用戶不會看到機密的信息。
2)邏輯層(也稱為中間層、中介代理)是界面層和數據層之間的橋梁,它響應界面層的用戶請求,執行任務并從數據層抓取數據,并將必要的數據傳送給界面層。
3)數據層定義、維護數據的完整性、安全性,它響應邏輯層的請求,訪問數據。這一層通常由大型的數據庫服務器來實現,如Oracle、Sybase、DB2、MS SQLServer等。
單層結構將界面層、邏輯層、數據層合并在一起。雙層結構有兩種,一種是將界面層和邏輯層合為一層,數據層是另一層,通常稱為胖客戶機/服務器結構;另一種是將邏輯層和數據層合并為一層,界面層是另一層,通常稱為瘦客戶機/服務器結構。三層結構則將這幾層分離處理。它是最簡單的多層應用,它把應用程序分為:瘦客戶端應用程序、應用程序服務器和遠端數據庫服務器。其中,客戶端主要負責用戶界面的處理;服務器端主要負責商業邏輯的處理,為客戶端提供公共的數據服務,處理客戶端與數據庫間的數據流;遠端數據庫服務器提供關系數據庫的存取與維護。其優點在于:①具有靈活的硬件系統構成及更好的支持分布式計算環境;②提高程序的可維護性;③瘦客戶的模式;④進行嚴密的安全管理。此外,系統管理簡單,可支持異種數據庫,有很高的可用性。
從多層結構[3]的技術特點分析,系統設計主要從以下這3個不同的層來考慮:
1)由于各項管理由不同的部門人員使用,對界面和功能的要求也不一,還有的應用是建立在企業內部Intranet上,因此考慮用多層C/S和Web(B/S)客戶應用結合來構建系統,Web客戶應用與企業內部Web資源信息系統集成,主要提供查詢分析。C/S界面由各專項管理人員使用(數據輸入、單據及報表打印和查詢分析等),并將其劃分為若干個獨立客戶應用程序以便于系統安全及伸縮性維護。
2)邏輯層(中間層、應用服務器)是系統設計的關鍵和難點,劃分好客戶界面層、中間層和數據層各自所應完成的任務,關系到系統的整體性能及伸縮性和維護方面。可采用面向對象程序設計(OOP)的思想,盡量做到層次清晰,提高軟件模塊的可重用性,減少冗余。邏輯層主要封裝各類應用的數據請求及處理SQL。
3)數據層采用大型SQL[4]數據庫系統,在這里還必須根據業務規則編寫觸發器、部分業務處理存儲過程等SQL語句。
支持多層應用開發的工具[5]很多,如VC、Delphi、VB、C++Builder及 Microsoft Transaction Server,Servlet(java)都是不錯的選擇,MIDAS(Multi-tier Distributed Application Services Suite)是多層分布式應用服務包,是由Inprise公司開發的Windows平臺的中間件產品,它能夠有效地利用DCOM、TCP/IP、OLE和CORBA技術。MIDAS提供了一套高級組件、服務和核心技術,可以簡化跨平臺(Windows、UNIX、Linux)、跨產品(Delphi、C++Builder、VC、VB等開發系統可以協調工作)的多級分布式應用系統的開發。
基于多層分布式應用服務包技術的系統邏輯結構如下圖:

圖1 多層分布式應用服務包技術的系統邏輯結構圖Fig. 1 System logic structure diagram of multi tier distributed application services package technology
數據庫服務器和應用服務器可以在同一機器上,也可以分布在不同的機器上,根據業務量可隨時增加或減少應用服務器的位置和數量來實現負載平衡、系統的伸縮性和維護方便。
集中式數據庫的設計師比較復雜的,而分布式數據庫[6]的設計將會更為復雜。它除了集中式數據庫設計的所有復雜性外,還有數據分布的決策、更新同步以及查詢分解等的復雜性。另外還有通信系統的設計問題。
由于數據庫系統的應用通常是逐步發展起來的,起先是建立各種孤立的數據庫,而管理這些數據庫的計算機系統和DBMS包括數據模型很可能是不同的,也就是異構的。當應用需要轉向分布式數據處理時,拋棄原有的系統另起爐灶顯然是不合理的,這就需要解決異構數據庫的集成問題。這在技術上有一定的復雜性,而且目前還很難用一個通用的DBMS來解決這樣的問題。此外分布式數據庫系統雖然有利于改善功能,但如果數據庫設計不好,數據分布不合理,遠距離訪問過多,特別是當分布連接操作過多時,都會降低系統的性能。
盡管在過去的時間里,分布式數據庫已經取得了很顯著的研究成果,但是,成功地進入商品化運行的軟件卻為數不多。目前還有一些突出的問題需要解決。
1)網絡擴充。我們已經知道分布式數據庫系統較之傳統數據庫有很好的可擴充性,不過隨著系統的龐大,網絡協議和算法的適應性問題就越來越突出。
2)分布設計。目前對數據分布還未形成一套完整的設計方法學。
3)查詢優化。對于分布式數據庫系統,由于較大的通信量,再考慮到成本優化,這中間尚有較多的問題需要協調平衡。
4)分布式事務。對于分布式事務處理,還存在事務模型細化及定量評估任務。
5)與分布式操作系統的集成問題。
6)并發的多數據庫處理問題。
結合當前分布式數據庫系統現狀及理論和技術上的可操作性,大多數的數據庫管理系統會走一條從集中到分布的道路。首先是跨越數個結點定義數據庫,避免不同結點數據的更新同步問題,允許局部和遠程查詢,回避復雜的查詢處理問題;進一步的工作是增加有限的重復,這樣提高了查詢的性能;最后就是完全的分布式數據庫管理。系統的功能能夠處理復雜的查詢,有較好的并發控制機制和保證數據的更新同步。
計算機網絡技術的迅速發展,已經很大程度的影響到了數據庫和分布式數據庫的領域。不管是在遠程網絡還是局域網領域,都發生了很大的變化。局域網和遠程網之間的處理差別,必然會導致處理數據庫和分布數據庫問題的顯然不同的一些原則和方法。進一步,多數據庫系統技術、移動數據庫技術、Web數據庫系統技術已經并正在成為未來分布式數據庫的新研究領域。
[1] 賈焰,王志英等.分布式數據庫技術[M].北京:國防工業出版社,2000.
[2] 宋曉柒,劉東生,許滿武.中間件及其在三層客戶機/服務器模型中的應用[J].計算機應用,1999,19(7):7-9.SONG Xiao-qi,LIU Dong-sheng,XU Man-wu.Middleware and its application in the three tier client / server model[J].Computer Application,1999,19(7):7-9.
[3] 張龍祥,黃正瑞,龍軍.數據庫原理與應用[M].北京:人民郵電出版社,2002.
[4] 談亮,劉藝,蔣丹丹.全面精通SQL Server2000[M].北京:中國水利水電出版社,2001.
[5] 趙玖玲,李俊山.三大數據倉庫產品的性能研究與比較[J].計算機科學,2002,29(6):259-261.ZHAO Jiu-ling,LI Jun-shan. Study and comparison of performance of three large data warehouse products[J].Computer Science,2002,29(6):259-261.
[6] 楊成忠,鄭懷遠.分布式數據庫[M].哈爾濱:黑龍江科學技術出版社,1990.