李艷紅
(西安外事學(xué)院 陜西 西安 710077)
分布式數(shù)據(jù)庫(kù)系統(tǒng)[1](Distributed Database System,DDS)是數(shù)據(jù)庫(kù)技術(shù)與計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)不斷發(fā)展的產(chǎn)物。分布式數(shù)據(jù)庫(kù)系統(tǒng)是相對(duì)于集中式數(shù)據(jù)庫(kù)系統(tǒng)而言的,它將數(shù)據(jù)分布地存放在由計(jì)算機(jī)網(wǎng)絡(luò)相連的不同結(jié)點(diǎn)的計(jì)算機(jī)中,其中每一個(gè)結(jié)點(diǎn)都有自治處理(即獨(dú)立處理)能力并能完成局部應(yīng)用,而每一個(gè)結(jié)點(diǎn)并不是互不相關(guān),它們?cè)诜植际綌?shù)據(jù)庫(kù)管理系統(tǒng)作用下,也參與全局應(yīng)用程序的執(zhí)行,該全局應(yīng)用程序可通過(guò)通信網(wǎng)絡(luò)系統(tǒng)存取若干結(jié)點(diǎn)的數(shù)據(jù)。簡(jiǎn)單的說(shuō)就是數(shù)據(jù)分布、局部自治、全局參與。
早在1980年第一個(gè)數(shù)據(jù)庫(kù)系統(tǒng)出現(xiàn)時(shí),數(shù)據(jù)庫(kù)的世紀(jì)就已經(jīng)悄然開(kāi)始。那時(shí)的觀念是由應(yīng)用程序控制關(guān)系型數(shù)據(jù)庫(kù),這種數(shù)據(jù)處理的模式一般被稱(chēng)為是單層結(jié)構(gòu)(1-Tier)。由于這種結(jié)構(gòu)的數(shù)據(jù)庫(kù)占用計(jì)算機(jī)資源比較多,于是在二十世紀(jì)八十年代中期,數(shù)據(jù)庫(kù)應(yīng)用開(kāi)始轉(zhuǎn)向C/S機(jī)構(gòu),也就是客戶機(jī)/服務(wù)器兩層結(jié)構(gòu)(2-Tier)。目前,基于Internet/Intranet的三(多)層分布式計(jì)算應(yīng)用系統(tǒng)正源源不斷的出現(xiàn),其對(duì)于大型信息系統(tǒng)的開(kāi)發(fā)有很好的實(shí)際效果。
客戶機(jī)/服務(wù)器兩層結(jié)構(gòu)(2-Tier)在二十世紀(jì)九十年代不但得到了廣泛的應(yīng)用,而且還相當(dāng)?shù)某晒?。然而隨著信息系統(tǒng)結(jié)構(gòu)的復(fù)雜和規(guī)模的日益擴(kuò)大,兩層C/S結(jié)構(gòu)成功的背后卻逐漸的暴露出其構(gòu)架上的缺陷。具體表現(xiàn)在以下幾個(gè)方面:
1)由于客戶端和服務(wù)器端直接連接,服務(wù)器將消耗部分系統(tǒng)資源用于處理與客戶端的連接工作。那么每當(dāng)同時(shí)存在大量客戶端數(shù)據(jù)請(qǐng)求時(shí),服務(wù)器的有限資源將被用于頻繁應(yīng)付與客戶端之間的連接,從而就無(wú)法及時(shí)響應(yīng)數(shù)據(jù)請(qǐng)求??蛻舳藬?shù)據(jù)請(qǐng)求堆積的直接后果將導(dǎo)致系統(tǒng)整體運(yùn)行效率的大幅降低甚至全面崩潰。
2)在主從結(jié)構(gòu)中,唯一在線的數(shù)據(jù)庫(kù)服務(wù)器成為系統(tǒng)可靠性的極大隱患,如果數(shù)據(jù)庫(kù)服務(wù)器因?yàn)槟撤N原因停止工作,那么整個(gè)系統(tǒng)將會(huì)趨于癱瘓。
3)客戶端應(yīng)用程序的分發(fā)工作的煩瑣程度令人難以接受。系統(tǒng)開(kāi)發(fā)過(guò)程完成后,隨之而來(lái)的程序分發(fā)除了要求為每臺(tái)客戶機(jī)安裝客戶端程序的執(zhí)行文件以外,還要求安裝程序必需的動(dòng)態(tài)鏈接文件(*.dll)、程序初始化文件(*.ini)等許多其他文件。另外,還必須完成每臺(tái)客戶機(jī)器的ODBC或BDE的配置工作。不僅如此,每次對(duì)客戶端程序的修改和升級(jí),由意味著上述相同分發(fā)過(guò)程的又一次重復(fù)。
4)在存儲(chǔ)過(guò)程調(diào)用中,所有的處理過(guò)程都在數(shù)據(jù)庫(kù)層進(jìn)行,只將最終結(jié)果返回到客戶端。這種結(jié)構(gòu)的業(yè)務(wù)邏輯需要采用專(zhuān)用的語(yǔ)言進(jìn)行開(kāi)發(fā),很難再移植到其它的數(shù)據(jù)庫(kù)上去。
今天信息技術(shù)部門(mén)所面臨的問(wèn)題是如何能夠創(chuàng)建通向未來(lái)的沒(méi)有中斷的跨越LAN、WAN和Internet平臺(tái)的分布式可伸縮性的應(yīng)用結(jié)構(gòu),以滿足當(dāng)今復(fù)雜的、不斷發(fā)展變化的業(yè)務(wù)需求,同時(shí)又能確保企業(yè)在系統(tǒng)、應(yīng)用、信息及人員上的投資。能夠適應(yīng)這種變化的結(jié)構(gòu)是多層分布式計(jì)算機(jī)體系結(jié)構(gòu)。多層體系結(jié)構(gòu)能夠在低費(fèi)用的條件下比現(xiàn)行的PC LAN、兩層客戶機(jī)/ 服務(wù)器或主機(jī)/終端應(yīng)用結(jié)構(gòu)提供更好、更及時(shí)的信息的可能性。多層分布式計(jì)算機(jī)應(yīng)用服務(wù)技術(shù)是目前數(shù)據(jù)庫(kù)應(yīng)用發(fā)展的潮流,傳統(tǒng)的客戶機(jī)/服務(wù)器(二層)的應(yīng)用正朝著三層或者N-Tier結(jié)構(gòu)發(fā)展。
三層結(jié)構(gòu)[2]是傳統(tǒng)的客戶機(jī)/服務(wù)器(兩層)結(jié)構(gòu)的發(fā)展,代表了企業(yè)級(jí)應(yīng)用的未來(lái),典型的有Web下的應(yīng)用、多層C/S應(yīng)用等。多層結(jié)構(gòu)和三層結(jié)構(gòu)的含義是一樣的,只是細(xì)節(jié)有所不同。之所以會(huì)有雙層、三層提法,是因?yàn)閼?yīng)用程序需要解決三個(gè)層面的問(wèn)題:
1)界面層提供給用戶一個(gè)視覺(jué)上的界面,通過(guò)界面層,用戶輸入數(shù)據(jù)、獲取數(shù)據(jù)。界面層同時(shí)也提供一定的安全性,確保用戶不會(huì)看到機(jī)密的信息。
2)邏輯層(也稱(chēng)為中間層、中介代理)是界面層和數(shù)據(jù)層之間的橋梁,它響應(yīng)界面層的用戶請(qǐng)求,執(zhí)行任務(wù)并從數(shù)據(jù)層抓取數(shù)據(jù),并將必要的數(shù)據(jù)傳送給界面層。
3)數(shù)據(jù)層定義、維護(hù)數(shù)據(jù)的完整性、安全性,它響應(yīng)邏輯層的請(qǐng)求,訪問(wèn)數(shù)據(jù)。這一層通常由大型的數(shù)據(jù)庫(kù)服務(wù)器來(lái)實(shí)現(xiàn),如Oracle、Sybase、DB2、MS SQLServer等。
單層結(jié)構(gòu)將界面層、邏輯層、數(shù)據(jù)層合并在一起。雙層結(jié)構(gòu)有兩種,一種是將界面層和邏輯層合為一層,數(shù)據(jù)層是另一層,通常稱(chēng)為胖客戶機(jī)/服務(wù)器結(jié)構(gòu);另一種是將邏輯層和數(shù)據(jù)層合并為一層,界面層是另一層,通常稱(chēng)為瘦客戶機(jī)/服務(wù)器結(jié)構(gòu)。三層結(jié)構(gòu)則將這幾層分離處理。它是最簡(jiǎn)單的多層應(yīng)用,它把應(yīng)用程序分為:瘦客戶端應(yīng)用程序、應(yīng)用程序服務(wù)器和遠(yuǎn)端數(shù)據(jù)庫(kù)服務(wù)器。其中,客戶端主要負(fù)責(zé)用戶界面的處理;服務(wù)器端主要負(fù)責(zé)商業(yè)邏輯的處理,為客戶端提供公共的數(shù)據(jù)服務(wù),處理客戶端與數(shù)據(jù)庫(kù)間的數(shù)據(jù)流;遠(yuǎn)端數(shù)據(jù)庫(kù)服務(wù)器提供關(guān)系數(shù)據(jù)庫(kù)的存取與維護(hù)。其優(yōu)點(diǎn)在于:①具有靈活的硬件系統(tǒng)構(gòu)成及更好的支持分布式計(jì)算環(huán)境;②提高程序的可維護(hù)性;③瘦客戶的模式;④進(jìn)行嚴(yán)密的安全管理。此外,系統(tǒng)管理簡(jiǎn)單,可支持異種數(shù)據(jù)庫(kù),有很高的可用性。
從多層結(jié)構(gòu)[3]的技術(shù)特點(diǎn)分析,系統(tǒng)設(shè)計(jì)主要從以下這3個(gè)不同的層來(lái)考慮:
1)由于各項(xiàng)管理由不同的部門(mén)人員使用,對(duì)界面和功能的要求也不一,還有的應(yīng)用是建立在企業(yè)內(nèi)部Intranet上,因此考慮用多層C/S和Web(B/S)客戶應(yīng)用結(jié)合來(lái)構(gòu)建系統(tǒng),Web客戶應(yīng)用與企業(yè)內(nèi)部Web資源信息系統(tǒng)集成,主要提供查詢(xún)分析。C/S界面由各專(zhuān)項(xiàng)管理人員使用(數(shù)據(jù)輸入、單據(jù)及報(bào)表打印和查詢(xún)分析等),并將其劃分為若干個(gè)獨(dú)立客戶應(yīng)用程序以便于系統(tǒng)安全及伸縮性維護(hù)。
2)邏輯層(中間層、應(yīng)用服務(wù)器)是系統(tǒng)設(shè)計(jì)的關(guān)鍵和難點(diǎn),劃分好客戶界面層、中間層和數(shù)據(jù)層各自所應(yīng)完成的任務(wù),關(guān)系到系統(tǒng)的整體性能及伸縮性和維護(hù)方面??刹捎妹嫦?qū)ο蟪绦蛟O(shè)計(jì)(OOP)的思想,盡量做到層次清晰,提高軟件模塊的可重用性,減少冗余。邏輯層主要封裝各類(lèi)應(yīng)用的數(shù)據(jù)請(qǐng)求及處理SQL。
3)數(shù)據(jù)層采用大型SQL[4]數(shù)據(jù)庫(kù)系統(tǒng),在這里還必須根據(jù)業(yè)務(wù)規(guī)則編寫(xiě)觸發(fā)器、部分業(yè)務(wù)處理存儲(chǔ)過(guò)程等SQL語(yǔ)句。
支持多層應(yīng)用開(kāi)發(fā)的工具[5]很多,如VC、Delphi、VB、C++Builder及 Microsoft Transaction Server,Servlet(java)都是不錯(cuò)的選擇,MIDAS(Multi-tier Distributed Application Services Suite)是多層分布式應(yīng)用服務(wù)包,是由Inprise公司開(kāi)發(fā)的Windows平臺(tái)的中間件產(chǎn)品,它能夠有效地利用DCOM、TCP/IP、OLE和CORBA技術(shù)。MIDAS提供了一套高級(jí)組件、服務(wù)和核心技術(shù),可以簡(jiǎn)化跨平臺(tái)(Windows、UNIX、Linux)、跨產(chǎn)品(Delphi、C++Builder、VC、VB等開(kāi)發(fā)系統(tǒng)可以協(xié)調(diào)工作)的多級(jí)分布式應(yīng)用系統(tǒng)的開(kāi)發(fā)。
基于多層分布式應(yīng)用服務(wù)包技術(shù)的系統(tǒng)邏輯結(jié)構(gòu)如下圖:
圖1 多層分布式應(yīng)用服務(wù)包技術(shù)的系統(tǒng)邏輯結(jié)構(gòu)圖Fig. 1 System logic structure diagram of multi tier distributed application services package technology
數(shù)據(jù)庫(kù)服務(wù)器和應(yīng)用服務(wù)器可以在同一機(jī)器上,也可以分布在不同的機(jī)器上,根據(jù)業(yè)務(wù)量可隨時(shí)增加或減少應(yīng)用服務(wù)器的位置和數(shù)量來(lái)實(shí)現(xiàn)負(fù)載平衡、系統(tǒng)的伸縮性和維護(hù)方便。
集中式數(shù)據(jù)庫(kù)的設(shè)計(jì)師比較復(fù)雜的,而分布式數(shù)據(jù)庫(kù)[6]的設(shè)計(jì)將會(huì)更為復(fù)雜。它除了集中式數(shù)據(jù)庫(kù)設(shè)計(jì)的所有復(fù)雜性外,還有數(shù)據(jù)分布的決策、更新同步以及查詢(xún)分解等的復(fù)雜性。另外還有通信系統(tǒng)的設(shè)計(jì)問(wèn)題。
由于數(shù)據(jù)庫(kù)系統(tǒng)的應(yīng)用通常是逐步發(fā)展起來(lái)的,起先是建立各種孤立的數(shù)據(jù)庫(kù),而管理這些數(shù)據(jù)庫(kù)的計(jì)算機(jī)系統(tǒng)和DBMS包括數(shù)據(jù)模型很可能是不同的,也就是異構(gòu)的。當(dāng)應(yīng)用需要轉(zhuǎn)向分布式數(shù)據(jù)處理時(shí),拋棄原有的系統(tǒng)另起爐灶顯然是不合理的,這就需要解決異構(gòu)數(shù)據(jù)庫(kù)的集成問(wèn)題。這在技術(shù)上有一定的復(fù)雜性,而且目前還很難用一個(gè)通用的DBMS來(lái)解決這樣的問(wèn)題。此外分布式數(shù)據(jù)庫(kù)系統(tǒng)雖然有利于改善功能,但如果數(shù)據(jù)庫(kù)設(shè)計(jì)不好,數(shù)據(jù)分布不合理,遠(yuǎn)距離訪問(wèn)過(guò)多,特別是當(dāng)分布連接操作過(guò)多時(shí),都會(huì)降低系統(tǒng)的性能。
盡管在過(guò)去的時(shí)間里,分布式數(shù)據(jù)庫(kù)已經(jīng)取得了很顯著的研究成果,但是,成功地進(jìn)入商品化運(yùn)行的軟件卻為數(shù)不多。目前還有一些突出的問(wèn)題需要解決。
1)網(wǎng)絡(luò)擴(kuò)充。我們已經(jīng)知道分布式數(shù)據(jù)庫(kù)系統(tǒng)較之傳統(tǒng)數(shù)據(jù)庫(kù)有很好的可擴(kuò)充性,不過(guò)隨著系統(tǒng)的龐大,網(wǎng)絡(luò)協(xié)議和算法的適應(yīng)性問(wèn)題就越來(lái)越突出。
2)分布設(shè)計(jì)。目前對(duì)數(shù)據(jù)分布還未形成一套完整的設(shè)計(jì)方法學(xué)。
3)查詢(xún)優(yōu)化。對(duì)于分布式數(shù)據(jù)庫(kù)系統(tǒng),由于較大的通信量,再考慮到成本優(yōu)化,這中間尚有較多的問(wèn)題需要協(xié)調(diào)平衡。
4)分布式事務(wù)。對(duì)于分布式事務(wù)處理,還存在事務(wù)模型細(xì)化及定量評(píng)估任務(wù)。
5)與分布式操作系統(tǒng)的集成問(wèn)題。
6)并發(fā)的多數(shù)據(jù)庫(kù)處理問(wèn)題。
結(jié)合當(dāng)前分布式數(shù)據(jù)庫(kù)系統(tǒng)現(xiàn)狀及理論和技術(shù)上的可操作性,大多數(shù)的數(shù)據(jù)庫(kù)管理系統(tǒng)會(huì)走一條從集中到分布的道路。首先是跨越數(shù)個(gè)結(jié)點(diǎn)定義數(shù)據(jù)庫(kù),避免不同結(jié)點(diǎn)數(shù)據(jù)的更新同步問(wèn)題,允許局部和遠(yuǎn)程查詢(xún),回避復(fù)雜的查詢(xún)處理問(wèn)題;進(jìn)一步的工作是增加有限的重復(fù),這樣提高了查詢(xún)的性能;最后就是完全的分布式數(shù)據(jù)庫(kù)管理。系統(tǒng)的功能能夠處理復(fù)雜的查詢(xún),有較好的并發(fā)控制機(jī)制和保證數(shù)據(jù)的更新同步。
計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的迅速發(fā)展,已經(jīng)很大程度的影響到了數(shù)據(jù)庫(kù)和分布式數(shù)據(jù)庫(kù)的領(lǐng)域。不管是在遠(yuǎn)程網(wǎng)絡(luò)還是局域網(wǎng)領(lǐng)域,都發(fā)生了很大的變化。局域網(wǎng)和遠(yuǎn)程網(wǎng)之間的處理差別,必然會(huì)導(dǎo)致處理數(shù)據(jù)庫(kù)和分布數(shù)據(jù)庫(kù)問(wèn)題的顯然不同的一些原則和方法。進(jìn)一步,多數(shù)據(jù)庫(kù)系統(tǒng)技術(shù)、移動(dòng)數(shù)據(jù)庫(kù)技術(shù)、Web數(shù)據(jù)庫(kù)系統(tǒng)技術(shù)已經(jīng)并正在成為未來(lái)分布式數(shù)據(jù)庫(kù)的新研究領(lǐng)域。
[1] 賈焰,王志英等.分布式數(shù)據(jù)庫(kù)技術(shù)[M].北京:國(guó)防工業(yè)出版社,2000.
[2] 宋曉柒,劉東生,許滿武.中間件及其在三層客戶機(jī)/服務(wù)器模型中的應(yīng)用[J].計(jì)算機(jī)應(yīng)用,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] 張龍祥,黃正瑞,龍軍.數(shù)據(jù)庫(kù)原理與應(yīng)用[M].北京:人民郵電出版社,2002.
[4] 談亮,劉藝,蔣丹丹.全面精通SQL Server2000[M].北京:中國(guó)水利水電出版社,2001.
[5] 趙玖玲,李俊山.三大數(shù)據(jù)倉(cāng)庫(kù)產(chǎn)品的性能研究與比較[J].計(jì)算機(jī)科學(xué),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] 楊成忠,鄭懷遠(yuǎn).分布式數(shù)據(jù)庫(kù)[M].哈爾濱:黑龍江科學(xué)技術(shù)出版社,1990.