图数据库Neo4j的介绍与使用
Neo4j 是一個高性能的 NoSQL 圖形數(shù)據(jù)庫,它將結(jié)構(gòu)化數(shù)據(jù)存儲在網(wǎng)絡(luò)(從數(shù)學(xué)角度叫做圖)上而不是表中。Neo4j 也可以被看作是一個高性能的圖引擎,該引擎具有成熟數(shù)據(jù)庫的所有特性。
接下來我們來一起學(xué)習(xí)一下Neo4j的安裝和使用方法吧!
知識點(diǎn)
圖數(shù)據(jù)庫的概念
Neo4j 的安裝
Neo4j 數(shù)據(jù)遷移
Neo4j Browser 的使用
圖數(shù)據(jù)庫的概念
圖數(shù)據(jù)庫的基本概念是圖,在這里我們用一個簡單的例子來介紹圖:
圖例
如下就是一個圖,圖中包含的信息是:一位名為 Gods_Dusk 的用戶,撰寫了兩門藍(lán)橋云課課程,其中一門叫做 《Python 機(jī)器學(xué)習(xí)玩轉(zhuǎn) Flappy Bird 游戲》,所屬學(xué)科是機(jī)器學(xué)習(xí)和 Python,另一門課程叫做《圖數(shù)據(jù)庫 Neo4j 基礎(chǔ)入門》,所屬學(xué)科為 Neo4j。同時該用戶參加了第 23 期 Python 樓賽,獲得了第二名。
另一名用戶為云課管理員,用戶 ID 為 1。
圖片描述
- 節(jié)點(diǎn)
節(jié)點(diǎn)通常用于表示實(shí)體,實(shí)體的概念來自哲學(xué),現(xiàn)實(shí)世界中的客觀事物、抽象的事件均可稱之為實(shí)體。節(jié)點(diǎn)是組成圖的最小單位。
- 標(biāo)簽
標(biāo)簽用于分類節(jié)點(diǎn),如所有用來表示藍(lán)橋云課課程的節(jié)點(diǎn)都可以使用標(biāo)簽:課程進(jìn)行標(biāo)記。在 Neo4j 中,就可以根據(jù)不同標(biāo)簽類型進(jìn)行特定節(jié)點(diǎn)的查詢。
一個節(jié)點(diǎn)可以有多個標(biāo)簽。如用戶 Gods_Dusk,既是藍(lán)橋云課用戶,也是藍(lán)橋云課作者;用戶 云課管理員,既是藍(lán)橋云課用戶,也是藍(lán)橋云課員工。
- 關(guān)系
圖中的邊表示關(guān)系,關(guān)系連接兩個節(jié)點(diǎn),如撰寫關(guān)系,將《圖數(shù)據(jù)庫 Neo4j 基礎(chǔ)入門》課程和用戶 Gods_Dusk 相連接起來。
關(guān)系具有方向性,如《圖數(shù)據(jù)庫 Neo4j 基礎(chǔ)入門》屬于 Neo4j 類型的課程,而反之不成立,但只需要注意到關(guān)系的方向,就不需要在相反的方向上添加重復(fù)的關(guān)系,即 Neo4j 類型的課程包含《圖數(shù)據(jù)庫 Neo4j 基礎(chǔ)入門》。
被關(guān)系連接的兩個節(jié)點(diǎn),其中關(guān)系的起始節(jié)點(diǎn)被稱為出節(jié)點(diǎn),關(guān)系的終止節(jié)點(diǎn)被稱為入節(jié)點(diǎn)。同時,一個節(jié)點(diǎn)的出度是指這個節(jié)點(diǎn)被多少關(guān)系作為出節(jié)點(diǎn),同理,入度是指被多少個關(guān)系作為入節(jié)點(diǎn)。
特別的是,一個節(jié)點(diǎn)可以有指向自己的關(guān)系,比如用戶 Gods_Dusk 認(rèn)識自己。
- 關(guān)系類型
關(guān)系與節(jié)點(diǎn)一樣具有類型劃分,但關(guān)系有且僅有一種關(guān)系類型。
- 屬性
屬性是用于描述節(jié)點(diǎn)和關(guān)系特性的名稱 - 值對。 如一個用戶,具有屬性:用戶名 - Gods_Dusk,用戶 ID - 812252。
- 路徑與遍歷
在圖中,查詢過程是路徑搜索與遍歷的過程,如 “Gods_Dusk 寫過哪些課?”,為了獲得答案,就需要先從圖中找到用戶名為 Gods_Dusk 的節(jié)點(diǎn),然后找到類型為撰寫的關(guān)系,這些關(guān)系的出節(jié)點(diǎn)就是答案,在這里路徑的搜索長度為 1。而問題“Gods_Dusk 寫過的課程都是屬于哪些類型?”的搜索長度為 2。
Neo4j 安裝與使用
如果你使用的是個人環(huán)境,可以在Neo4j官網(wǎng)中下載對應(yīng)操作系統(tǒng)的安裝包。Windows 和 Mac 系統(tǒng)下有對應(yīng)的桌面應(yīng)用,可以直接下載安裝。Linux 系統(tǒng)下需要下載壓縮包,解壓后進(jìn)入 bin 目錄啟動程序。
如果你在使用藍(lán)橋云課學(xué)習(xí)相關(guān)課程,環(huán)境中已經(jīng)安裝了 Neo4j,無需下載可以直接使用,而且是免費(fèi)的,在學(xué)編程的同學(xué)不妨試試。
啟動 Neo4j
打開終端,輸入
sudo neo4j start即可啟動 Neo4j 服務(wù)。
同時輸入:
sudo neo4j status可以查看 Neo4j 的啟動情況。
打開瀏覽器,在地址欄輸入 localhost:7474,就可以打開 Neo4j Browser(若網(wǎng)頁提示連接失敗,請等待片刻后再刷新網(wǎng)頁)。Neo4j Browser 是 Neo4j 數(shù)據(jù)庫面向開發(fā)人員的工具,允許開發(fā)人員執(zhí)行查詢語句并可視化結(jié)果。
首次進(jìn)入 Neo4j Browser 時需要重置密碼,系統(tǒng)默認(rèn)密碼為 neo4j,我們將它修改為lanqiao,當(dāng)然你可以隨意設(shè)置。
數(shù)據(jù)遷移
Neo4j 提供了 neo4j-admin 來進(jìn)行數(shù)據(jù)的導(dǎo)入導(dǎo)出,在遷移之前,需要停止 Neo4j 服務(wù)。
數(shù)據(jù)導(dǎo)入
# 下載其他已導(dǎo)出的 Neo4j 數(shù)據(jù) wget https://labfile.oss.aliyuncs.com/courses/4043/graph.db.dump # 停止 Neo4j 服務(wù) sudo neo4j stop # 導(dǎo)入到本地數(shù)據(jù)庫中 sudo neo4j-admin load --from=graph.db.dump --database=graph.db --force # 啟動 Neo4j 服務(wù) sudo neo4j start數(shù)據(jù)導(dǎo)出
# 停止 Neo4j 服務(wù) sudo neo4j stop # 導(dǎo)出數(shù)據(jù)到本地 /home/shiyanlou/Code 目錄下 sudo neo4j-admin dump --database=graph.db --to=/home/shiyanlou/Code # 啟動 Neo4j 服務(wù) sudo neo4j startNeo4j Browser
Neo4j Browser 中有 3 個模塊,側(cè)邊欄,Cypher 編輯器與結(jié)果欄,在進(jìn)入 Neo4j Browser 時結(jié)果欄會展示歡迎界面。
Cypher 編輯器
Cypher 是 Neo4j 數(shù)據(jù)庫的查詢語言, Cypher 編輯器則用于輸入和運(yùn)行 Cypher 語句。
在 Cypher 編輯器右側(cè)有三個按鈕。
其功能分別是:
保存收藏輸入框中的 Cypher 語句。
清除輸入框中的 Cypher 語句。
運(yùn)行輸入框中的 Cypher 語句,若語句只有一行,則可以用回車鍵作為快捷鍵。
側(cè)邊欄
側(cè)邊欄包含一組按鍵,用于數(shù)據(jù)瀏覽和環(huán)境設(shè)置。從上至下分別是:
數(shù)據(jù)庫信息
數(shù)據(jù)庫信息一欄提供了當(dāng)前圖數(shù)據(jù)庫概覽,并展示當(dāng)前用戶的角色和 Neo4j 版本信息。
在數(shù)據(jù)導(dǎo)入一節(jié),我們從其他數(shù)據(jù)庫中導(dǎo)入了一些數(shù)據(jù),所以在點(diǎn)擊數(shù)據(jù)庫信息展示按鈕時,可以展示數(shù)據(jù)庫中具體統(tǒng)計內(nèi)容,如下圖所示:
Node Labels:展示數(shù)據(jù)庫中節(jié)點(diǎn)數(shù)量與節(jié)點(diǎn)類型,在這里一共 8 個節(jié)點(diǎn),節(jié)點(diǎn)類型有 Course,User,Teacher,Challenge 和 Category。
Relationship Types:展示數(shù)據(jù)庫中關(guān)系數(shù)量與關(guān)系類型,在這里一共 7 個關(guān)系,關(guān)系類型有 WRITE,BELONGS,PARTICIPATE。
Property Keys:展示數(shù)據(jù)庫中節(jié)點(diǎn)與關(guān)系的屬性名,在這里屬性名有 name,courseId,workingTime,userId,rank。
Connected as:顯示當(dāng)前用戶信息,若當(dāng)前用戶為管理員,則還可以進(jìn)行成員管理操作。
DBMS:顯示 Neo4j 的版本與系統(tǒng)信息。
單擊節(jié)點(diǎn)、關(guān)系、屬性中顯示的任何一個標(biāo)簽,Neo4j 會運(yùn)行一個快捷查詢,并在結(jié)果欄可視化查詢結(jié)果。
收藏夾
收藏夾用于收藏 Cypher 命令,同時允許用戶下載收藏的語句到本地和上傳本地語句。
文檔
Neo4j Browser 中直接內(nèi)嵌了官方文檔,點(diǎn)擊相應(yīng)標(biāo)題就可以跳轉(zhuǎn)到對應(yīng)的官方文檔。
數(shù)據(jù)庫遠(yuǎn)程同步
清空本地數(shù)據(jù)庫,與云端數(shù)據(jù)庫同步。
設(shè)置
瀏覽器設(shè)置可對網(wǎng)頁 UI,結(jié)果圖形可視化進(jìn)行相關(guān)的配置。
Neo4j 相關(guān)信息
顯示關(guān)于 Neo4j 的相關(guān)信息,包括版本號、許可證、社區(qū)以及致謝。
結(jié)果欄
Neo4j Browser 以結(jié)果幀的方式,在結(jié)果欄保存每一次運(yùn)行結(jié)果,允許用戶直接在結(jié)果幀中進(jìn)行查詢后的操作。
以點(diǎn)擊側(cè)邊欄中節(jié)點(diǎn) User 為例,在一個結(jié)果幀中,上方左側(cè)記錄了運(yùn)行的 Cypher 語句 MATCH (n:User) RETURN n LIMIT 25,點(diǎn)擊后會在 Cypher 編輯器中顯示該語句,方便用戶修改和復(fù)用。
結(jié)果幀下方的結(jié)果視圖分別有:
圖視圖
以圖的形式顯示結(jié)果,并允許配置節(jié)點(diǎn)、邊、文字的顯示風(fēng)格(如顏色,大小,顯示的屬性),同時圖視圖允許用戶對結(jié)果中的圖進(jìn)行拖動,隱藏和二次查找操作。在點(diǎn)擊圖中節(jié)點(diǎn)和邊時,視圖的下邊欄會顯示對應(yīng)節(jié)點(diǎn)和邊的屬性,其中 <id> 是 Neo4j 生成的自增主鍵。
圖視圖并不會始終出現(xiàn)在結(jié)果幀中,只有當(dāng)查詢結(jié)果可以表示為圖時,才會有圖視圖。
表視圖
以 JSON 格式顯示結(jié)果。
文本視圖
以純文本表格的形式顯示結(jié)果。
代碼視圖
顯示提交的請求,Neo4j 服務(wù)器版本和地址,以及響應(yīng)結(jié)果。
總結(jié)
以上是 Neo4j 的簡介,通過上文的學(xué)習(xí)我們初步接觸了圖數(shù)據(jù)庫,Neo4j 及 Cypher 的基本概念,實(shí)踐了對 Neo4j 的 啟動,停止和數(shù)據(jù)遷移,使用和查看 Neo4j Browser 等基本操作。
希望大家再接再厲,早日熟練運(yùn)用Neo4j!
參考資料
如果你覺得這篇文章有用就點(diǎn)個贊吧!
總結(jié)
以上是生活随笔為你收集整理的图数据库Neo4j的介绍与使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 干货分享:什么是Java设计工厂模式?
- 下一篇: Tomcat5.5 配置mysql数据库