戴貴龍 譚新華 龍明雄 孫昌枝
(1三明職業(yè)技術(shù)學(xué)院;2福建三鋼閩光股份有限公司 福建三明 365000)
20世紀(jì)末,Web的創(chuàng)建改善了Internet數(shù)據(jù)的訪問方式,而Web和數(shù)據(jù)庫系統(tǒng)的完美結(jié)合,使用戶能夠通過Web瀏覽器方便地檢索數(shù)據(jù)庫中的信息。數(shù)據(jù)庫是一個非常有用的現(xiàn)代工具,它儲存了許多有用的資料與數(shù)據(jù),為人們的學(xué)習(xí)、工作與生活,提供了很大方便。隨著互聯(lián)網(wǎng)的出現(xiàn),讓原來的數(shù)據(jù)庫系統(tǒng)的形式與存在發(fā)生了巨大的改變。數(shù)據(jù)庫,開始朝著網(wǎng)絡(luò)化、即時化和移動化的方向發(fā)展,特別是智能手機(jī)和移動平板電腦、Wifi的出現(xiàn),讓隨時隨地的存儲信息成為可能,因此就讓基于Web技術(shù)的網(wǎng)絡(luò)數(shù)據(jù)庫的出現(xiàn)成為可能。如今網(wǎng)絡(luò)上已經(jīng)出現(xiàn)了許多數(shù)據(jù)庫系統(tǒng),例如百度云、網(wǎng)盤等。因此,對于一個計算機(jī)專業(yè)的學(xué)生來說,研究基于Web技術(shù)的網(wǎng)絡(luò)數(shù)據(jù)庫這些網(wǎng)絡(luò)數(shù)據(jù)庫系統(tǒng)設(shè)計就是非常有意義和價值的。本文探討和研究基于Web技術(shù)的網(wǎng)絡(luò)數(shù)據(jù)庫系統(tǒng)的設(shè)計與應(yīng)用,為我國學(xué)術(shù)界增加一些這方面的資料。
現(xiàn)在的大多數(shù)網(wǎng)絡(luò)數(shù)據(jù)庫的結(jié)構(gòu)都是三層結(jié)構(gòu),雖然這種三層結(jié)構(gòu)相比原來的客戶/服務(wù)器的結(jié)構(gòu)來說具有許多優(yōu)點(diǎn)和進(jìn)步,但是也存在著很大不足之處。例如數(shù)據(jù)庫、Web層負(fù)擔(dān)過重,開發(fā)人員和維護(hù)人員負(fù)擔(dān)過重,Internet上的資源無法得到合理的分配等等。這些缺點(diǎn)與不足都嚴(yán)重的阻礙了網(wǎng)絡(luò)數(shù)據(jù)庫的存在與發(fā)展。為了改變這一現(xiàn)狀,筆者在網(wǎng)絡(luò)數(shù)據(jù)庫結(jié)構(gòu)的三層結(jié)構(gòu)基礎(chǔ)上設(shè)計了一種新的網(wǎng)絡(luò)數(shù)據(jù)庫,這種這模型的特色和不同之處在于把數(shù)據(jù)庫管理系統(tǒng)中的索引、搜索等功能以對象的形式從數(shù)據(jù)庫系統(tǒng)中獨(dú)立出來。進(jìn)行動態(tài)分配和層次式的管理,當(dāng)然這必須通過Internet才能夠得以進(jìn)行。這樣一來,Internet中的各個服務(wù)器與主要就分管了原來屬于數(shù)據(jù)庫服務(wù)器的許多管理功能,讓原有數(shù)據(jù)庫的負(fù)擔(dān)得以減輕,效率得以大幅上升。我設(shè)計的這個模型是以網(wǎng)絡(luò)節(jié)點(diǎn)為基本單元的,每個節(jié)點(diǎn)都包含著多個功能代理,而這樣的節(jié)點(diǎn)可以有許多個,如圖1所示。
圖1 基于Web的網(wǎng)絡(luò)節(jié)點(diǎn)
通過這種基于web的網(wǎng)絡(luò)節(jié)點(diǎn)的網(wǎng)絡(luò)數(shù)據(jù)庫,就讓傳統(tǒng)由一個服務(wù)器完成的管理功能交由網(wǎng)絡(luò)上的代理服務(wù)器等來完成,因為這些功能以對象的形式被網(wǎng)絡(luò)上的代理聯(lián)系起來,并從空間和時間上進(jìn)行了分布,在分布的同時網(wǎng)絡(luò)上的代理服務(wù)器又完成了傳統(tǒng)的服務(wù)器的功能,從而解放了傳統(tǒng)數(shù)據(jù)庫服務(wù)器,并讓資源得到了合理而又有效的分配。這一設(shè)計的優(yōu)點(diǎn)還在于這些數(shù)據(jù)庫對象都是獨(dú)立的,一個數(shù)據(jù)庫對象的產(chǎn)生和消亡,不會影響到別的數(shù)據(jù)庫對象,使用者還可以根據(jù)需要派生出具備父對象屬性和功能的子對象來。各個對象間通過Java程序來實現(xiàn),對象之間還可以進(jìn)行互動,合作,因此能讓整個數(shù)據(jù)庫的效率得到大大的提高。
這個系統(tǒng)同樣擁有Web瀏覽器、Web服務(wù)器和數(shù)據(jù)庫服務(wù)器這三層分布式結(jié)構(gòu)。除了上文所說的與傳統(tǒng)網(wǎng)絡(luò)數(shù)據(jù)庫不同的特色以外,其它的方面,基于Web的網(wǎng)絡(luò)節(jié)點(diǎn)都與傳統(tǒng)網(wǎng)絡(luò)數(shù)據(jù)庫相似。
第一,實現(xiàn)這一網(wǎng)絡(luò)數(shù)據(jù)庫系統(tǒng)需要的是通用網(wǎng)關(guān)接口 (CGI),它是最早實現(xiàn)Web應(yīng)用程序與數(shù)據(jù)庫接口的技術(shù)之一。也是網(wǎng)絡(luò)技術(shù)中最重要的技術(shù)之一。CGI是數(shù)據(jù)庫外部應(yīng)用程序與Web服務(wù)器之間的接口標(biāo)準(zhǔn),是在程序和Web服務(wù)器之間傳遞信息的規(guī)程。CGI規(guī)范的作用是讓W(xué)eb服務(wù)器與外部程序聯(lián)系起來,并可讓網(wǎng)絡(luò)上的Web服務(wù)器執(zhí)行外部程序。并在網(wǎng)絡(luò)上的Web服務(wù)器執(zhí)行完外部程序后將結(jié)果輸出發(fā)給web瀏覽器。通過CGI可以將原來簡單靜態(tài)的超媒體文檔變成一個系統(tǒng)的、互動式的媒體,雖然它無法實現(xiàn)真正的動態(tài)Web頁面。但它具有占有資源少,效率高等優(yōu)點(diǎn)。
第二,數(shù)據(jù)庫連接 (JDBC),它的功能是用來為多種關(guān)系數(shù)據(jù)庫提供聯(lián)系,幫助它們進(jìn)行統(tǒng)一訪問。JDBC還能夠幫助廣大數(shù)據(jù)庫開發(fā)人員構(gòu)建高級工具和接口,并幫助數(shù)據(jù)庫開發(fā)人員編寫應(yīng)用程序??偠灾?,它的主要功能就是讓網(wǎng)絡(luò)數(shù)據(jù)庫應(yīng)用程序?qū)崿F(xiàn)跨平臺服務(wù),同時,通過它,開發(fā)人員編寫的數(shù)據(jù)庫應(yīng)用程序具有跨平臺特性。
第三,超文本預(yù)處理器 (PHP),它是一種通用開源腳本語言,與C語言、Java語言類似的語言。其特點(diǎn)是用途非常廣泛,適用于Web開發(fā)領(lǐng)域。它在網(wǎng)絡(luò)數(shù)據(jù)庫系統(tǒng)中的功能是用來實現(xiàn)真正跨平臺服務(wù),讓網(wǎng)絡(luò)數(shù)據(jù)庫可以在Windows、Linux這些不同的操作系統(tǒng)的Web服務(wù)器上運(yùn)行。另外,它還幫助我實現(xiàn)與MySQL、Access等多種數(shù)據(jù)庫的內(nèi)置連接,能有效提高數(shù)據(jù)庫的訪問速度。
第四,動態(tài)服務(wù)器頁面 (ASP),它的功能與CGI腳本程序非常相像,能夠?qū)崿F(xiàn)與與數(shù)據(jù)庫和其它程序進(jìn)行交互。它是一種新的腳本程序,是簡單又方便實用的工具。由微軟公司開發(fā)的專門用于編程用的。它可以創(chuàng)造出一種動態(tài)互動的用途廣泛的用于服務(wù)器的應(yīng)用程序。憑借著強(qiáng)大編譯能力,創(chuàng)造出擴(kuò)展名為。Asp的網(wǎng)頁文件,能夠讓W(xué)eb瀏覽器調(diào)用,讓W(xué)eb服務(wù)器啟動,在將相關(guān)的。Asp文件的內(nèi)容讀完之后執(zhí)行相關(guān)的腳本命令,并在產(chǎn)生相關(guān)的動態(tài)頁面,處理完命令之后返回瀏覽器。它的特點(diǎn)有:首先是高效,憑借它能夠在網(wǎng)頁上編程和執(zhí)行的功能,它能夠創(chuàng)造出動態(tài),而又內(nèi)容豐富的網(wǎng)頁,高效,方便,實用。其次是編程簡單,Script語言的特點(diǎn)是可以直接嵌入Html文本中,并與Html文本中一起同時運(yùn)行。就如同一個整體一般,可在原有的Html文本基礎(chǔ)上,設(shè)計出一個網(wǎng)頁程序,然后再將它加入Html文本中。第三是用途廣泛。它除了動態(tài)網(wǎng)頁功能之外,還可以通過其它技術(shù)實現(xiàn)數(shù)據(jù)庫的存取功能,并與其它特殊的數(shù)據(jù)庫存程序進(jìn)行連接,實現(xiàn)數(shù)據(jù)共享。例如FoxPro等等。第四是它還進(jìn)行擴(kuò)充,它不但支持Script語言,還可以通過特定的插件程序支持PERL、TCL等第三方語言,因此可以運(yùn)行用PERL、TCL等第三方語言編寫的網(wǎng)頁程序。
第五,支持多種瀏覽器和程序運(yùn)行環(huán)境。眾所周知,Asp文件不但能在多種瀏覽器和環(huán)境下被網(wǎng)絡(luò)服務(wù)器解釋執(zhí)行,因此程序設(shè)計人員在在開發(fā)程序時不必?fù)?dān)心它的應(yīng)用問題,也不必?fù)?dān)心網(wǎng)絡(luò)黑客方面的問題。它是一種非常實用,方便的技術(shù),完全符合本文設(shè)計的需要。
在軟件平臺方面,本文選擇了現(xiàn)在被廣泛使用的微軟公司的視窗系統(tǒng)WindowsNTServer系列軟件、微軟公司IIS服務(wù)器、和微軟公司的SQLServer系列服務(wù)器作為數(shù)據(jù)庫服務(wù)器的軟件平臺。該平臺的瀏覽器我選擇了微軟公司的IE系列。另外在客戶端軟件平臺方面,筆者選擇了Windows98、Windows7等常用的操作系統(tǒng),以及IE9和IE10等等。
筆者采用 C++、Dreamweaver、JavaScript、VisualJ++等開發(fā)工具,硬件開發(fā)平臺為一臺配置為CPU i3 4150,主板采用華碩z85-A,內(nèi)存4G×2,硬盤1T×2,電源400W,機(jī)箱2u的服務(wù)器,通過路由器用LAN專線接入。另配B-Link BLHB24集線器1臺,外部設(shè)備圖2所示。
圖2 數(shù)據(jù)庫外部設(shè)備
過去,設(shè)計人員往往會用手工試湊法來設(shè)計相關(guān)系統(tǒng),但這種方法的缺點(diǎn)是缺乏科學(xué)理論和方法的支持,對設(shè)計人員的經(jīng)驗和水平要求很高,還有在設(shè)計完成后經(jīng)常會不斷的被發(fā)現(xiàn)問題和錯誤,需要不斷地修正與維護(hù)。本文舍棄了傳統(tǒng)的手工試湊法,而采用了現(xiàn)在的新方法,如奧爾良法,它將數(shù)據(jù)庫設(shè)計分為四個階段,SBYao方法、IRPalmer方法等等。并利用了許多的計算機(jī)輔助方法如 OracleDesigner 2000、SybasePowerDesigner等來輔助設(shè)計。
在完成框架和數(shù)據(jù)庫結(jié)構(gòu),建立網(wǎng)絡(luò)數(shù)據(jù)庫所需要的技術(shù)后,就是網(wǎng)絡(luò)數(shù)據(jù)庫設(shè)計。在設(shè)計網(wǎng)絡(luò)數(shù)據(jù)庫系統(tǒng)的時候,筆者經(jīng)研究借鑒,采取以下幾個步驟:
第一,是分析存在著的網(wǎng)絡(luò)數(shù)據(jù)庫軟件的不足和缺點(diǎn),分析它們存在著的問題。對自己想要設(shè)計的數(shù)據(jù)庫系統(tǒng)進(jìn)行構(gòu)思,借鑒前人的經(jīng)驗,揚(yáng)長避短,分析問題所在的問題域,確認(rèn)需要解決的問題。
第二,是設(shè)計出數(shù)據(jù)庫的架構(gòu)、模型。將設(shè)計理念和設(shè)計目的,設(shè)計內(nèi)容具體化,轉(zhuǎn)化為現(xiàn)實。文章主要強(qiáng)調(diào)的是原數(shù)據(jù)庫功能的對象化、網(wǎng)絡(luò)化,分擔(dān)原服務(wù)器的負(fù)擔(dān),因此,需要使用面向?qū)ο蠓椒ㄩ_發(fā)軟件,需建立動態(tài)模型、對象模型與功能模型。
第三,設(shè)計一個由HTML文本構(gòu)成的Web頁面,而基于Web技術(shù)的數(shù)據(jù)庫系統(tǒng)的功能就在頁面上得以實現(xiàn)。這一頁面上嵌入了由Script等言語所編好的網(wǎng)頁程序,能夠讓W(xué)eb瀏覽器調(diào)用,讓W(xué)eb服務(wù)器啟動,在將相關(guān)的。Asp文件的內(nèi)容讀完之后執(zhí)行相關(guān)的腳本命令,并在產(chǎn)生相關(guān)的動態(tài)頁面,處理完命令之后返回瀏覽器。另外,這一頁面的設(shè)計必須能夠讓所有功能對象能夠被其它網(wǎng)絡(luò)服務(wù)器所調(diào)用執(zhí)行,從而讓其它機(jī)器能夠幫助完成整個系統(tǒng)的功能。還必須能夠建立好頁面與頁面,系統(tǒng)與系統(tǒng)之間的關(guān)系,利用頁面鏈接這一形式來實現(xiàn)頁面與頁面之間的調(diào)用關(guān)系。更好的協(xié)調(diào)頁面的整體內(nèi)容與布局,讓資源得到最充分的優(yōu)化和配置。頁面之間的功能鏈接可以用各種形式來表現(xiàn),如頁面框圖、字符等等,其中頁面框圖可以以表格形式來體現(xiàn),包含著名稱、功能、接口、狀態(tài)、動作、關(guān)聯(lián)頁面集等內(nèi)容。各個部分對應(yīng)著不同的功能對象,如名稱對應(yīng)著實現(xiàn)時的Html文件名;狀態(tài)對應(yīng)著頁面內(nèi)部的控制數(shù)據(jù);動作則對應(yīng)著構(gòu)成用戶界面的按鈕、列表、鏈接等重要元素。關(guān)聯(lián)頁面集對應(yīng)著頁面與其它頁面的鏈接。通常,簡單的頁面框圖不用分層,但是如果頁面框圖內(nèi)容太多,而且關(guān)聯(lián)復(fù)雜,那么就得把頁面流程圖分層,這樣才能理清各種關(guān)系。
另外,還得先編寫好Asp應(yīng)用程序腳本,通過微軟公司的視窗系統(tǒng)提供的ODBC數(shù)據(jù)源管理器來建立數(shù)據(jù)源、服務(wù)器、登錄標(biāo)識號、密碼等用戶DNS數(shù)據(jù)。創(chuàng)建方法很簡單,例如通常你只需打開 Html文件,插入定界符 “<%”和“%>”之類的腳本命令,然后將擴(kuò)展名為。Html的文件另存為。asp即可。
第四,邏輯設(shè)計。這主要是根據(jù)現(xiàn)在網(wǎng)絡(luò)上的網(wǎng)絡(luò)數(shù)據(jù)庫的現(xiàn)實情況,而將現(xiàn)實世界的數(shù)據(jù)模型和相關(guān)概念、范疇設(shè)計成為數(shù)據(jù)庫邏輯模式的一步工作。設(shè)計出來的邏輯模型還須網(wǎng)絡(luò)數(shù)據(jù)庫管理系統(tǒng)所支持的邏輯數(shù)據(jù)模式。在設(shè)計完父邏輯模式之后,還必須為與之相聯(lián)的各種數(shù)據(jù)處理應(yīng)用領(lǐng)域設(shè)計相應(yīng)的邏輯子模式。
第五,物理設(shè)計。這一步很重要,它的作用是根據(jù)網(wǎng)絡(luò)數(shù)據(jù)庫管理系統(tǒng)的功能、結(jié)構(gòu)和特點(diǎn)等設(shè)計現(xiàn)實世界的具體的各項物理設(shè)計措施,如服務(wù)器、網(wǎng)關(guān)、存儲裝置、文件類型、索引結(jié)構(gòu)和數(shù)據(jù)的存放次序與位邏輯、存取方法和存取路徑等。這一步設(shè)計產(chǎn)生的就是所謂“網(wǎng)絡(luò)數(shù)據(jù)庫的物理裝置”。
第六,編制程序。這一步是網(wǎng)絡(luò)數(shù)據(jù)庫系統(tǒng)設(shè)計的核心步驟,首先需要選擇正確的程序。在選擇編程語言時需要考慮語言的完整性、能否準(zhǔn)確地表達(dá)問題域語義,能不能滿足編制基于Web技術(shù)的網(wǎng)絡(luò)數(shù)據(jù)庫系統(tǒng)的需要等問題。
第七,測試系統(tǒng)。在程序編制完成后,下一步的步驟是測試整個系統(tǒng),這一步驟往往需要很長的時間,因為許多的系統(tǒng)問題和程序BUG等,必須在多次測試和使用之后,才能夠被發(fā)現(xiàn),因此系統(tǒng)設(shè)計完成之后必須經(jīng)過多次測試,反復(fù)檢驗才行。在檢測出錯誤和問題,BUG之后,對這些錯誤和問題進(jìn)行修正,然后再次測試,反復(fù)測試,直到發(fā)現(xiàn)不了錯誤和問題為止。
第八,維護(hù)系統(tǒng)。開發(fā)一個新的系統(tǒng)非常不容易,但是系統(tǒng)的維護(hù)也是非常不易,看看微軟公司的視窗系統(tǒng)就知道了,每過一段時間就會給系統(tǒng)打幾個補(bǔ)丁以防止黑客的其它病毒的攻擊。網(wǎng)絡(luò)數(shù)據(jù)庫系統(tǒng)作為網(wǎng)絡(luò)上的數(shù)據(jù)庫,面臨的危險和威脅更大,因此在系統(tǒng)完成后,在具體的運(yùn)營過程中還需要對這一系統(tǒng)進(jìn)行維護(hù),具有自己預(yù)先的維護(hù)計劃才行。