資安

什麼是Neo4J?

本文來自於千鋒教育在阿里雲開發者社區學習中心上線課程《SpringBoot實戰教程》,主講人楊紅豔,點擊查看視頻內容

Neo4J介紹及安裝

Neo4j是一個高性能的,NOSQL圖形數據庫,它是一個嵌入式的、基於磁盤的、具備完全的事務特性的Java持久化引擎,但是它將結構化數據存儲在網絡(從數學角度叫做圖)上而不是表中。Neo4j也可以被看作是一個高性能的圖引擎,該引擎具有成熟數據庫的所有特性。

這種數據庫與傳統的關係型數據庫有很大的差別。為了更好地幫助大家理解,來將關係型數據庫與圖形數據庫作個比較。
關係型數據庫:
我們常用的像mysql,oracle等都是關係型數據庫,在關係型數據庫裡面對數據的處理是這樣子的:對每個對象都創建一個表,對象的屬性對應表裡面的列
image.png
如圖所示。在數據庫裡有條數據表示兩個對象:tim,lili。在現實生活中我們會發現任何對象都是有某種聯繫的,那麼關係型數據庫裡是怎樣來表示這種關係呢?就比如tim和lili是好朋友,那麼在數據庫裡怎樣來表示他們的關係呢?關係型數據庫裡面是 這樣處理的——新建一個叫relationship的表,表裡面有兩個字段id,friendid。
image.png
如圖所示。如果我們要查找tim的朋友那麼我們可以遍歷relationship表就可以了。
這種數據模型會有什麼問題呢?其實我們可以對這個數據模型提個問題——tim的朋友的朋友的朋友的朋友是誰?關係型數據會這樣回答你的問題:首先在relationship表裡面找到所有id為1(tim的id)的數據,然後拿到對應的friendid,接著逐個根據friendid再進行遍歷找到對應的friendid,如此反覆地遍歷查詢......
也許10分鐘也許一小時,也許它永遠都無法回答你的問題。
其實,這種關係只要超過5級關係型數據庫就無法解決問題,這就是為什麼需要圖形數據庫的出現了。
圖形數據庫:
在圖形數據庫裡面對數據的處理是這樣子的:每個對象都表示成為一個節點(node),每個節點之間的聯繫表示成關係(relationship),節點與節點之間用關係關聯在一起。我們可以看圖更好理解一點。
image.png
如圖所示,有三個節點(node)它們都通過FRIEND關係(relationship)關聯起來。Tim的朋友是lili,lili跟jack互為朋友,同時jack認識tim。在圖形數據庫裡要回答像“tim的朋友的朋友的朋友”的問題非常簡單,數據庫只需要找到tim的關係(relationship)所對應的節點然後找到對應節點的關係(relationship),只需遍歷幾次,這樣就可以很容易回答了上面的問題了。

安裝

1、官網下載windows環境下的安裝包
2、解壓,比如目錄為E:neo4j
3、設置環境變量
變量名:NEO4J_HOME
變量值:E:neo4j
再修改變量path,增加%NEO4J_HOME%bin
4、查看並編輯配置參數
%NEO4J_HOME%confneo4j.conf
5、啟動
在DOS命令行窗口,執行:neo4j.bat console
image.png
出現此界面,證明可以正常啟動。
6、 打開neo4j集成的瀏覽器
http://localhost:7474/
第一次打開需要登錄。默認的登錄名和密碼都是:neo4j
image.png

使用Cypher語言:Cypher是專門為圖像數據庫設計的語言,它淺顯易懂。舉個例子,假如要創建這麼一個數據模型——好友A與好友B是朋友關係,好友B與C也是朋友關係,好友A認識C但C不認識A——這樣的數據模型用Cypher描述如下:

create (A:Person{name:'jack'})-[:Friend]->(B:Person {name:'tom'})-[:Friend]->(C:Person {name:'lucy'}), (A)-[:Know]->(C)

(注:()裡面的是節點,[]裡面的是關係,{}裡的是屬性, >表示關係的方向)

要查詢A的一個名叫”tom”的朋友:

match (a)-[:Friend]->(b)
where b.name='tom'
return b

配套視頻

Leave a Reply

Your email address will not be published. Required fields are marked *