麻天 余本國 宋文愛 張靜 董文強



摘? 要: 分析了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