国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于NoSQL和MySQL的科研信息管理系統(tǒng)開發(fā)

2019-04-25 00:25潘益婷潘修強肖鵬飛
中國教育信息化·高教職教 2019年3期

潘益婷 潘修強 肖鵬飛

摘? ?要:本系統(tǒng)采用了MVC設(shè)計模式,提高了系統(tǒng)的可擴展性和可維護性,同時利用Struts2、Spring、Hibernate框架,使用NoSQL數(shù)據(jù)庫和MySQL數(shù)據(jù)庫來實現(xiàn)對科研信息數(shù)據(jù)的存儲和管理。本系統(tǒng)對科研信息進行網(wǎng)絡(luò)化、信息化管理,實現(xiàn)了用戶管理、科研項目管理、科研成果管理、消息管理四大功能。通過測試比較非關(guān)系型數(shù)據(jù)庫和關(guān)系型數(shù)據(jù)庫處理大量文檔型數(shù)據(jù)的不同性能,解決了科研信息管理系統(tǒng)的查詢性能以及數(shù)據(jù)擴展問題。

關(guān)鍵詞:NoSQL數(shù)據(jù)庫;MySQL數(shù)據(jù)庫;科研信息管理系統(tǒng);SSH框架

中圖分類號:TP311.52 文獻標志碼:A 文章編號:1673-8454(2019)05-0077-04

NoSQL數(shù)據(jù)庫的產(chǎn)生就是為了解決大數(shù)據(jù)應用難題,對于如何充分利用其無模式、支持內(nèi)嵌文檔、全類型索引、簡單易用等特點應用于包括科研信息管理系統(tǒng)等各領(lǐng)域,提高系統(tǒng)運行效率,國內(nèi)近幾年也有一些相關(guān)研究工作。張煜[1]等人提出NoSQL數(shù)據(jù)庫是另一種存儲解決方案,探討了其在監(jiān)測系統(tǒng)中的應用。周躍[2]等人提出兩個優(yōu)化批處理算法解決服務端批量處理的低效問題,原型系統(tǒng)基于典型的分布式NoSQL系統(tǒng)HBase實現(xiàn)。鄂世嘉[3]等人提出自動通過圖數(shù)據(jù)庫Cayley以及MongoDB數(shù)據(jù)庫系統(tǒng),對三元組文件數(shù)據(jù)進行導入轉(zhuǎn)換為龐大的知識圖譜系統(tǒng)。王凱[4]等基于文檔型、非關(guān)系型數(shù)據(jù)庫MongoDB提出了一套基于四叉樹的道路網(wǎng)時空索引,實現(xiàn)海量軌跡數(shù)據(jù)的高效查詢。肖子達[5]等人以MongoDB數(shù)據(jù)庫為研究實例,提出了一種基于片鍵和索引的數(shù)據(jù)庫性能提升方法。但是以上研究關(guān)于NoSQL應用于科研信息管理系統(tǒng)方面的闡述較少,缺乏有實際應用、針對性強的NoSQL解決方案。因此,為方便對科研項目、論文、學生等管理,建立一個基于NoSQL的、高效的科研信息管理系統(tǒng)是必要的。

一、系統(tǒng)概述

當前高校在校學生人數(shù)不斷增多,科研信息數(shù)據(jù)也隨之不斷擴增,本系統(tǒng)針對科研信息進行網(wǎng)絡(luò)化、信息化管理,方便導師、本科生、研究生、博士生進行數(shù)據(jù)信息的共享,方便管理員對整個科研信息進行管理,提高實驗室科研管理水平。本系統(tǒng)分別使用MongoDB數(shù)據(jù)庫和MySQL數(shù)據(jù)庫來存儲數(shù)據(jù),探究NoSQL技術(shù)在實際中的應用方案,比較非關(guān)系型數(shù)據(jù)庫和關(guān)系型數(shù)據(jù)庫處理大量文檔型數(shù)據(jù)的不同性能。本系統(tǒng)分為用戶管理、科研項目管理、科研成果管理、消息管理四個功能模塊。系統(tǒng)功能結(jié)構(gòu)圖如圖1所示。①用戶管理??梢愿鶕?jù)不同的權(quán)限增加、刪除人員,查詢相關(guān)人員信息,修改人員信息,用戶分不同的角色,有管理員角色、教師角色、學生角色,不同角色登錄系統(tǒng)擁有不同的功能。②科研項目管理。項目分為立項項目、開題項目、在研項目、結(jié)題項目四種類別,項目狀態(tài)的改變只能依次遞增,每個項目的負責人只有一位,可以有多位參與者,不論教師還是學生,項目不同的階段還應該有相應的文檔說明。③科研成果管理。包括專利管理、獲獎管理和軟件著作權(quán)管理,添加與項目匹配的科技成果,也可刪除相關(guān)成果和查詢科研成果。論文分為中文論文和英文論文兩種,每篇論文有一名第一作者,每篇論文可以有多名參與編寫的教師或?qū)W生,論文需要有相應的證明文檔,可上傳或下載。④消息管理。管理員和教師發(fā)布最新通知,也可查看實驗室最新的在研項目。

