麻天 余本國 宋文愛 張靜 董文強
摘? 要: 分析了Neo4j圖數(shù)據(jù)庫在管理學(xué)生信息以及對學(xué)生信息進行數(shù)據(jù)挖掘的優(yōu)勢。在此基礎(chǔ)上,以中北大學(xué)軟件學(xué)院在校研究生信息為數(shù)據(jù)來源,介紹了采用Neo4j構(gòu)建學(xué)生信息管理圖數(shù)據(jù)庫的詳細過程,包括節(jié)點的選取、定義,關(guān)系的抽取及定義,以及通過查詢優(yōu)化得到有效的分析數(shù)據(jù)。
關(guān)鍵詞: Neo4j; 信息管理; 數(shù)據(jù)庫設(shè)計; 數(shù)據(jù)挖掘
中圖分類號:TP399? ? ? ? ? 文獻標(biāo)識碼: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 引言
隨著信息技術(shù)和網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,各種數(shù)據(jù)量呈指數(shù)級增長,傳統(tǒng)的關(guān)系數(shù)據(jù)庫無法對這些數(shù)據(jù)進行很好的處理。為了解決數(shù)據(jù)量增多以及關(guān)系型數(shù)據(jù)庫在處理復(fù)雜結(jié)構(gòu)這方面的不足,引入了NoSQL數(shù)據(jù)庫,它被認為是管理大量的圖數(shù)據(jù)或復(fù)雜數(shù)據(jù)的最佳選擇[1]。2012年5月17日谷歌正式提出了“知識圖譜”這個術(shù)語[2]。知識圖譜旨在描述真實世界中存在的各種實體或概念,以及他們之間的關(guān)聯(lián)關(guān)系。其中,每個實體或概念用一個全局唯一確定的ID來標(biāo)識,每個屬性?值對用來刻畫實體的內(nèi)在屬性,而關(guān)系用來連接兩個實體,刻畫它們之間的關(guān)聯(lián)。知識圖譜可以融合多種數(shù)據(jù)源豐富數(shù)據(jù)語義信息,并且可以結(jié)合推理得到的隱含信息為用戶提供服務(wù)。
1 Neo4j圖數(shù)據(jù)庫的優(yōu)勢
1.1 圖結(jié)構(gòu)式存儲
對于學(xué)生信息數(shù)據(jù)挖掘主要在于挖掘?qū)W生和老師間的關(guān)聯(lián)規(guī)則、學(xué)生和課程間的關(guān)聯(lián)規(guī)則及班級整體的關(guān)聯(lián),因此,選擇適合表示實體間關(guān)系的數(shù)據(jù)庫更能體現(xiàn)學(xué)生間的關(guān)系,有利于后期進行數(shù)據(jù)挖掘。傳統(tǒng)的關(guān)系型數(shù)據(jù)庫使用結(jié)構(gòu)化的數(shù)據(jù)存儲方式,當(dāng)體現(xiàn)數(shù)據(jù)的聯(lián)系時一般都不能直接表示而需要通過第三方表來輔助完成,尤其在體現(xiàn)多對多關(guān)系時更加繁瑣、低效,而像NotOnlySQL等這種非關(guān)系型數(shù)據(jù)庫又不能表現(xiàn)數(shù)據(jù)之間的聯(lián)系[3]。
1.2 圖遍歷式查詢
由于Neo4j存儲的是原生的圖數(shù)據(jù),因此,它使用圖的遍歷算法設(shè)計數(shù)據(jù)查詢算法,即可以快速地從一個節(jié)點開始,按照連接關(guān)系檢索到所有與它有直接或間接聯(lián)系的節(jié)點。在關(guān)系數(shù)據(jù)庫中即使只查詢一小部分數(shù)據(jù),都會涉及大量數(shù)據(jù),這些數(shù)據(jù)大多與結(jié)果毫無關(guān)系,隨著數(shù)據(jù)量的增長,查詢性能日趨下降。在大數(shù)據(jù)量的情況下,Neo4j圖數(shù)據(jù)庫查詢速度是關(guān)系數(shù)據(jù)庫的數(shù)倍乃至數(shù)十倍。
1.3 更強的靈活性和適應(yīng)性
通常在應(yīng)用中,存在業(yè)務(wù)需求隨著時間和條件的改變而變化的情況,這對于關(guān)系數(shù)據(jù)庫來說,往往需要推倒重來、重構(gòu)整個數(shù)據(jù)庫,成本巨大,而使用Neo4j可以最大限度地避免這種情況發(fā)生。因為Neo4j圖數(shù)據(jù)庫采用非結(jié)構(gòu)化的數(shù)據(jù)格式、具備自然伸展特性,從而使其具有很大的靈活性和伸縮性,只根據(jù)需求的變化增加節(jié)點、關(guān)系及其屬性,不會影響原來數(shù)據(jù)的正常使用[4]。
1.4 圖論算法支持
由于Neo4j數(shù)據(jù)庫采用圖結(jié)構(gòu)存儲數(shù)據(jù),因此它集成了圖論的常用算法,如:圖的廣度遍歷、深度遍歷算法、Dijkstra最短路徑算法、A*算法等。因此,在基于Neo4j圖數(shù)據(jù)庫的應(yīng)用中我們可以根據(jù)圖相關(guān)算法進而設(shè)計許多優(yōu)秀的圖操作算法,這是其他傳統(tǒng)關(guān)系數(shù)據(jù)庫做不到的。
2 學(xué)生管理圖數(shù)據(jù)庫設(shè)計
2.1 基本術(shù)語
Neo4j圖數(shù)據(jù)庫的數(shù)據(jù)模型主要由三個模塊構(gòu)成:節(jié)點,屬性和關(guān)系。
節(jié)點(Node):即實體。在Neo4j中我們可以將節(jié)點近似的看成E-R圖中的實體,節(jié)點可以通過自己的標(biāo)簽(Lable)來進行區(qū)分。節(jié)點也可以具有多個屬性或者不具有屬性(Properties),屬性可以以key-value鍵值對的形式存在。如:在表示人際關(guān)系的圖數(shù)據(jù)庫中,一個人就可以看作一個節(jié)點,用圓圈表示。
關(guān)系(Relationship):是表示節(jié)點與節(jié)點間的某種聯(lián)系,在圖數(shù)據(jù)庫中用箭頭表示,關(guān)系可以是單向的也可以是雙向的[5]。
屬性(Property):用于表示節(jié)點或關(guān)系的特征。屬性由Key-Value鍵值對組成,節(jié)點和關(guān)系都可以設(shè)置自己的屬性[6]。屬性的鍵名是字符串,屬性值可以是一個原始值,當(dāng)然也可以是一個原始值的數(shù)組[7]。
2.2 節(jié)點定義
本文中學(xué)生信息數(shù)據(jù)庫是以作者所在學(xué)院研究生的個人信息為數(shù)據(jù)來源,其中包括了15名研究生導(dǎo)師,120名在校研究生,17門課程。根據(jù)后期研究學(xué)生信息管理應(yīng)用需求,我們定義以下三類節(jié)點:學(xué)生信息節(jié)點、導(dǎo)師信息節(jié)點和課程信息節(jié)點。
2.2.1 “學(xué)生信息”節(jié)點的定義
學(xué)生信息節(jié)點的屬性定義如表1所示。
以下命令創(chuàng)建了一個學(xué)生信息節(jié)點,節(jié)點名稱為S,標(biāo)簽為student,節(jié)點包含七個屬性xm:'張三',xh:'Y1913001',sex:'男' zzmm:中共黨員,lxfs:'15135181163',jtzz:'文明市富強街民主小區(qū)',ds:'張老師'。
CREATE (s:student{xm:'張三',xh:'Y1913001',sex:'男' zzmm:中共黨員,lxfs:'15135181163',jtzz:'文明市富強街民主小區(qū)',ds:'張老師'})
2.2.2 “導(dǎo)師信息”節(jié)點的定義
“導(dǎo)師信息”節(jié)點本文包含了七個屬性,如表2所示是導(dǎo)師信息節(jié)點的屬性名稱及說明:
2.2.3 “課程信息”節(jié)點的定義
“課程信息”節(jié)點本文包含了九個屬性,表3是“課程信息”節(jié)點的屬性名稱及說明。
4 結(jié)束語
Neo4j圖數(shù)據(jù)庫是目前公認的挖掘?qū)嶓w間關(guān)系的最優(yōu)秀的圖數(shù)據(jù)庫[8]。本文采用Neo4j實現(xiàn)了學(xué)生信息管理數(shù)據(jù)庫的整體規(guī)劃,這為人們挖掘?qū)W生信息,導(dǎo)師信息,課程信息等提供了有效的數(shù)據(jù)支持及方法指導(dǎo),從而也提高了學(xué)校的管理水平。
本文仍然有很多不足亟待完善,比如將知識圖譜的構(gòu)建過程向自動化發(fā)展,并在此基礎(chǔ)上加入學(xué)生選課過程中課程推薦系統(tǒng),問答系統(tǒng)等功能,需要后期不斷豐富與完善。
參考文獻(References):
[1] CATTELL R.Scalable SQL and NoSQL data stores[J].ACM SIGMOD Record,2011.39(4):12-27
[2] 劉嶠,李楊,段宏等.知識圖譜構(gòu)建技術(shù)綜述[J].計算機研究與發(fā)展,2016.53(3):582-600
[3] 徐增林,盛泳潘,賀麗榮等.知識圖譜技術(shù)綜述[J].電子科技大學(xué)學(xué)報,2016.6:589-606
[4] 孫鄭煜,鄂海紅,宋美娜,王寧.基于大數(shù)據(jù)技術(shù)的醫(yī)學(xué)知識圖譜構(gòu)建方法[J].軟件,2020.41(1):13-17
[5] 李雪.一種基于Neo4j圖數(shù)據(jù)庫的模糊查詢研究與實現(xiàn)[J].計算機技術(shù)與發(fā)展,2018.11:17-19
[6] 姜惠娟,郭文龍.基于Neo4j的藥膳方圖數(shù)據(jù)庫設(shè)計與優(yōu)化[J].中央民族大學(xué)學(xué)報(自然科學(xué)版),2019.28(3):48-55
[7] 馮俐.基于Neo4j圖數(shù)據(jù)庫構(gòu)建中學(xué)語文詩詞知識圖譜[D].陜西師范大學(xué),2019.
[8] 肖慶都,屈亮亮,侯霞.基于Neo4j圖數(shù)據(jù)庫的課程體系知識圖譜系統(tǒng)設(shè)計與實現(xiàn)[J].電腦知識與技術(shù),2017.13(36):130-132