APP下载

基于NoSQL和MySQL的科研信息管理系统开发

2019-04-25潘益婷潘修强肖鹏飞

中国教育信息化·高教职教 2019年3期

潘益婷 潘修强 肖鹏飞

摘   要:本系统采用了MVC设计模式,提高了系统的可扩展性和可维护性,同时利用Struts2、Spring、Hibernate框架,使用NoSQL数据库和MySQL数据库来实现对科研信息数据的存储和管理。本系统对科研信息进行网络化、信息化管理,实现了用户管理、科研项目管理、科研成果管理、消息管理四大功能。通过测试比较非关系型数据库和关系型数据库处理大量文档型数据的不同性能,解决了科研信息管理系统的查询性能以及数据扩展问题。

关键词:NoSQL数据库;MySQL数据库;科研信息管理系统;SSH框架

中图分类号:TP311.52 文献标志码:A 文章编号:1673-8454(2019)05-0077-04

NoSQL数据库的产生就是为了解决大数据应用难题,对于如何充分利用其无模式、支持内嵌文档、全类型索引、简单易用等特点应用于包括科研信息管理系统等各领域,提高系统运行效率,国内近几年也有一些相关研究工作。张煜[1]等人提出NoSQL数据库是另一种存储解决方案,探讨了其在监测系统中的应用。周跃[2]等人提出两个优化批处理算法解决服务端批量处理的低效问题,原型系统基于典型的分布式NoSQL系统HBase实现。鄂世嘉[3]等人提出自动通过图数据库Cayley以及MongoDB数据库系统,对三元组文件数据进行导入转换为庞大的知识图谱系统。王凯[4]等基于文档型、非关系型数据库MongoDB提出了一套基于四叉树的道路网时空索引,实现海量轨迹数据的高效查询。肖子达[5]等人以MongoDB数据库为研究实例,提出了一种基于片键和索引的数据库性能提升方法。但是以上研究关于NoSQL应用于科研信息管理系统方面的阐述较少,缺乏有实际应用、针对性强的NoSQL解决方案。因此,为方便对科研项目、论文、学生等管理,建立一个基于NoSQL的、高效的科研信息管理系统是必要的。

一、系统概述

当前高校在校学生人数不断增多,科研信息数据也随之不断扩增,本系统针对科研信息进行网络化、信息化管理,方便导师、本科生、研究生、博士生进行数据信息的共享,方便管理员对整个科研信息进行管理,提高实验室科研管理水平。本系统分别使用MongoDB数据库和MySQL数据库来存储数据,探究NoSQL技术在实际中的应用方案,比较非关系型数据库和关系型数据库处理大量文档型数据的不同性能。本系统分为用户管理、科研项目管理、科研成果管理、消息管理四个功能模块。系统功能结构图如图1所示。①用户管理。可以根据不同的权限增加、删除人员,查询相关人员信息,修改人员信息,用户分不同的角色,有管理员角色、教师角色、学生角色,不同角色登录系统拥有不同的功能。②科研项目管理。项目分为立项项目、开题项目、在研项目、结题项目四种类别,项目状态的改变只能依次递增,每个项目的负责人只有一位,可以有多位参与者,不论教师还是学生,项目不同的阶段还应该有相应的文档说明。③科研成果管理。包括专利管理、获奖管理和软件著作權管理,添加与项目匹配的科技成果,也可删除相关成果和查询科研成果。论文分为中文论文和英文论文两种,每篇论文有一名第一作者,每篇论文可以有多名参与编写的教师或学生,论文需要有相应的证明文档,可上传或下载。④消息管理。管理员和教师发布最新通知,也可查看实验室最新的在研项目。

二、系统设计

1.系统总体架构设计

系统总体架构如图2所示。本系统采用MVC[6]设计模式,把系统拆分成Model(模型)、View(视图)、Control(控制器)三部分,这三部分各司其职又相互协调配合完成系统功能,提高系统的可扩展性和可维护性,最大化地实现低耦合、高复用。系统利用SSH框架[7]:Struts2、Spring、Hibernate,以及使用MongoDB数据库[8] 和MySQL数据库[9]来实现对科研信息数据的存储和管理。

