Neo4j 的使用說明(一)(基於V3.4.9)
下一篇(二):https://www.cnblogs.com/infoo/p/11947467.html
一、Neo4j簡介
Neo4j是一個高性能的,NOSQL圖形數據庫,它將結構化數據存儲在網絡上而不是表中。它是一個嵌入式的、基於磁盤的、具備完全的事務特性的Java持久化引擎,但是它將結構化數據存儲在網絡(從數學角度叫做圖)上而不是表中。
Neo4j也可以被看作是一個高性能的圖引擎,該引擎具有成熟數據庫的所有特性。程序員工作在一個面向對象的、靈活的網絡結構下而不是嚴格、靜態的表中——但是他們可以享受到具備完全的事務特性、企業級的數據庫的所有好處。(摘自百度百科)
Neo4j當前有:Enterprise Server, Community Server
當前的最新穩定版為3.4.9 (2018年10月)
同時也提供了桌面操作管理工具:Neo4j Desktop(需要激活碼)
本文從Neo4j的下載,安裝,和Cypher簡單使用。介紹一下Neo4j的入門
二、Neo4j的安裝
因條件限制以在win10 上安裝Community Server 為例
1、官網下載
相應版本https://neo4j.com/download-center/#releases
速度可能會較慢;
( 下載頁面提示默認的用戶名和密碼均為neo4j )
可到http://we-yun.com/index.php/blog.html 找到網盤地址
可能不會是最新版
2、下載完成后,解壓即可
如果為了方便更改dbms.directories.data的值,不建議進行安裝環境變量;dbms.directories.data 后面介紹
3、啟動neo4j
在neo4j 的目錄下面打開cmd, 輸入neo4j.bat console
出現下圖則啟動成功
最后一行的警告是通過瀏覽器訪問localhost:7474 的輸出日志信息,具體的原因尚不清楚,但目前並不影響正常使用
當關閉該cmd 窗口時,neo4j 服務也會關閉;因此可通過下面操作將其安裝為服務。
非最新版或非官網下載可能會出現安裝失敗;
解決方案可參考https://blog.csdn.net/weixin_42103075/article/details/80473283
因此建議從官網下載最新穩定版
卸載服務使用 neo4j uninstall-service
以下相關的服務操作 bin\neo4j start
bin\neo4j stop
bin\neo4j restart
bin\neo4j status
也可使用win10自帶的服務管理界面來進行啟動等操作
4、通過localhost:7474訪問
會出現下面界面(首次會出現登錄頁面)
5、測試:創建、查詢和刪除一個節點
創建一個標簽為Person的節點,其有屬性 name 和age
查詢一個節點
刪除一個節點
上述僅僅是簡單的創建、查詢和刪除節點的Cypher 語句;
詳情請查閱相關的Cypher文檔
6、測試:創建、查詢和刪除關系
1)先創建三個節點:
create(:Person{name:"a"}),(:Person{name:"b"}),(:Person{name:"c"})
2)為其中的兩個頂點添加邊:
match (n:Person{name:"a"}),(m:Person{name:"b"}) create (n)-[:R{type:"朋友"}]->(m)
或:match(n),(m) where n.name=”a” and m.name=”b” create (n)-[:R{type:"朋友"}]->(m)
其基本思想是先找到要添加邊的兩個頂點,再為其創建邊
上述兩種方式是有缺陷的,因為有可能查出來不止一個節點,那么就會為許多匹配的節點都添加邊
上圖出現了警告
因此一般我們再創建新節點的時候就要創建邊
例如:
create (n:Person{name:"d"}),(m:Person{name:"e"}) create (n)-[:R{type:"父子"}]->(m)
或:create (n:Person{name:"f"})-[r:R{type:"朋友"}]->(m:Person{name:"g"})
使用 return 語句,返回創建結果視圖
3)刪除關系(包含關系的查詢)
match (n:Person{name:"f"})-[r:R{type:"朋友"}]->(m:Person{name:"g"}) delete r [該方式已過時不推薦使用]或
match p=(n:Person{name:"d"})-[:R*1..2]->(m:Person{name:"e"}) delete p [推薦使用該語句]
說明:
第二條里面的*1..2 查詢的路徑長度,最小為1,最大為2的關系為R的路徑
在刪除關系之前要先查詢到該關系;
上述是簡單的Cypher實現,當然還有其它寫法;
可參考官方文檔學習 :
https://neo4j.com/docs/developer-manual/current/cypher/
7、基本的思想
Cypher 語句是Neo4j圖形數據庫的查詢語言
基本思想需要掌握的是:頂點的表示 (n)
關系(邊)的表示 (n)-[r]->(m)
這里的n r m可以看作是變量
詳細的語法可參考
https://neo4j.com/docs/developer-manual/current/cypher/syntax/patterns/#cypher-pattern-varlength
Cypher 內容豐富,與SQL 類似,同樣包含諸多函數等;基本上能滿足各種需求。因時間關系,未能一一學習了解
三、Neo4j的使用方式
- 基於瀏覽器的可視化,使用Cypher語句進行相關操作
- 基於Java 等編程語言的API 操作
四、基於Neo4j Native Java API 的應用介紹
相關代碼放在https://github.com/infoo/Neo4j
1、使用Java Api 進行相關的增刪改查操作
若無可視化需求,可以在不安裝neo4j server 的情況下使用Neo4j,只需要導入Neo4j的jar包即可
<dependency>
<groupId>org.neo4j</groupId>
<artifactId>neo4j</artifactId>
<version>3.4.9</version>
</dependency>
2、使用Java Api 執行 Cypher語句進行相關的增刪改查操作