1. 程式人生 > 其它 >圖資料庫Neo4j的介紹與使用

圖資料庫Neo4j的介紹與使用

Neo4j 是一個高效能的 NoSQL 圖形資料庫,它將結構化資料儲存在網路(從數學角度叫做圖)上而不是表中。Neo4j 也可以被看作是一個高效能的圖引擎,該引擎具有成熟資料庫的所有特性。

接下來我們來一起學習一下Neo4j的安裝和使用方法吧!

知識點
圖資料庫的概念
Neo4j 的安裝
Neo4j 資料遷移
Neo4j Browser 的使用

圖資料庫的概念

圖資料庫的基本概念是圖,在這裡我們用一個簡單的例子來介紹圖:

圖例
如下就是一個圖,圖中包含的資訊是:一位名為 Gods_Dusk 的使用者,撰寫了兩門藍橋雲課課程,其中一門叫做 《Python 機器學習玩轉 Flappy Bird 遊戲》,所屬學科是機器學習和 Python,另一門課程叫做《圖資料庫 Neo4j 基礎入門》,所屬學科為 Neo4j。同時該使用者參加了第 23 期 Python 樓賽,獲得了第二名。

另一名使用者為雲課管理員,使用者 ID 為 1。

圖片描述

  • 節點

節點通常用於表示實體,實體的概念來自哲學,現實世界中的客觀事物、抽象的事件均可稱之為實體。節點是組成圖的最小單位。

  • 標籤

標籤用於分類節點,如所有用來表示藍橋雲課課程的節點都可以使用標籤:課程進行標記。在 Neo4j 中,就可以根據不同標籤型別進行特定節點的查詢。

一個節點可以有多個標籤。如使用者 Gods_Dusk,既是藍橋雲課使用者,也是藍橋雲課作者;使用者 雲課管理員,既是藍橋雲課使用者,也是藍橋雲課員工。

  • 關係

圖中的邊表示關係,關係連線兩個節點,如撰寫關係,將《圖資料庫 Neo4j 基礎入門》課程和使用者 Gods_Dusk 相連線起來。

關係具有方向性,如《圖資料庫 Neo4j 基礎入門》屬於 Neo4j 型別的課程,而反之不成立,但只需要注意到關係的方向,就不需要在相反的方向上新增重複的關係,即 Neo4j 型別的課程包含《圖資料庫 Neo4j 基礎入門》。

被關係連線的兩個節點,其中關係的起始節點被稱為出節點,關係的終止節點被稱為入節點。同時,一個節點的出度是指這個節點被多少關係作為出節點,同理,入度是指被多少個關係作為入節點。

特別的是,一個節點可以有指向自己的關係,比如使用者 Gods_Dusk 認識自己。

  • 關係型別

關係與節點一樣具有型別劃分,但關係有且僅有一種關係型別。

  • 屬性

屬性是用於描述節點和關係特性的名稱 - 值

對。 如一個使用者,具有屬性:使用者名稱 - Gods_Dusk,使用者 ID - 812252。

  • 路徑與遍歷

在圖中,查詢過程是路徑搜尋與遍歷的過程,如 “Gods_Dusk 寫過哪些課?”,為了獲得答案,就需要先從圖中找到使用者名稱為 Gods_Dusk 的節點,然後找到型別為撰寫的關係,這些關係的出節點就是答案,在這裡路徑的搜尋長度為 1。而問題“Gods_Dusk 寫過的課程都是屬於哪些型別?”的搜尋長度為 2。

Neo4j 安裝與使用

如果你使用的是個人環境,可以在Neo4j官網中下載對應作業系統的安裝包。Windows 和 Mac 系統下有對應的桌面應用,可以直接下載安裝。Linux 系統下需要下載壓縮包,解壓後進入 bin 目錄啟動程式。

如果你在使用藍橋雲課學習相關課程,環境中已經安裝了 Neo4j,無需下載可以直接使用,而且是免費的,在學程式設計的同學不妨試試。

啟動 Neo4j

開啟終端,輸入

sudo neo4j start

即可啟動 Neo4j 服務。

同時輸入:

sudo neo4j status

可以檢視 Neo4j 的啟動情況。

開啟瀏覽器,在位址列輸入 localhost:7474,就可以開啟 Neo4j Browser(若網頁提示連線失敗,請等待片刻後再重新整理網頁)。Neo4j Browser 是 Neo4j 資料庫面向開發人員的工具,允許開發人員執行查詢語句並可視化結果。

首次進入 Neo4j Browser 時需要重置密碼,系統預設密碼為 neo4j,我們將它修改為lanqiao,當然你可以隨意設定。

資料遷移

Neo4j 提供了 neo4j-admin 來進行資料的匯入匯出,在遷移之前,需要停止 Neo4j 服務。