二、系統(tǒng)設(shè)計

1.系統(tǒng)總體架構(gòu)設(shè)計

系統(tǒng)總體架構(gòu)如圖2所示。本系統(tǒng)采用MVC[6]設(shè)計模式,把系統(tǒng)拆分成Model(模型)、View(視圖)、Control(控制器)三部分,這三部分各司其職又相互協(xié)調(diào)配合完成系統(tǒng)功能,提高系統(tǒng)的可擴展性和可維護性,最大化地實現(xiàn)低耦合、高復用。系統(tǒng)利用SSH框架[7]:Struts2、Spring、Hibernate,以及使用MongoDB數(shù)據(jù)庫[8] 和MySQL數(shù)據(jù)庫[9]來實現(xiàn)對科研信息數(shù)據(jù)的存儲和管理。

總體架構(gòu)設(shè)計分3部分:①表示層。利用Struts2框架實現(xiàn),Struts2應用程序是基于HTTP協(xié)議和MVC設(shè)計模式,通過JSP頁面進行交互,根據(jù)Struts中的配置文件將請求委派給相應的Action處理,并將結(jié)果返回。②業(yè)務邏輯層。由Spring框架實現(xiàn)具體業(yè)務邏輯處理,Spring是一個輕量級的IOC和AOP容器框架,讓對象與對象之間、模塊與模塊之間的關(guān)系通過配置說明來管理,而不用通過代碼來關(guān)聯(lián),并且Spring框架能很好地與其他框架集成,使Struts與Hibernate更好地工作。③數(shù)據(jù)訪問層。由Hibernate框架實現(xiàn),處理與數(shù)據(jù)庫的交互操作,將關(guān)系數(shù)據(jù)庫中的表映射成為對象,把對數(shù)據(jù)庫的操作轉(zhuǎn)化為對象的操作,不用寫SQL語句操作數(shù)據(jù)表,而是用面向?qū)ο笏季S,用HQL直接從數(shù)據(jù)庫獲得Java對象。

2.數(shù)據(jù)庫設(shè)計

本系統(tǒng)分別使用MySQL數(shù)據(jù)庫和MongoDB數(shù)據(jù)庫來存儲數(shù)據(jù),探究NoSQL技術(shù)在實際中的應用方案,比較關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫處理大量文檔型數(shù)據(jù)的不同性能。

數(shù)據(jù)庫設(shè)計主要包括需求分析、概念設(shè)計、邏輯設(shè)計和物理設(shè)計幾個方面,它是根據(jù)系統(tǒng)功能和性能需求分析的結(jié)果,對系統(tǒng)的具體數(shù)據(jù)庫結(jié)構(gòu)進行設(shè)計與創(chuàng)建管理,使其符合預期的業(yè)務需求。

概念設(shè)計是按照用戶的需求進行現(xiàn)實世界的信息抽象建模,一般選用E-R模型分析方法,確定有哪些實體,以及實體之間的關(guān)系(一對一、一對多、多對多),項目管理E-R圖如圖3所示。

其中項目擁有名字、級別、類別、經(jīng)費等屬性,教師負責項目,是一對多的關(guān)系;研究生參與項目,是多對多的關(guān)系;管理員管理項目,是一對多的關(guān)系。

