用Neo4j圖形數據庫打造專屬於你的高bigger關係圖

寫在前面(廢話篇):

填個坑,系統全部做完做一個畢設專題。

這篇文章在我的草稿箱裏蹲了兩個月。最近畢設答辯結束,有角度的時間來填個坑。在這裏插入圖片描述
因爲本科沒有學過數據庫課程(學院不讓我們專業修這門課),所以在做畢業設計涉及數據庫的內容一概不知。研究能力較差的我重新學一遍數據庫實在來不及,就選擇了這上手簡單,增刪改查一應俱的可視化圖形數據庫。

一、Neo4j可視化圖形數據庫簡介

百度百科上對於neo4j解釋如下圖。說的很官方是不是?看不懂是不是?

通俗的來說就是這是一個不需要你自己設計的數據庫,通過採用結構化設計方式,把各種信息存儲在圖形中的一個個點上,而不是傳統意義上的表格中。
同時展示方面採用圖的簡單直觀可視化效果。相對於冷冰冰的表格數據,圖形顯得更加有血有肉。
在這裏插入圖片描述

二、下載與安裝

neo4j下載
官網下載比較慢,是我電腦的問題嗎?

或者直接把安裝包上傳資源中(點我傳送)(更新:這個解壓包有問題,直接從百度網盤下載吧!)

不想給樓主貢獻金幣的話可以點我從百度網盤中下載。(提取碼:ruat,失效的話可以聯繫我)

下載解壓之後,傻瓜式安裝。

注意:一定要找一個簡單合適的文件夾存入。否則後期啓動neo4j時,在cmd打開文件夾都需要多點幾下。例如,我存在 D:\neo4j 文件夾下

二、配置與使用

因爲neo4j是一站式安裝,所以在我印象中並沒有設置什麼環境變量。

安裝完成之後打開cmd,進入到安裝neo4j文件夾bin目錄下。以自己的爲例進入到 D:\neo4j\neo4j-community-3.5.5\bin 之後輸入以下內容如圖。
在這裏插入圖片描述
cmd中提示“Neo4j service started”,就代表我們已經把neo4j啓動完成。

可以打開瀏覽器輸入

http://localhost:7474/browser/

進入到neo4j數據庫中。
在這裏插入圖片描述
準備完成之後可以進入到下一步。

三、使用方法

知己知彼,方能百戰百勝

前期工作做好之後,我們就要開始慢慢了解怎麼使用他。

科普內容(非計算機專業建議看一下):

計算機專業離散必修課中有很重要的一個知識點:

定義: 圖是由頂點的有窮非空集合和頂點之間邊的集合組成, 通常表示爲: G(V,E), 其中,G表示一個圖,V是圖G中頂點的集合,E是圖G中邊的集合。

不喜歡官方說法的同學,我給降維到貓貓水平解釋下。
在這裏插入圖片描述
圖片中一共有三個點(V1、V2、V3)和兩條邊(E1、E2),整體看做爲一個圖G。這個圖是由三個點和兩條邊構成。以上就可以看做一個簡單圖的構成。

如果把V1、V2、V3比作人物的話,E1、E2就可以當做人物間的聯繫。

V1:大雄
V2:靜香
V3:哆啦A夢

E1:好朋友
E2:同學(未來可妻)

那麼,我們就可以得到以下這種關係。
在這裏插入圖片描述
上面這樣的圖大家是不是很清晰的瞭解到這三個人物之間的關係呢?
如果無感的,那下面這種感覺對比一下。哪個圖片更加直觀有效。在這裏插入圖片描述

因爲以上數據太少,可能比較不明顯。
來一個比較極端的,以下表格有三萬多條數據,光看錶格是在費勁。

在這裏插入圖片描述
使用圖形式的來展示人物之間的關係,是不是就相對直觀很多。
在這裏插入圖片描述

以下內容以三國舉例。
在neo4j頁面的執行框中寫入Cypher語句,不熟悉這種語言的同學可以參考以下模板舉一反三。

1、創建節點(增)

1.1 創建單個節點

create (:person{name:"孫權"})