总体架构设计分3部分:①表示层。利用Struts2框架实现,Struts2应用程序是基于HTTP协议和MVC设计模式,通过JSP页面进行交互,根据Struts中的配置文件将请求委派给相应的Action处理,并将结果返回。②业务逻辑层。由Spring框架实现具体业务逻辑处理,Spring是一个轻量级的IOC和AOP容器框架,让对象与对象之间、模块与模块之间的关系通过配置说明来管理,而不用通过代码来关联,并且Spring框架能很好地与其他框架集成,使Struts与Hibernate更好地工作。③数据访问层。由Hibernate框架实现,处理与数据库的交互操作,将关系数据库中的表映射成为对象,把对数据库的操作转化为对象的操作,不用写SQL语句操作数据表,而是用面向对象思维,用HQL直接从数据库获得Java对象。

2.数据库设计

本系统分别使用MySQL数据库和MongoDB数据库来存储数据,探究NoSQL技术在实际中的应用方案,比较关系型数据库和非关系型数据库处理大量文档型数据的不同性能。

数据库设计主要包括需求分析、概念设计、逻辑设计和物理设计几个方面,它是根据系统功能和性能需求分析的结果,对系统的具体数据库结构进行设计与创建管理,使其符合预期的业务需求。

概念设计是按照用户的需求进行现实世界的信息抽象建模,一般选用E-R模型分析方法,确定有哪些实体,以及实体之间的关系(一对一、一对多、多对多),项目管理E-R图如图3所示。

其中项目拥有名字、级别、类别、经费等属性,教师负责项目,是一对多的关系;研究生参与项目,是多对多的关系;管理员管理项目,是一对多的关系。

逻辑结构设计是将E-R模型转为关系模型,在E-R模型的基础上建立数据表,其中多对多关系的处理方式是:增加一个实体,拆成2个一对多关系。MySQL数据库建立表,首先根据业务需求选用合适的存储引擎,本系统采用INNODB引擎,以及各字段类型、名称、完整性约束等,建立表与表之间的联系。文档表结构如图4所示。

非关系型数据库,又称NoSQL,是大量数据存储的集合,根据结构化方法和应用场合,主要分为以下三类:①列式存储(Column-Oriented),其存储结构为列式结构(关系型数据库为行式结构),应用于分布式存储的海量数据,例如HBase、Cassandra;②键值存储(Key-Value),每个Key对应一个Value,结构类似于Hash表,应用于缓存系统,例如Redis;③文档存储(Document-Oriented),结构与Key-Value相似,也是每个Key对于一个Value,但Value主要是JSON或XML等格式,应用于海量数据快速查询,例如MongoDB。

MongoDB是一个面向文档存储的非关系型数据库,用来处理大规模的文本数据,支持多种字段的定义,数据也可以进行索引。MongoDB不存在关系型数据库中表和列的概念,而是使用集合,集合中存储的是一个个键值对,键值对的内容以及格式根据实际需求确定,不受数据模式限制,例如项目信息數据集合结构表如图5所示。

三、系统核心功能

本系统的所有功能都利用SSH框架(Struts2、Spring、Hibernate)来实现,这种MVC架构实现了视图、控制器和模型的分离,以及业务逻辑层与持久层的分离,不仅降低了各层之间的耦合度,还大大提高了系统的可复用性。并且分别使用MySQL数据库和MongoDB数据库来存储数据,比较关系型数据库和非关系型数据库处理大量文档型数据的不同性能。

本系统角色有三类:教师、学生、管理员,不同角色拥有不同操作功能,有前台功能和后台管理功能,前台功能主要供教师和学生使用,有登录功能、个人信息功能、项目信息管理功能、项目成果管理功能、消息管理功能等,后台供管理员使用,主要对用户、项目、成果、消息等进行增删改查操作。

