姚文斌,盧 亮
(1.北京郵電大學 智能通信軟件與多媒體北京市重點實驗室,北京 100876;2.北京郵電大學 計算機學院,北京 100876)
在線數據庫系統的設計與實現
姚文斌1,2,盧 亮1,2
(1.北京郵電大學 智能通信軟件與多媒體北京市重點實驗室,北京 100876;2.北京郵電大學 計算機學院,北京 100876)
為了提高數據庫基礎知識教學的質量,教師常常在課堂教學中演示數據庫操作,但是數據庫環境的部署往往費時費力。在線數據庫系統基于B/S模式,可集成多種數據庫環境,僅用瀏覽器即可完成基本數據庫操作,為初學者提供了方便,提高了數據庫教學的效率。
數據庫;在線數據庫系統;B/S模式
在高校計算機相關專業的數據庫基礎知識的教學過程中(如《大學計算機基礎》、《數據庫系統》等課程),教師通常需要部署數據庫環境完成數據庫的演示和講解,傳統的數據庫軟件大都基于C/S架構,版本眾多、安裝步驟各異,而且不同的軟件對多用戶、遠程連接等功能的支持程度也各不相同,教師面臨著耗費精力進行數據庫部署的問題。同時由于課堂演示計算機的性能和系統環境往往不確定,教師甚至每節課前都需要完成數據庫環境的部署,這使課堂教學質量受到了制約。而學生在課下練習時,同樣需要安裝部署數據庫環境,復雜煩瑣的步驟(例如SqlServer)在一定程度影響了其學習積極性。面對數據庫教學中的這些問題,我們設計實現了在線數據庫系統,該系統采用B/S模式,服務器端可以部署集成多種傳統的關系數據庫軟件,使用戶可以在瀏覽器端完成對多種關系數據庫的基本操作,完全擺脫了復雜的客戶端。本文所提出的在線數據庫系統,可以減輕教師的負擔,為數據庫初學者提供方便,從而提高數據庫教學的效率。
在線數據庫系統設計的關鍵在于支持大部分常用的關系數據庫軟件,對用戶輸入的數據庫操作信息進行檢查和過濾,然后把服務端數據庫操作結果用友好的界面展示給用戶。

圖1 系統架構圖
系統的整體架構如圖1所示,其中最上層為Web接口,提供用戶訪問的Web接口和友好的界面。中間層中的數據安全、權限驗證這些基本模塊驗證用戶請求的權限,并完成數據操作安全的處理,然后調用下一層的相關功能響應用戶請求;用戶管理是對用戶基本信息的增刪改查,數據庫管理完成對系統中數據庫信息的管理,該層通過調用數據庫訪問層完成數據庫的基本操作,然后將其結果返回給上層。系統中可同時部署多種不同的數據庫軟件,數據庫訪問層提供了對不同數據庫的統一訪問接口。
系統用戶分為普通用戶和管理員兩類,系統為用戶提供的主要功能如圖2所示。
1.用戶功能:普通用戶注冊、登錄、注銷,查看個人的權限、操作歷史等信息,并可以修改密碼和個人資料。
2.數據庫功能:普通用戶從系統提供的多種數據庫軟件中進行選擇,提交自己需要完成的數據庫操作命令并查看運行結果。

圖2 系統功能模塊圖
3.管理員功能:管理員對普通用戶的信息進行增刪改查,并管理數據庫軟件的加入和退出,配置數據庫軟件的基本信息,管理數據庫軟件的加入和退出。
整個系統以Web服務的形式在服務器中進行部署,然后由系統維護人員在服務器上安裝數據庫軟件以提供服務端的數據庫服務。系統管理員登錄系統進行數據庫的基本配置,最后用戶使用瀏覽器訪問系統,即可完成對數據庫表、視圖、存儲過程等內容的操作。
系統基于B/S架構,以跨平臺性強的Java語言作為開發語言,充分利用了Java技術在Web開發中的優點,采用了流行的Spring3和Struts2作為Web框架,可迅速完成其開發、部署和測試。系統分為前端和后端兩部分,按照MVC設計思想,系統的整體架構可更詳細地劃分為頁面顯示層、應用層、服務層、模型層、數據持久化層、數據庫連接層這六層。下面結合圖3對各個層的設計進行詳細介紹。