邏輯結(jié)構(gòu)設(shè)計是將E-R模型轉(zhuǎn)為關(guān)系模型,在E-R模型的基礎(chǔ)上建立數(shù)據(jù)表,其中多對多關(guān)系的處理方式是:增加一個實體,拆成2個一對多關(guān)系。MySQL數(shù)據(jù)庫建立表,首先根據(jù)業(yè)務需求選用合適的存儲引擎,本系統(tǒng)采用INNODB引擎,以及各字段類型、名稱、完整性約束等,建立表與表之間的聯(lián)系。文檔表結(jié)構(gòu)如圖4所示。

非關(guān)系型數(shù)據(jù)庫,又稱NoSQL,是大量數(shù)據(jù)存儲的集合,根據(jù)結(jié)構(gòu)化方法和應用場合,主要分為以下三類:①列式存儲(Column-Oriented),其存儲結(jié)構(gòu)為列式結(jié)構(gòu)(關(guān)系型數(shù)據(jù)庫為行式結(jié)構(gòu)),應用于分布式存儲的海量數(shù)據(jù),例如HBase、Cassandra;②鍵值存儲(Key-Value),每個Key對應一個Value,結(jié)構(gòu)類似于Hash表,應用于緩存系統(tǒng),例如Redis;③文檔存儲(Document-Oriented),結(jié)構(gòu)與Key-Value相似,也是每個Key對于一個Value,但Value主要是JSON或XML等格式,應用于海量數(shù)據(jù)快速查詢,例如MongoDB。

MongoDB是一個面向文檔存儲的非關(guān)系型數(shù)據(jù)庫,用來處理大規(guī)模的文本數(shù)據(jù),支持多種字段的定義,數(shù)據(jù)也可以進行索引。MongoDB不存在關(guān)系型數(shù)據(jù)庫中表和列的概念,而是使用集合,集合中存儲的是一個個鍵值對,鍵值對的內(nèi)容以及格式根據(jù)實際需求確定,不受數(shù)據(jù)模式限制,例如項目信息數(shù)據(jù)集合結(jié)構(gòu)表如圖5所示。

三、系統(tǒng)核心功能

本系統(tǒng)的所有功能都利用SSH框架(Struts2、Spring、Hibernate)來實現(xiàn),這種MVC架構(gòu)實現(xiàn)了視圖、控制器和模型的分離,以及業(yè)務邏輯層與持久層的分離,不僅降低了各層之間的耦合度,還大大提高了系統(tǒng)的可復用性。并且分別使用MySQL數(shù)據(jù)庫和MongoDB數(shù)據(jù)庫來存儲數(shù)據(jù),比較關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫處理大量文檔型數(shù)據(jù)的不同性能。

本系統(tǒng)角色有三類:教師、學生、管理員,不同角色擁有不同操作功能,有前臺功能和后臺管理功能,前臺功能主要供教師和學生使用,有登錄功能、個人信息功能、項目信息管理功能、項目成果管理功能、消息管理功能等,后臺供管理員使用,主要對用戶、項目、成果、消息等進行增刪改查操作。

1.項目管理功能

項目管理分為立項管理、在研管理、變更管理和結(jié)題管理四種(圖6)。當管理員或教師登錄系統(tǒng)后,可以對項目信息進行管理,包括對項目信息的查詢、增加、修改和刪除。管理員可以管理所有項目的增刪改查操作,教師只能對自己負責的項目進行修改與刪除操作。學生登錄后只能進行查詢操作(查看立項、在研、結(jié)題的項目),不具備修改和刪除的操作權(quán)限。

2.成果管理功能

成果管理分別支持對論文、著作、知識產(chǎn)權(quán)、獎勵成果四類成果的查詢、增加、修改和刪除功能。其中論文成果管理還支持論文的上傳和下載功能,知識產(chǎn)權(quán)包括專利成果和版權(quán)成果,添加專利成果時,首先獲取所有的結(jié)題項目列表,再輸入專利各項信息。學生可以新增論文,修改和刪除自己的論文、著作、知識產(chǎn)權(quán)、獎勵成果等。管理員則可以所有的論文、著作、知識產(chǎn)權(quán)和獎勵成果。

3.消息管理功能

消息管理包括每周總結(jié)報告、日常講座、通知通告等,學生可以查看日常講座信息、通告信息等,教師可以發(fā)布、修改、刪除這些信息。

查詢指定集合下的所有文檔信息部分核心代碼如下:

