姚文斌,盧 亮
(1.北京郵電大學(xué) 智能通信軟件與多媒體北京市重點(diǎn)實(shí)驗(yàn)室,北京 100876;2.北京郵電大學(xué) 計(jì)算機(jī)學(xué)院,北京 100876)
在線數(shù)據(jù)庫系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
姚文斌1,2,盧 亮1,2
(1.北京郵電大學(xué) 智能通信軟件與多媒體北京市重點(diǎn)實(shí)驗(yàn)室,北京 100876;2.北京郵電大學(xué) 計(jì)算機(jī)學(xué)院,北京 100876)
為了提高數(shù)據(jù)庫基礎(chǔ)知識(shí)教學(xué)的質(zhì)量,教師常常在課堂教學(xué)中演示數(shù)據(jù)庫操作,但是數(shù)據(jù)庫環(huán)境的部署往往費(fèi)時(shí)費(fèi)力。在線數(shù)據(jù)庫系統(tǒng)基于B/S模式,可集成多種數(shù)據(jù)庫環(huán)境,僅用瀏覽器即可完成基本數(shù)據(jù)庫操作,為初學(xué)者提供了方便,提高了數(shù)據(jù)庫教學(xué)的效率。
數(shù)據(jù)庫;在線數(shù)據(jù)庫系統(tǒng);B/S模式
在高校計(jì)算機(jī)相關(guān)專業(yè)的數(shù)據(jù)庫基礎(chǔ)知識(shí)的教學(xué)過程中(如《大學(xué)計(jì)算機(jī)基礎(chǔ)》、《數(shù)據(jù)庫系統(tǒng)》等課程),教師通常需要部署數(shù)據(jù)庫環(huán)境完成數(shù)據(jù)庫的演示和講解,傳統(tǒng)的數(shù)據(jù)庫軟件大都基于C/S架構(gòu),版本眾多、安裝步驟各異,而且不同的軟件對(duì)多用戶、遠(yuǎn)程連接等功能的支持程度也各不相同,教師面臨著耗費(fèi)精力進(jìn)行數(shù)據(jù)庫部署的問題。同時(shí)由于課堂演示計(jì)算機(jī)的性能和系統(tǒng)環(huán)境往往不確定,教師甚至每節(jié)課前都需要完成數(shù)據(jù)庫環(huán)境的部署,這使課堂教學(xué)質(zhì)量受到了制約。而學(xué)生在課下練習(xí)時(shí),同樣需要安裝部署數(shù)據(jù)庫環(huán)境,復(fù)雜煩瑣的步驟(例如SqlServer)在一定程度影響了其學(xué)習(xí)積極性。面對(duì)數(shù)據(jù)庫教學(xué)中的這些問題,我們?cè)O(shè)計(jì)實(shí)現(xiàn)了在線數(shù)據(jù)庫系統(tǒng),該系統(tǒng)采用B/S模式,服務(wù)器端可以部署集成多種傳統(tǒng)的關(guān)系數(shù)據(jù)庫軟件,使用戶可以在瀏覽器端完成對(duì)多種關(guān)系數(shù)據(jù)庫的基本操作,完全擺脫了復(fù)雜的客戶端。本文所提出的在線數(shù)據(jù)庫系統(tǒng),可以減輕教師的負(fù)擔(dān),為數(shù)據(jù)庫初學(xué)者提供方便,從而提高數(shù)據(jù)庫教學(xué)的效率。
在線數(shù)據(jù)庫系統(tǒng)設(shè)計(jì)的關(guān)鍵在于支持大部分常用的關(guān)系數(shù)據(jù)庫軟件,對(duì)用戶輸入的數(shù)據(jù)庫操作信息進(jìn)行檢查和過濾,然后把服務(wù)端數(shù)據(jù)庫操作結(jié)果用友好的界面展示給用戶。
圖1 系統(tǒng)架構(gòu)圖
系統(tǒng)的整體架構(gòu)如圖1所示,其中最上層為Web接口,提供用戶訪問的Web接口和友好的界面。中間層中的數(shù)據(jù)安全、權(quán)限驗(yàn)證這些基本模塊驗(yàn)證用戶請(qǐng)求的權(quán)限,并完成數(shù)據(jù)操作安全的處理,然后調(diào)用下一層的相關(guān)功能響應(yīng)用戶請(qǐng)求;用戶管理是對(duì)用戶基本信息的增刪改查,數(shù)據(jù)庫管理完成對(duì)系統(tǒng)中數(shù)據(jù)庫信息的管理,該層通過調(diào)用數(shù)據(jù)庫訪問層完成數(shù)據(jù)庫的基本操作,然后將其結(jié)果返回給上層。系統(tǒng)中可同時(shí)部署多種不同的數(shù)據(jù)庫軟件,數(shù)據(jù)庫訪問層提供了對(duì)不同數(shù)據(jù)庫的統(tǒng)一訪問接口。
系統(tǒng)用戶分為普通用戶和管理員兩類,系統(tǒng)為用戶提供的主要功能如圖2所示。
1.用戶功能:普通用戶注冊(cè)、登錄、注銷,查看個(gè)人的權(quán)限、操作歷史等信息,并可以修改密碼和個(gè)人資料。
2.數(shù)據(jù)庫功能:普通用戶從系統(tǒng)提供的多種數(shù)據(jù)庫軟件中進(jìn)行選擇,提交自己需要完成的數(shù)據(jù)庫操作命令并查看運(yùn)行結(jié)果。
圖2 系統(tǒng)功能模塊圖
3.管理員功能:管理員對(duì)普通用戶的信息進(jìn)行增刪改查,并管理數(shù)據(jù)庫軟件的加入和退出,配置數(shù)據(jù)庫軟件的基本信息,管理數(shù)據(jù)庫軟件的加入和退出。
整個(gè)系統(tǒng)以Web服務(wù)的形式在服務(wù)器中進(jìn)行部署,然后由系統(tǒng)維護(hù)人員在服務(wù)器上安裝數(shù)據(jù)庫軟件以提供服務(wù)端的數(shù)據(jù)庫服務(wù)。系統(tǒng)管理員登錄系統(tǒng)進(jìn)行數(shù)據(jù)庫的基本配置,最后用戶使用瀏覽器訪問系統(tǒng),即可完成對(duì)數(shù)據(jù)庫表、視圖、存儲(chǔ)過程等內(nèi)容的操作。
系統(tǒng)基于B/S架構(gòu),以跨平臺(tái)性強(qiáng)的Java語言作為開發(fā)語言,充分利用了Java技術(shù)在Web開發(fā)中的優(yōu)點(diǎn),采用了流行的Spring3和Struts2作為Web框架,可迅速完成其開發(fā)、部署和測(cè)試。系統(tǒng)分為前端和后端兩部分,按照MVC設(shè)計(jì)思想,系統(tǒng)的整體架構(gòu)可更詳細(xì)地劃分為頁面顯示層、應(yīng)用層、服務(wù)層、模型層、數(shù)據(jù)持久化層、數(shù)據(jù)庫連接層這六層。下面結(jié)合圖3對(duì)各個(gè)層的設(shè)計(jì)進(jìn)行詳細(xì)介紹。
圖3 系統(tǒng)類圖
頁面顯示層:基于JSP,采用包括CSS層疊樣式表和JavaScript在內(nèi)的多種動(dòng)態(tài)網(wǎng)頁制作技術(shù)實(shí)現(xiàn)的Web頁面。頁面顯示層將用戶請(qǐng)求通過HTTP協(xié)議傳遞給服務(wù)器端的應(yīng)用層,并將服務(wù)端返回的結(jié)果在瀏覽器中顯示出來,頁面顯示層完成與用戶的全部交互。
應(yīng)用層:對(duì)應(yīng)于圖3中的Action包(“包”是Java中功能相似或相關(guān)的類和接口的集合),其中基類BaseAction類封裝了獲取web頁面請(qǐng)求參數(shù)、過濾非法數(shù)據(jù)以及驗(yàn)證用戶權(quán)限的基本方法,對(duì)于來自Web頁面的HTTP請(qǐng)求,首先獲取其中的請(qǐng)求參數(shù)中所包含的用戶信息及數(shù)據(jù)庫操作信息,然后對(duì)用戶權(quán)限進(jìn)行校驗(yàn),對(duì)數(shù)據(jù)庫操作信息進(jìn)行檢查,防止SQL注入攻擊。AuthenticationAction類提供用戶注冊(cè)、登錄、退出等功能方法,UserAction類提供用戶增刪改查管理的功能方法,DataBaseAction類提供數(shù)據(jù)庫信息管理的功能方法。應(yīng)用層的類調(diào)用服務(wù)層的類實(shí)現(xiàn)系統(tǒng)功能,為頁面顯示層服務(wù),是整個(gè)系統(tǒng)服務(wù)端的應(yīng)用功能的總接口。
服務(wù)層:對(duì)應(yīng)于與圖3中的Service包,其中包含數(shù)據(jù)庫服務(wù)和用戶服務(wù)兩部分,應(yīng)用層通過接口IDatabaseService和IUserService來調(diào)用服務(wù)。接口類的加入,使上層調(diào)用服務(wù)層功能方法的類與服務(wù)層具體的實(shí)現(xiàn)類隔離開來。Userservice類通過調(diào)用下層的IUserDao接口完成用戶信息管理,DatabaseService類通過調(diào)用下層的IDatabaseDao和IDbConnect實(shí)現(xiàn)數(shù)據(jù)庫信息的管理,以及數(shù)據(jù)庫的訪問操作。
數(shù)據(jù)持久化層:對(duì)應(yīng)于圖3的DAO包,包含DatabaseDao和UserDao兩部分,將系統(tǒng)中的用戶信息以及數(shù)據(jù)庫信息持久化到系統(tǒng)數(shù)據(jù)庫中,在訪問數(shù)據(jù)庫時(shí)需要調(diào)用DbOperation包中的接口。
數(shù)據(jù)庫連接層:對(duì)應(yīng)于圖3的DbOperation包,由于系統(tǒng)中可以部署多種不同的數(shù)據(jù)庫軟件,需要有相應(yīng)的類完成與其的連接,這些類均繼承IDbConnect接口以保持一致。數(shù)據(jù)庫連接類基于JDBC技術(shù),實(shí)現(xiàn)了與多種關(guān)系數(shù)據(jù)庫的連接、驗(yàn)證和SQL服務(wù)調(diào)用,并將其中的基本方法進(jìn)行了封裝和擴(kuò)展,使其更加靈活易用。
模型層:對(duì)應(yīng)于圖3的Model包,其中的類均是對(duì)一些基本屬性的封裝,Database類封裝數(shù)據(jù)庫軟件名稱、數(shù)據(jù)庫名稱、SQL語句等信息,User類封裝普通用戶的用戶名、密碼、權(quán)限等信息,Admin封裝了管理員的用戶名、密碼等信息。應(yīng)用層、服務(wù)層和數(shù)據(jù)持久層都對(duì)模型層有依賴關(guān)系。
此外,系統(tǒng)對(duì)于在應(yīng)用層和服務(wù)層中出現(xiàn)的異常也進(jìn)行了封裝,對(duì)所有的異常進(jìn)行統(tǒng)一管理(見圖3的Exception包)。系統(tǒng)的分層設(shè)計(jì),使程序的各模塊之間高內(nèi)聚、低耦合的特性增強(qiáng),符合軟件工程的基本思想,使系統(tǒng)的架構(gòu)趨于穩(wěn)定,更能適應(yīng)需求的變化。
1.運(yùn)行環(huán)境。系統(tǒng)的運(yùn)行環(huán)境如表1所示,其中服務(wù)器端的配置為系統(tǒng)目前部署測(cè)試時(shí)所采用的配置。
表1 系統(tǒng)運(yùn)行環(huán)境
2.功能測(cè)試。按照軟件測(cè)試的基本步驟,采用黑盒測(cè)試的錯(cuò)誤推測(cè)法和錯(cuò)誤推測(cè)法對(duì)系統(tǒng)的各個(gè)功能模塊進(jìn)行測(cè)試,以測(cè)試用戶登錄模塊為例,預(yù)期當(dāng)在界面中輸入用戶名或密碼錯(cuò)誤時(shí),頁面提示“用戶名或密碼錯(cuò)誤,請(qǐng)重新輸入”,并不進(jìn)行頁面跳轉(zhuǎn),正確時(shí)跳轉(zhuǎn)到系統(tǒng)主頁面,經(jīng)測(cè)試實(shí)際輸出結(jié)果與預(yù)期一致。
3.性能測(cè)試。對(duì)系統(tǒng)的性能測(cè)試采用負(fù)載測(cè)試和壓力測(cè)試相結(jié)合的方法展開,選取每分鐘增加若干用戶請(qǐng)求和混合加壓作為測(cè)試數(shù)據(jù)。測(cè)試的結(jié)果表明系統(tǒng)可支持2500用戶并且響應(yīng)時(shí)間小于3秒,壓力測(cè)試結(jié)果顯示CPU和內(nèi)存占用率在86%和88%以內(nèi)。
本文所設(shè)計(jì)和實(shí)現(xiàn)的在線數(shù)據(jù)庫系統(tǒng),立足于簡(jiǎn)化在數(shù)據(jù)庫基礎(chǔ)知識(shí)教學(xué)過程中數(shù)據(jù)庫環(huán)境搭建的煩瑣步驟,為教師和初學(xué)者提供簡(jiǎn)單方便在線的關(guān)系數(shù)據(jù)庫服務(wù)。系統(tǒng)架構(gòu)合理,運(yùn)行狀況穩(wěn)定,簡(jiǎn)單易操作,從目前的反饋結(jié)果來看,系統(tǒng)在一定程度上提高了課堂教學(xué)質(zhì)量,可以推廣使用。但是,系統(tǒng)在用戶數(shù)據(jù)庫操作結(jié)果的頁面顯示效果還需要優(yōu)化,用戶權(quán)限控制等方面仍存在不足,同時(shí)教師在實(shí)踐過程中發(fā)現(xiàn)了數(shù)據(jù)庫在線測(cè)試試題、學(xué)生與教師互動(dòng)等新的需求,這將是系統(tǒng)下一步改進(jìn)與完善的方向。
G642.0
A
1674-9324(2014)43-0064-03
北京郵電大學(xué)教學(xué)改革項(xiàng)目