圖3 系統類圖
頁面顯示層:基于JSP,采用包括CSS層疊樣式表和JavaScript在內的多種動態網頁制作技術實現的Web頁面。頁面顯示層將用戶請求通過HTTP協議傳遞給服務器端的應用層,并將服務端返回的結果在瀏覽器中顯示出來,頁面顯示層完成與用戶的全部交互。
應用層:對應于圖3中的Action包(“包”是Java中功能相似或相關的類和接口的集合),其中基類BaseAction類封裝了獲取web頁面請求參數、過濾非法數據以及驗證用戶權限的基本方法,對于來自Web頁面的HTTP請求,首先獲取其中的請求參數中所包含的用戶信息及數據庫操作信息,然后對用戶權限進行校驗,對數據庫操作信息進行檢查,防止SQL注入攻擊。AuthenticationAction類提供用戶注冊、登錄、退出等功能方法,UserAction類提供用戶增刪改查管理的功能方法,DataBaseAction類提供數據庫信息管理的功能方法。應用層的類調用服務層的類實現系統功能,為頁面顯示層服務,是整個系統服務端的應用功能的總接口。
服務層:對應于與圖3中的Service包,其中包含數據庫服務和用戶服務兩部分,應用層通過接口IDatabaseService和IUserService來調用服務。接口類的加入,使上層調用服務層功能方法的類與服務層具體的實現類隔離開來。Userservice類通過調用下層的IUserDao接口完成用戶信息管理,DatabaseService類通過調用下層的IDatabaseDao和IDbConnect實現數據庫信息的管理,以及數據庫的訪問操作。
數據持久化層:對應于圖3的DAO包,包含DatabaseDao和UserDao兩部分,將系統中的用戶信息以及數據庫信息持久化到系統數據庫中,在訪問數據庫時需要調用DbOperation包中的接口。
數據庫連接層:對應于圖3的DbOperation包,由于系統中可以部署多種不同的數據庫軟件,需要有相應的類完成與其的連接,這些類均繼承IDbConnect接口以保持一致。數據庫連接類基于JDBC技術,實現了與多種關系數據庫的連接、驗證和SQL服務調用,并將其中的基本方法進行了封裝和擴展,使其更加靈活易用。
模型層:對應于圖3的Model包,其中的類均是對一些基本屬性的封裝,Database類封裝數據庫軟件名稱、數據庫名稱、SQL語句等信息,User類封裝普通用戶的用戶名、密碼、權限等信息,Admin封裝了管理員的用戶名、密碼等信息。應用層、服務層和數據持久層都對模型層有依賴關系。
此外,系統對于在應用層和服務層中出現的異常也進行了封裝,對所有的異常進行統一管理(見圖3的Exception包)。系統的分層設計,使程序的各模塊之間高內聚、低耦合的特性增強,符合軟件工程的基本思想,使系統的架構趨于穩定,更能適應需求的變化。
1.運行環境。系統的運行環境如表1所示,其中服務器端的配置為系統目前部署測試時所采用的配置。

表1 系統運行環境
2.功能測試。按照軟件測試的基本步驟,采用黑盒測試的錯誤推測法和錯誤推測法對系統的各個功能模塊進行測試,以測試用戶登錄模塊為例,預期當在界面中輸入用戶名或密碼錯誤時,頁面提示“用戶名或密碼錯誤,請重新輸入”,并不進行頁面跳轉,正確時跳轉到系統主頁面,經測試實際輸出結果與預期一致。
3.性能測試。對系統的性能測試采用負載測試和壓力測試相結合的方法展開,選取每分鐘增加若干用戶請求和混合加壓作為測試數據。測試的結果表明系統可支持2500用戶并且響應時間小于3秒,壓力測試結果顯示CPU和內存占用率在86%和88%以內。
本文所設計和實現的在線數據庫系統,立足于簡化在數據庫基礎知識教學過程中數據庫環境搭建的煩瑣步驟,為教師和初學者提供簡單方便在線的關系數據庫服務。系統架構合理,運行狀況穩定,簡單易操作,從目前的反饋結果來看,系統在一定程度上提高了課堂教學質量,可以推廣使用。但是,系統在用戶數據庫操作結果的頁面顯示效果還需要優化,用戶權限控制等方面仍存在不足,同時教師在實踐過程中發現了數據庫在線測試試題、學生與教師互動等新的需求,這將是系統下一步改進與完善的方向。
G642.0
A
1674-9324(2014)43-0064-03
北京郵電大學教學改革項目