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