這條語句直接創建了孫權節點,即上圖中的圈圈。
在這裏插入圖片描述

1.2 創建兩個節點

與之相對應的是同時創建兩個節點並建立兩者關係

create (:person{name:"周瑜",age:25})-[:夫妻]->(:person{name:"小喬",age:20});

在這裏插入圖片描述
建立成功。

備註:
從上述語句中,給讀者解釋一下。
( ):中間的內容代表節點
{ }:中間的內容代表屬性
[ ]:中間內容代表關係

以上均是英文字符。

2、查找節點(查)

剛剛建立的節點怎麼樣才能找到呢?

return (:person{name:"周瑜"})-->();

如圖
在這裏插入圖片描述
這樣我們就能查找到周瑜節點,同時數據庫中也會自動匹配出與之建立關係的節點。

如果想查多重層數的關係可以自行深入學習,這裏不做過於深入的探討。

3、匹配關係(增、找)

什麼叫關係?得先有兩個實體,兩種實體之間存在着某種聯繫可以稱爲關係。虹貓和藍兔有關係,我和三舅媽的鄰居表弟同學媽媽的三姨母的女兒有聯繫嗎?估計沒有。

同樣,想要建立聯繫,首先要建立兩個節點纔有可能建立關係。

3.1 同時建立節點和關係

這個寫法見本文1.2

3.2 直接匹配關係

這種情況是建立在已有的兩個節點。

此時數據庫已經有孫權,周瑜,小喬的關係了。我可以匹配孫權和周瑜的關係,沒問題。但是我要是想建立孫權和大喬的關係可以嗎?

當然不行!!! 因爲數據庫中還沒有建立大喬的節點,此時建立關係,會直接報錯。

match (a:hperson{name:"孫權"}) match (b:person{name:"周瑜"}) create (a)-[r:基友]->(b) return r;

在這裏插入圖片描述

此時在查找周瑜的節點:
在這裏插入圖片描述因爲我在周瑜與孫權建立了雙向關係,

match (a:hperson{name:"孫權"}) match (b:person{name:"周瑜"}) create (a)<-[r:基友]-(b) return r;

仔細看看這句話和上一條語句有什麼不同?

此時已經有了三個節點和兩條關係。

試錯:如果硬把大喬和孫權建立關係,數據庫會給出以下提示。
在這裏插入圖片描述

四、高級用法

以上內容均是小打小鬧,手動建立節點和關係也太過兒戲。

現代的數據以萬爲計數單位都算是小的不能再小了。

現在有一個表格的數據,裏面包含着幾十萬條關係,甚至百萬千萬,手動建立匹配就有點說不過去了吧!

現在介紹一下手動和自動兩種方式導入數據庫中。

4.1 手動導入

首先我們規定下數據存儲格式。

以csv文件爲例。我們需要一個表格包含人物節點的內容(nodes.csv),另一個表格包含人物間關係的內容(relations.csv)。

表格來源gayhub,初學時這篇文章對我幫助很大,感謝大佬分享。

節點表格(nodes.csv):
在這裏插入圖片描述
關係表格(relations.csv):
在這裏插入圖片描述

把兩個csv文件放入 D:\neo4j\neo4j-community-3.5.5\import 目錄下,之後在neo4j頁面執行框內輸入

LOAD CSV  WITH HEADERS FROM 'file:///nodes.csv' AS data CREATE (:star{starname:data.name, starid:data.id});

LOAD CSV  WITH HEADERS FROM "file:///relations.csv" AS relations

MATCH (entity1:star{starname:relations.subject}) , (entity2:star{starname:relations.object})

CREATE (entity1)-[:relation{relation: relations.relation}]->(entity2)

然後所有數據瞬間導入數據庫中,速度就是那麼快。

4.2 自動導入

這個需要有好幾種方法,埋個坑,有興趣瞭解的同學可以留言評論或私信我都可。

最後上個簡單的效果圖吧。

在這裏插入圖片描述

在這裏插入圖片描述

收工,洗洗睡去了。

對了, 感興趣的小夥伴可以關注我的個人公衆號:小惑有觀察。現在開始恢復更新。
個人公衆號

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章