楊 帆,沈來(lái)信,2
(1.黃山學(xué)院 信息工程學(xué)院,安徽 黃山 245041;2.同濟(jì)大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)系 上海 201804)
數(shù)據(jù)庫(kù)管理系統(tǒng) (Database Management System,DBMS)是一種操縱和管理數(shù)據(jù)庫(kù)的大型軟件[1],用于建立、使用和維護(hù)數(shù)據(jù)庫(kù)。DBMS對(duì)數(shù)據(jù)庫(kù)進(jìn)行統(tǒng)一的管理和控制,保證數(shù)據(jù)庫(kù)的安全性和完整性。用戶通過(guò)DBMS訪問(wèn)數(shù)據(jù)庫(kù)中的數(shù)據(jù),數(shù)據(jù)庫(kù)管理員DBA也通過(guò)DBMS進(jìn)行數(shù)據(jù)庫(kù)的維護(hù)工作。它可使多個(gè)應(yīng)用程序和用戶用不同的方法在同時(shí)或不同時(shí)刻建立、更新和查詢數(shù)據(jù)庫(kù)。DBMS提供數(shù)據(jù)定義語(yǔ)言(Data Definition Language,DDL)與數(shù)據(jù)操作語(yǔ)言(Data Manipulation Language,DML),供用戶定義數(shù)據(jù)庫(kù)的模式結(jié)構(gòu)與權(quán)限約束,實(shí)現(xiàn)對(duì)數(shù)據(jù)的追加、刪除等操作。
本文旨在開(kāi)發(fā)一個(gè)基于樹(shù)型結(jié)構(gòu)的具有可視化界面的友好數(shù)據(jù)庫(kù)管理軟件,讓數(shù)據(jù)庫(kù)初學(xué)者也能很好的操作MySQL數(shù)據(jù)庫(kù),完成數(shù)據(jù)庫(kù)的建設(shè),同時(shí)具備對(duì)數(shù)據(jù)庫(kù)中表、視圖、事件、觸發(fā)器與存儲(chǔ)過(guò)程等的增加、刪除、查詢、修改,以及數(shù)據(jù)庫(kù)用戶的新建、刪除、密碼修改等功能,同時(shí)也能對(duì)數(shù)據(jù)庫(kù)的使用情況和狀態(tài)信息進(jìn)行實(shí)時(shí)監(jiān)控。
目前很多主流的沒(méi)有操作界面的數(shù)據(jù)庫(kù)使用起來(lái)比較麻煩,很多數(shù)據(jù)庫(kù)都是需要通過(guò)命令的形式進(jìn)行操作的,如MySQL數(shù)據(jù)庫(kù)等。這樣的使用方式對(duì)于一個(gè)對(duì)操作命令熟練的人來(lái)說(shuō)可以接受,但是對(duì)于一個(gè)剛接觸數(shù)據(jù)庫(kù)或者對(duì)命令不熟悉的人來(lái)說(shuō)就比較困難,這讓很多人對(duì)數(shù)據(jù)庫(kù)使用產(chǎn)生了恐懼感。雖然有很多針對(duì)MySQL數(shù)據(jù)庫(kù)的第三方軟件被開(kāi)發(fā),最常用的如Navicate等軟件[2],但是這些軟件的功能卻不是很完善,比如Navicate更注重于對(duì)MySQL數(shù)據(jù)庫(kù)的操作和應(yīng)用,比如建立數(shù)據(jù)庫(kù),備份數(shù)據(jù)庫(kù)等操作,而對(duì)于數(shù)據(jù)庫(kù)的監(jiān)控方面做得不是很好,要想實(shí)時(shí)地了解當(dāng)前數(shù)據(jù)庫(kù)的運(yùn)行情況以及其他狀態(tài)信息還需要借助于其他軟件,有的功能還需要付費(fèi)使用,有時(shí)需要運(yùn)行多個(gè)軟件才能達(dá)到目的,在使用上造成一定的麻煩。
李國(guó)徽等利用B+樹(shù)實(shí)現(xiàn)閃存系統(tǒng)上的DBMS索引結(jié)構(gòu)設(shè)計(jì)[3],李天立等使用樹(shù)型結(jié)構(gòu)構(gòu)造了關(guān)系型數(shù)據(jù)庫(kù)用來(lái)存儲(chǔ)網(wǎng)頁(yè)的顯示[4],陳永輝等使用產(chǎn)品結(jié)構(gòu)樹(shù)構(gòu)造了圖文檔管理系統(tǒng)[5],還有多篇利用B+樹(shù)構(gòu)造索引字段加密、時(shí)態(tài)索引等[6-8],林鵬等在關(guān)鍵業(yè)務(wù)中的閃存數(shù)據(jù)庫(kù)中用T樹(shù)做索引優(yōu)化等。
數(shù)據(jù)庫(kù)管理系統(tǒng)應(yīng)該具有以下功能。
1.數(shù)據(jù)庫(kù)方面:完成對(duì)數(shù)據(jù)庫(kù)的建立以查看、刪除、備份等功能;
2.數(shù)據(jù)庫(kù)表方面:完成對(duì)表的建立、刪除、查看等功能;
3.數(shù)據(jù)庫(kù)視圖方面:完成對(duì)視圖的建立、查看、刪除等功能;
4.數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程方面:完成對(duì)存儲(chǔ)過(guò)程的建立、查看、刪除等功能;
5.數(shù)據(jù)庫(kù)事件方面:完成對(duì)事件的建立、查看、刪除等功能;
6.用戶管理方面:完成對(duì)用戶的刪除、增加以及用戶密碼的修改;
7.數(shù)據(jù)庫(kù)監(jiān)控方面:完成對(duì)數(shù)據(jù)庫(kù)版本的查看、連接數(shù)的查看以及數(shù)據(jù)庫(kù)一些參數(shù)的查看。
數(shù)據(jù)庫(kù)管理軟件總體功能圖如圖1所示。
圖1 數(shù)據(jù)庫(kù)管理軟件功能圖
根據(jù)總體功能圖,把功能模塊劃分如下:
1.主界面:用于顯示所有信息的界面;
2.配置連接數(shù)據(jù)庫(kù):用于用戶輸入所要管理的數(shù)據(jù)庫(kù)的IP地址、用戶名、密碼等信息,從而連接數(shù)據(jù)庫(kù);
3.用戶管理:用于對(duì)所連接的數(shù)據(jù)庫(kù)的用戶進(jìn)行管理,包括對(duì)用戶密碼的更改、增加用戶以及刪除用戶等;
4.命令窗口:通過(guò)調(diào)用系統(tǒng)CMD命令提示符,完成對(duì)數(shù)據(jù)庫(kù)的操作,使習(xí)慣命令操作數(shù)據(jù)庫(kù)的用戶也能方便使用;
5.表管理:用于顯示所選擇數(shù)據(jù)庫(kù)中所有表的信息,以及對(duì)表的增加、刪除,顯示表中數(shù)據(jù)等;
6.視圖管理:用于顯示所選擇數(shù)據(jù)庫(kù)中視圖的信息,以及對(duì)視圖的增加、刪除,顯示視圖中數(shù)據(jù)等;
7.存儲(chǔ)過(guò)程管理:用于管理存儲(chǔ)過(guò)程,顯示存儲(chǔ)過(guò)程的信息、增加存儲(chǔ)過(guò)程、刪除存儲(chǔ)過(guò)程等等;
8.事件管理:用于對(duì)數(shù)據(jù)庫(kù)事件的管理,顯示事件的信息、增加事件、刪除事件等等;
9.數(shù)據(jù)庫(kù)監(jiān)控:用于對(duì)數(shù)據(jù)庫(kù)連接數(shù)等一系列運(yùn)行參數(shù)進(jìn)行顯示,以及數(shù)據(jù)庫(kù)的版本進(jìn)行顯示等等。
數(shù)據(jù)庫(kù)管理系統(tǒng)的分層數(shù)據(jù)流圖如圖2所示。
圖2 分層數(shù)據(jù)流圖
數(shù)據(jù)庫(kù)管理系統(tǒng)的主要功能介紹如下:
1.主界面包括菜單欄、所連接的數(shù)據(jù)庫(kù)顯示、主要信息顯示,如圖3所示。
圖3 軟件主界面
關(guān)鍵代碼如下:
2.配置連接數(shù)據(jù)庫(kù)模塊
用于填寫(xiě)所要連接數(shù)據(jù)庫(kù)的相關(guān)信息,包括IP地址、端口號(hào)、連接用戶名、連接密碼以及連接名,如果連接名未填寫(xiě),則默認(rèn)用IP地址作為連接名顯示。
圖4 連接數(shù)據(jù)庫(kù)配置界面
3.用戶管理模塊
此模塊用于對(duì)數(shù)據(jù)庫(kù)的用戶進(jìn)行管理,主要功能包括:數(shù)據(jù)庫(kù)用戶的密碼修改、數(shù)據(jù)庫(kù)用戶的刪除、數(shù)據(jù)庫(kù)用戶的創(chuàng)建,界面如圖5所示。
圖5 用戶管理界面
4.命令窗口模塊
此模塊實(shí)現(xiàn)是基于Windows操作系統(tǒng)的CMD命令提示符,通過(guò)JAVA程序的調(diào)用實(shí)現(xiàn),相當(dāng)于MySQL數(shù)據(jù)庫(kù)的命令形式操作,適用于習(xí)慣通過(guò)命令操作數(shù)據(jù)庫(kù)的用戶進(jìn)行使用,以及一些比較深層次的對(duì)數(shù)據(jù)庫(kù)的使用,主要代碼如下:
5.存儲(chǔ)過(guò)程模塊
在大型數(shù)據(jù)庫(kù)系統(tǒng)中,存儲(chǔ)過(guò)程和觸發(fā)器具有很重要的作用。無(wú)論是存儲(chǔ)過(guò)程還是觸發(fā)器,都是SQL語(yǔ)句和流程控制語(yǔ)句的集合。就本質(zhì)而言,觸發(fā)器也是一種存儲(chǔ)過(guò)程。存儲(chǔ)過(guò)程在運(yùn)算時(shí)生成執(zhí)行方式,所以,以后對(duì)其再運(yùn)行時(shí)其執(zhí)行速度很快。
此模塊用于對(duì)數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程的管理,包括查看存儲(chǔ)過(guò)程信息、創(chuàng)建存儲(chǔ)過(guò)程、刪除存儲(chǔ)過(guò)程等功能。實(shí)現(xiàn)是通過(guò)數(shù)據(jù)庫(kù)操作語(yǔ)句,查詢數(shù)據(jù)庫(kù)得到存儲(chǔ)過(guò)程信息,再通過(guò)JAVA的JTextArea控件的append方法從而把查詢信息顯示到JTextArea中,主要代碼如下:
6.數(shù)據(jù)庫(kù)監(jiān)控模塊
此模塊用于對(duì)數(shù)據(jù)庫(kù)運(yùn)行狀態(tài)實(shí)時(shí)的進(jìn)行了解,如數(shù)據(jù)庫(kù)的版本號(hào)、數(shù)據(jù)庫(kù)的連接數(shù)、數(shù)據(jù)庫(kù)的查詢數(shù)量、運(yùn)行時(shí)間等一系列參數(shù)進(jìn)行實(shí)時(shí)顯示,供有關(guān)用戶及時(shí)的了解數(shù)據(jù)庫(kù)的運(yùn)行狀況。其中幾個(gè)主要參數(shù)簡(jiǎn)介如下:
①連接數(shù)(Connections)
數(shù)據(jù)庫(kù)的連接數(shù)是數(shù)據(jù)庫(kù)性能一個(gè)很好的標(biāo)志,如果一個(gè)數(shù)據(jù)庫(kù)連接數(shù)過(guò)大,而此時(shí)次數(shù)據(jù)庫(kù)又是建立在Windows操作系統(tǒng)上的情況下,很有可能極大的影響到數(shù)據(jù)庫(kù)的使用情況,造成有些數(shù)據(jù)庫(kù)的連接請(qǐng)求被拒絕,給用戶帶來(lái)很大的影響。
②每秒處理事務(wù)數(shù)TPS(Transactions Per Second)
此參數(shù)的大小可以很好的反映出當(dāng)前數(shù)據(jù)庫(kù)的繁忙狀態(tài),計(jì)算方式為:
③每秒查詢處理量QPS(Queries Per Second)
QPS即服務(wù)器每秒查詢處理量,此參數(shù)的大小可以很好的反映出當(dāng)前數(shù)據(jù)庫(kù)的繁忙狀態(tài),計(jì)算方式為:QPS=QUESTIONS/UPTIME
數(shù)據(jù)庫(kù)監(jiān)控界面如圖6所示。
圖6 數(shù)據(jù)庫(kù)監(jiān)控界面
數(shù)據(jù)庫(kù)管理系統(tǒng)的操作可視化和數(shù)據(jù)庫(kù)的實(shí)時(shí)監(jiān)控對(duì)數(shù)據(jù)庫(kù)使用者來(lái)說(shuō)非常重要,可以使用樹(shù)型結(jié)構(gòu)構(gòu)造一般數(shù)據(jù)庫(kù)的管理系統(tǒng),完成數(shù)據(jù)庫(kù)中表、視圖、事件、存儲(chǔ)過(guò)程、觸發(fā)器等操作的添加、刪除、查詢、修改等,同時(shí)對(duì)數(shù)據(jù)庫(kù)的狀態(tài)進(jìn)行實(shí)時(shí)監(jiān)控,包括數(shù)據(jù)庫(kù)的最大連接數(shù)、總連接數(shù)、TPS、QPS、查詢數(shù)量、發(fā)出字節(jié)數(shù)、收到字節(jié)數(shù)等,提高用戶使用數(shù)據(jù)庫(kù)的體驗(yàn),有利于數(shù)據(jù)庫(kù)管理系統(tǒng)的普及。
[1]李書(shū)振.MySQL數(shù)據(jù)庫(kù)的安全機(jī)制[J].計(jì)算機(jī)應(yīng)用,2002,22(6):51-53.
[2]蘭旭輝,熊家軍,鄧剛.基于MySQL的應(yīng)用程序設(shè)計(jì)[J].計(jì)算機(jī)工程與設(shè)計(jì),2004,25(3):442-444.
[3]李國(guó)徽,等.LD B+樹(shù):閃存系統(tǒng)上一種DBMS索引結(jié)構(gòu)[J].小型微型計(jì)算機(jī)系統(tǒng),2012,33(2):193-198.
[4]李天立,李也白,張永峰.基于樹(shù)型結(jié)構(gòu)數(shù)據(jù)的關(guān)系數(shù)據(jù)庫(kù)存儲(chǔ)于網(wǎng)頁(yè)顯示的研究[C].2006年北京地區(qū)高校研究生學(xué)會(huì)交流會(huì),2006:1347-1351.
[5]陳永輝,王振.基于產(chǎn)品結(jié)構(gòu)樹(shù)的圖文檔管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J],計(jì)算機(jī)時(shí)代,2006,(1):20-22.
[6]王正飛,汪衛(wèi),施伯樂(lè).基于B+樹(shù)的索引字段加密[J].中南大學(xué)學(xué)報(bào),2009,40(6):1660-1665.
[7]郭歡,湯庸,等.FQM-tree:基于 B+樹(shù)的時(shí)態(tài)索引[J].計(jì)算機(jī)研究與發(fā)展,2009,46(2):185-190.
[8]周大,梁智超,孟小峰.HF-Tree:一種閃存數(shù)據(jù)庫(kù)的高更新性能索引結(jié)構(gòu)[J].計(jì)算機(jī)研究與發(fā)展,2010,47(5):68-74.