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