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!
參考資料
如果你覺得這篇文章有用就點個贊吧!