資料匯入

# 下載其他已匯出的 Neo4j 資料
wget https://labfile.oss.aliyuncs.com/courses/4043/graph.db.dump
# 停止 Neo4j 服務
sudo neo4j stop
# 匯入到本地資料庫中
sudo neo4j-admin load --from=graph.db.dump --database=graph.db --force
# 啟動 Neo4j 服務
sudo neo4j start

資料匯出

# 停止 Neo4j 服務
sudo neo4j stop
# 匯出資料到本地 /home/shiyanlou/Code 目錄下
sudo neo4j-admin dump --database=graph.db --to=/home/shiyanlou/Code
# 啟動 Neo4j 服務
sudo neo4j start

Neo4j Browser

Neo4j Browser 中有 3 個模組,側邊欄,Cypher 編輯器與結果欄,在進入 Neo4j Browser 時結果欄會展示歡迎介面。

Cypher 編輯器

Cypher 是 Neo4j 資料庫的查詢語言, Cypher 編輯器則用於輸入和執行 Cypher 語句。

在 Cypher 編輯器右側有三個按鈕。

其功能分別是:

儲存收藏輸入框中的 Cypher 語句。
清除輸入框中的 Cypher 語句。
執行輸入框中的 Cypher 語句,若語句只有一行,則可以用回車鍵作為快捷鍵。

側邊欄

側邊欄包含一組按鍵,用於資料瀏覽和環境設定。從上至下分別是:

資料庫資訊
資料庫資訊一欄提供了當前圖資料庫概覽,並展示當前使用者的角色和 Neo4j 版本資訊。

在資料匯入一節,我們從其他資料庫中匯入了一些資料,所以在點選資料庫資訊展示按鈕時,可以展示資料庫中具體統計內容,如下圖所示:

Node Labels:展示資料庫中節點數量與節點型別,在這裡一共 8 個節點,節點型別有 Course,User,Teacher,Challenge 和 Category。

Relationship Types:展示資料庫中關係數量與關係型別,在這裡一共 7 個關係,關係型別有 WRITE,BELONGS,PARTICIPATE。

Property Keys:展示資料庫中節點與關係的屬性名,在這裡屬性名有 name,courseId,workingTime,userId,rank。

Connected as:顯示當前使用者資訊,若當前使用者為管理員,則還可以進行成員管理操作。

DBMS:顯示 Neo4j 的版本與系統資訊。

單擊節點、關係、屬性中顯示的任何一個標籤,Neo4j 會執行一個快捷查詢,並在結果欄視覺化查詢結果。

收藏夾
收藏夾用於收藏 Cypher 命令,同時允許使用者下載收藏的語句到本地和上傳本地語句。

文件
Neo4j Browser 中直接內嵌了官方文件,點選相應標題就可以跳轉到對應的官方文件。

資料庫遠端同步
清空本地資料庫,與雲端資料庫同步。

設定
瀏覽器設定可對網頁 UI,結果圖形視覺化進行相關的配置。

Neo4j 相關資訊
顯示關於 Neo4j 的相關資訊,包括版本號、許可證、社群以及致謝。

結果欄

Neo4j Browser 以結果幀的方式,在結果欄儲存每一次執行結果,允許使用者直接在結果幀中進行查詢後的操作。

以點選側邊欄中節點 User 為例,在一個結果幀中,上方左側記錄了執行的 Cypher 語句 MATCH (n:User) RETURN n LIMIT 25,點選後會在 Cypher 編輯器中顯示該語句,方便使用者修改和複用。

結果幀下方的結果檢視分別有:

圖檢視
以圖的形式顯示結果,並允許配置節點、邊、文字的顯示風格(如顏色,大小,顯示的屬性),同時圖檢視允許使用者對結果中的圖進行拖動,隱藏和二次查詢操作。在點選圖中節點和邊時,檢視的下邊欄會顯示對應節點和邊的屬性,其中 <id> 是 Neo4j 生成的自增主鍵。

圖檢視並不會始終出現在結果幀中,只有當查詢結果可以表示為圖時,才會有圖檢視。

表檢視
以 JSON 格式顯示結果。

文字檢視
以純文字表格的形式顯示結果。

程式碼檢視
顯示提交的請求,Neo4j 伺服器版本和地址,以及響應結果。

總結

以上是 Neo4j 的簡介,通過上文的學習我們初步接觸了圖資料庫,Neo4j 及 Cypher 的基本概念,實踐了對 Neo4j 的 啟動,停止和資料遷移,使用和檢視 Neo4j Browser 等基本操作。
希望大家再接再厲,早日熟練運用Neo4j!
參考資料

如果你覺得這篇文章有用就點個贊吧!