1.项目管理功能

项目管理分为立项管理、在研管理、变更管理和结题管理四种(图6)。当管理员或教师登录系统后,可以对项目信息进行管理,包括对项目信息的查询、增加、修改和删除。管理员可以管理所有项目的增删改查操作,教师只能对自己负责的项目进行修改与删除操作。学生登录后只能进行查询操作(查看立项、在研、结题的项目),不具备修改和删除的操作权限。

2.成果管理功能

成果管理分别支持对论文、著作、知识产权、奖励成果四类成果的查询、增加、修改和删除功能。其中论文成果管理还支持论文的上传和下载功能,知识产权包括专利成果和版权成果,添加专利成果时,首先获取所有的结题项目列表,再输入专利各项信息。学生可以新增论文,修改和删除自己的论文、著作、知识产权、奖励成果等。管理员则可以所有的论文、著作、知识产权和奖励成果。

3.消息管理功能

消息管理包括每周总结报告、日常讲座、通知通告等,学生可以查看日常讲座信息、通告信息等,教师可以发布、修改、删除这些信息。

查询指定集合下的所有文档信息部分核心代码如下:

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;

}

四、系统测试

系统的运行环境如下:

硬件环境:Windows 10操作系统、4G内存、1TB硬盘、i7处理器。

软件环境:IntelliJ IDEA、MongoDB、MySQL。

经测试,系统的各功能和性能均达到了预期要求。系统的功能测试和性能测试结果如下:

本系统基本符合科研信息管理系统的功能需求,系统的页面功能、操作流程、权限控制、异常处理都基本规范,人机交互界面设计较良好,功能基本齐全。

在系统的性能方面,本系统分别使用关系型数据库MySQL和非关系型数据库MongoDB以论文表为例进行测试和比较。MongoDB对数据结构要求比较松散,存储的文档是一组键值对,文档中还可以内嵌文档,在数据的插入和查询性上均都高于MySQL数据库。例如对于1亿条记录的论文表,MongoDB的查询速度是MySQL数据库的3倍左右。

五、结束语

本文应用多种技术开发了一个基于NoSQL和MySQL的科研信息管理系统。主要技术有:MVC设计模式、Struts2框架、Spring框架、Hibernate框架、MongoDB数据库和MySQL数据库等。实现了包含用户管理、项目管理、成果管理,以及消息管理为一体的科研信息管理系统。通过测试比较非关系型数据库和关系型数据库处理大量文档型数据的不同性能,切实解决了科研信息管理系统的查询性能以及数据扩展问题。

参考文献:

[1]张煜,陈屹峰,朱世文.NoSQL在构建业务信令监测系统中的应用[J].计算机应用与软件,2013,30(10): 205-208.

[2]周跃,臧斌宇.分布式NoSQL系统写操作性能优化设计与实现[J].计算机应用与软件,2014,31(11):25-28.

[3]鄂世嘉,林培裕,向阳.自动化构建的中文知识图谱系统[J].计算机应用,2016,36(4):992-996.

[4]王凯,陈能成,陈泽强.基于MongoDB的轨迹大数据时空索引构建方法[J].计算机系统应用, 2017,26(6):227-231.

[5]肖子达,朱立谷,冯东煜,张迪.分布式数据库聚合计算性能优化[J].计算机应用, 2017,37(5):1251-1256.

[6]任广震,侯进,王献.MVC模式在B/S结构政务系统的应用研究[J].计算机应用与软件,2014,31(8):54-58.

[7]邱丽丽,陆源.基于ExtJS和SSH2架构的网上报销系统设计与实现[J].计算机应用与软件,2016,33(9):76-79.

[8]王振铎,王振辉,王红刚,陈绥阳.基于MongoDB的移动信息分享平台[J].计算机系统应用,2016,25(4):112-117.

[9]罗艺娜,朱凌云.基于PHP+MYSQL的校园电能监测网站设计[J].计算机系统应用,2016,25(11):97-101.

(编辑:王晓明)