本文來自于千鋒教育在阿裡雲開發者社群學習中心上線課程《SpringBoot實戰教程》,主講人楊紅豔,
點選檢視視訊内容。
Neo4J介紹及安裝
Neo4j是一個高性能的,NOSQL圖形資料庫,它是一個嵌入式的、基于磁盤的、具備完全的事務特性的Java持久化引擎,但是它将結構化資料存儲在網絡(從數學角度叫做圖)上而不是表中。Neo4j也可以被看作是一個高性能的圖引擎,該引擎具有成熟資料庫的所有特性。
這種資料庫與傳統的關系型資料庫有很大的差别。為了更好地幫助大家了解,來将關系型資料庫與圖形資料庫作個比較。
關系型資料庫:
我們常用的像mysql,oracle等都是關系型資料庫,在關系型資料庫裡面對資料的處理是這樣子的:對每個對象都建立一個表,對象的屬性對應表裡面的列
如圖所示。在資料庫裡有條資料表示兩個對象:tim,lili。在現實生活中我們會發現任何對象都是有某種聯系的,那麼關系型資料庫裡是怎樣來表示這種關系呢?就比如tim和lili是好朋友,那麼在資料庫裡怎樣來表示他們的關系呢?關系型資料庫裡面是 這樣處理的——建立一個叫relationship的表,表裡面有兩個字段id,friendid。
如圖所示。如果我們要查找tim的朋友那麼我們可以周遊relationship表就可以了。
這種資料模型會有什麼問題呢?其實我們可以對這個資料模型提個問題——tim的朋友的朋友的朋友的朋友是誰?關系型資料會這樣回答你的問題:首先在relationship表裡面找到所有id為1(tim的id)的資料,然後拿到對應的friendid,接着逐個根據friendid再進行周遊找到對應的friendid,如此反複地周遊查詢......
也許10分鐘也許一小時,也許它永遠都無法回答你的問題。
其實,這種關系隻要超過5級關系型資料庫就無法解決問題,這就是為什麼需要圖形資料庫的出現了。
圖形資料庫:
在圖形資料庫裡面對資料的處理是這樣子的:每個對象都表示成為一個節點(node),每個節點之間的聯系表示成關系(relationship),節點與節點之間用關系關聯在一起。我們可以看圖更好了解一點。
如圖所示,有三個節點(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
出現此界面,證明可以正常啟動。
6、 打開neo4j內建的浏覽器
http://localhost:7474/第一次打開需要登入。預設的登入名和密碼都是:neo4j
使用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