麻天 余本国 宋文爱 张静 董文强
摘 要: 分析了Neo4j图数据库在管理学生信息以及对学生信息进行数据挖掘的优势。在此基础上,以中北大学软件学院在校研究生信息为数据来源,介绍了采用Neo4j构建学生信息管理图数据库的详细过程,包括节点的选取、定义,关系的抽取及定义,以及通过查询优化得到有效的分析数据。
关键词: Neo4j; 信息管理; 数据库设计; 数据挖掘
中图分类号:TP399 文献标识码:A 文章编号:1006-8228(2020)12-25-04
Abstract: This paper analyzes the advantages of Neo4j graph database in the management of student information and data mining of student information. On this basis, taking the information of graduate students in the Software School of North University of China as the data source, this paper introduces the detailed process of adopting Neo4j to build the graph database of student information management, including the selection and definition of nodes, the extraction and definition of relationships, as well as the obtaining of effective analyzed data through query optimization.
Key words: Neo4j; information management; database design; data mining
0 引言
隨着信息技术和网络技术的飞速发展,各种数据量呈指数级增长,传统的关系数据库无法对这些数据进行很好的处理。为了解决数据量增多以及关系型数据库在处理复杂结构这方面的不足,引入了NoSQL数据库,它被认为是管理大量的图数据或复杂数据的最佳选择[1]。2012年5月17日谷歌正式提出了“知识图谱”这个术语[2]。知识图谱旨在描述真实世界中存在的各种实体或概念,以及他们之间的关联关系。其中,每个实体或概念用一个全局唯一确定的ID来标识,每个属性?值对用来刻画实体的内在属性,而关系用来连接两个实体,刻画它们之间的关联。知识图谱可以融合多种数据源丰富数据语义信息,并且可以结合推理得到的隐含信息为用户提供服务。
1 Neo4j图数据库的优势
1.1 图结构式存储
对于学生信息数据挖掘主要在于挖掘学生和老师间的关联规则、学生和课程间的关联规则及班级整体的关联,因此,选择适合表示实体间关系的数据库更能体现学生间的关系,有利于后期进行数据挖掘。传统的关系型数据库使用结构化的数据存储方式,当体现数据的联系时一般都不能直接表示而需要通过第三方表来辅助完成,尤其在体现多对多关系时更加繁琐、低效,而像NotOnlySQL等这种非关系型数据库又不能表现数据之间的联系[3]。
1.2 图遍历式查询
由于Neo4j存储的是原生的图数据,因此,它使用图的遍历算法设计数据查询算法,即可以快速地从一个节点开始,按照连接关系检索到所有与它有直接或间接联系的节点。在关系数据库中即使只查询一小部分数据,都会涉及大量数据,这些数据大多与结果毫无关系,随着数据量的增长,查询性能日趋下降。在大数据量的情况下,Neo4j图数据库查询速度是关系数据库的数倍乃至数十倍。
1.3 更强的灵活性和适应性
通常在应用中,存在业务需求随着时间和条件的改变而变化的情况,这对于关系数据库来说,往往需要推倒重来、重构整个数据库,成本巨大,而使用Neo4j可以最大限度地避免这种情况发生。因为Neo4j图数据库采用非结构化的数据格式、具备自然伸展特性,从而使其具有很大的灵活性和伸缩性,只根据需求的变化增加节点、关系及其属性,不会影响原来数据的正常使用[4]。
1.4 图论算法支持
由于Neo4j数据库采用图结构存储数据,因此它集成了图论的常用算法,如:图的广度遍历、深度遍历算法、Dijkstra最短路径算法、A*算法等。因此,在基于Neo4j图数据库的应用中我们可以根据图相关算法进而设计许多优秀的图操作算法,这是其他传统关系数据库做不到的。
2 学生管理图数据库设计
2.1 基本术语
Neo4j图数据库的数据模型主要由三个模块构成:节点,属性和关系。
节点(Node):即实体。在Neo4j中我们可以将节点近似的看成E-R图中的实体,节点可以通过自己的标签(Lable)来进行区分。节点也可以具有多个属性或者不具有属性(Properties),属性可以以key-value键值对的形式存在。如:在表示人际关系的图数据库中,一个人就可以看作一个节点,用圆圈表示。
关系(Relationship):是表示节点与节点间的某种联系,在图数据库中用箭头表示,关系可以是单向的也可以是双向的[5]。
属性(Property):用于表示节点或关系的特征。属性由Key-Value键值对组成,节点和关系都可以设置自己的属性[6]。属性的键名是字符串,属性值可以是一个原始值,当然也可以是一个原始值的数组[7]。
2.2 节点定义
本文中学生信息数据库是以作者所在学院研究生的个人信息为数据来源,其中包括了15名研究生导师,120名在校研究生,17门课程。根据后期研究学生信息管理应用需求,我们定义以下三类节点:学生信息节点、导师信息节点和课程信息节点。
2.2.1 “学生信息”节点的定义
学生信息节点的属性定义如表1所示。
以下命令创建了一个学生信息节点,节点名称为S,标签为student,节点包含七个属性xm:'张三',xh:'Y1913001',sex:'男' zzmm:中共党员,lxfs:'15135181163',jtzz:'文明市富强街民主小区',ds:'张老师'。
CREATE (s:student{xm:'张三',xh:'Y1913001',sex:'男' zzmm:中共党员,lxfs:'15135181163',jtzz:'文明市富强街民主小区',ds:'张老师'})
2.2.2 “导师信息”节点的定义
“导师信息”节点本文包含了七个属性,如表2所示是导师信息节点的属性名称及说明:
2.2.3 “课程信息”节点的定义
“课程信息”节点本文包含了九个属性,表3是“课程信息”节点的属性名称及说明。
4 结束语
Neo4j图数据库是目前公认的挖掘实体间关系的最优秀的图数据库[8]。本文采用Neo4j实现了学生信息管理数据库的整体规劃,这为人们挖掘学生信息,导师信息,课程信息等提供了有效的数据支持及方法指导,从而也提高了学校的管理水平。
本文仍然有很多不足亟待完善,比如将知识图谱的构建过程向自动化发展,并在此基础上加入学生选课过程中课程推荐系统,问答系统等功能,需要后期不断丰富与完善。
参考文献(References):
[1] CATTELL R.Scalable SQL and NoSQL data stores[J].ACM SIGMOD Record,2011.39(4):12-27
[2] 刘峤,李杨,段宏等.知识图谱构建技术综述[J].计算机研究与发展,2016.53(3):582-600
[3] 徐增林,盛泳潘,贺丽荣等.知识图谱技术综述[J].电子科技大学学报,2016.6:589-606
[4] 孙郑煜,鄂海红,宋美娜,王宁.基于大数据技术的医学知识图谱构建方法[J].软件,2020.41(1):13-17
[5] 李雪.一种基于Neo4j图数据库的模糊查询研究与实现[J].计算机技术与发展,2018.11:17-19
[6] 姜惠娟,郭文龙.基于Neo4j的药膳方图数据库设计与优化[J].中央民族大学学报(自然科学版),2019.28(3):48-55
[7] 冯俐.基于Neo4j图数据库构建中学语文诗词知识图谱[D].陕西师范大学,2019.
[8] 肖庆都,屈亮亮,侯霞.基于Neo4j图数据库的课程体系知识图谱系统设计与实现[J].电脑知识与技术,2017.13(36):130-132