public static MongoCursor queryAllDocuments(String collection){

MongoDatabase mongoDatabase = getMongoClient().getDatabase("LIMS");

MongoCollection mongoCollection = mongoDatabase.getCollection(collection);

FindIterable findIterable = mongoCollection.find();

MongoCursor mongoCursor = findIterable.iterator();

return mongoCursor;

}

四、系統(tǒng)測試

系統(tǒng)的運行環(huán)境如下:

硬件環(huán)境:Windows 10操作系統(tǒng)、4G內(nèi)存、1TB硬盤、i7處理器。

軟件環(huán)境:IntelliJ IDEA、MongoDB、MySQL。

經(jīng)測試,系統(tǒng)的各功能和性能均達到了預期要求。系統(tǒng)的功能測試和性能測試結(jié)果如下:

本系統(tǒng)基本符合科研信息管理系統(tǒng)的功能需求,系統(tǒng)的頁面功能、操作流程、權(quán)限控制、異常處理都基本規(guī)范,人機交互界面設(shè)計較良好,功能基本齊全。

在系統(tǒng)的性能方面,本系統(tǒng)分別使用關(guān)系型數(shù)據(jù)庫MySQL和非關(guān)系型數(shù)據(jù)庫MongoDB以論文表為例進行測試和比較。MongoDB對數(shù)據(jù)結(jié)構(gòu)要求比較松散,存儲的文檔是一組鍵值對,文檔中還可以內(nèi)嵌文檔,在數(shù)據(jù)的插入和查詢性上均都高于MySQL數(shù)據(jù)庫。例如對于1億條記錄的論文表,MongoDB的查詢速度是MySQL數(shù)據(jù)庫的3倍左右。

五、結(jié)束語

本文應用多種技術(shù)開發(fā)了一個基于NoSQL和MySQL的科研信息管理系統(tǒng)。主要技術(shù)有:MVC設(shè)計模式、Struts2框架、Spring框架、Hibernate框架、MongoDB數(shù)據(jù)庫和MySQL數(shù)據(jù)庫等。實現(xiàn)了包含用戶管理、項目管理、成果管理,以及消息管理為一體的科研信息管理系統(tǒng)。通過測試比較非關(guān)系型數(shù)據(jù)庫和關(guān)系型數(shù)據(jù)庫處理大量文檔型數(shù)據(jù)的不同性能,切實解決了科研信息管理系統(tǒng)的查詢性能以及數(shù)據(jù)擴展問題。

參考文獻:

[1]張煜,陳屹峰,朱世文.NoSQL在構(gòu)建業(yè)務信令監(jiān)測系統(tǒng)中的應用[J].計算機應用與軟件,2013,30(10): 205-208.

[2]周躍,臧斌宇.分布式NoSQL系統(tǒng)寫操作性能優(yōu)化設(shè)計與實現(xiàn)[J].計算機應用與軟件,2014,31(11):25-28.

[3]鄂世嘉,林培裕,向陽.自動化構(gòu)建的中文知識圖譜系統(tǒng)[J].計算機應用,2016,36(4):992-996.

[4]王凱,陳能成,陳澤強.基于MongoDB的軌跡大數(shù)據(jù)時空索引構(gòu)建方法[J].計算機系統(tǒng)應用, 2017,26(6):227-231.

[5]肖子達,朱立谷,馮東煜,張迪.分布式數(shù)據(jù)庫聚合計算性能優(yōu)化[J].計算機應用, 2017,37(5):1251-1256.

[6]任廣震,侯進,王獻.MVC模式在B/S結(jié)構(gòu)政務系統(tǒng)的應用研究[J].計算機應用與軟件,2014,31(8):54-58.

[7]邱麗麗,陸源.基于ExtJS和SSH2架構(gòu)的網(wǎng)上報銷系統(tǒng)設(shè)計與實現(xiàn)[J].計算機應用與軟件,2016,33(9):76-79.

[8]王振鐸,王振輝,王紅剛,陳綏陽.基于MongoDB的移動信息分享平臺[J].計算機系統(tǒng)應用,2016,25(4):112-117.

[9]羅藝娜,朱凌云.基于PHP+MYSQL的校園電能監(jiān)測網(wǎng)站設(shè)計[J].計算機系統(tǒng)應用,2016,25(11):97-101.

(編輯:王曉明)