1. 程式人生 > >圖形資料庫之Neo4j學習(一)

圖形資料庫之Neo4j學習(一)

image

最近工作需要使用圖形資料庫來構建知識圖譜,目前基於Java使用最廣泛的有兩個開源框架

(1) neo4j

社群版 免費

企業版 收費

(2) Titan

全開源

我們此次選擇了neo4j的社群版,主要是專案緊,neo4j比較穩定,Titan可能比較新,雖然Titan肯定是未來的主流,我個人是看好Titan的,Neo4j沒法儲存巨大的一張關係圖 ,因為他不支援分片,而Titan是天生分散式的,可以構建在Hbase,Cassandra之上外加+ES或者Solr儲存索引,非常強大,再此不在過多 對比兩個圖形資料庫的優缺點,後面有機會再來專門寫文章敘述。

什麼是圖形資料庫?

圖形資料庫(Graph Database)是利用計算機將點、線、畫霹圖形基本元素按一定資料結同造型儲存的資料集合。

最早應該使用在社交場景,比如QQ的幾度空間關係圖,除了社交應用之外,圖資料庫同很多應用可以工作。很多應用可以自然擴充套件使用圖形型別的關係。比如,好多內嵌在社交應用中的推薦系統常常都是基於圖形的系統。圖資料庫由一系列結點和邊界組成;每一個結點代表了一個實體,每一個邊界代表了兩個結點之間的一種連線或者關係。

Neo4j的安裝

本次方便快速開發測試,安裝平臺是在Windows上。

選擇版本下載 image

下載後,解壓到某個碟符下面,我這裡用的最新的的版本,需要JDK8支援,這一點需要注意下 ,JDK8我已經安裝,下載解壓後,需要先配置Neo4j的環境變數:

NEO4J_HOME = E:\2016
\neo4j-community-3.0.6 然後PATH裡面加入:%NEO4J_HOME%\bin 如果是Liunx: NEO4J_HOME=/home/search/neo4j export CLASSPATH=$CLASSPATH:NEO4J_HOME/lib export PATH=$PATH:$NEO4J_HOME/bin

開啟cmd視窗後,切到neo4j根目錄,執行:

neo4j.bat會給出下面的幾個引數提示

start
stop
console
restart
status
install-service
uninstall-service
Verbose

然後我們執行

neo4j.bat
console

以控制檯方式啟動,方便除錯開發

啟動之後,在瀏覽器訪問http://localhost:7474

預設的使用者名稱和密碼是neo4j neo4j 登入之後需要修改 image

在頁面最上面的cypher的執行器裡面,插入一些資料:

CREATE 
 (p1:Person {name:'胡興炯', born:1991, interest:'mac,ios,旅遊', goodat:'java,swift,objectiveC'}),
 (p2:Person {name:'張勇', born:1990,  interest:'android', goodat:'java,android'}),
 (p3:Person {name:'成文龍', born:1990, interest:'linux,hadoop', goodat:'linux,java,android'}),
 (p4:Person {name:'王昕', born:1978, interest:'wpf,noSQL,旅遊', goodat:'java,c#'}),
 (p5:Person {name:'周開琪', born:1977 , interest:'管理', goodat:'管理,'}),
 (p6:Person {name:'徐錦亮', born:1985,  interest:'前端', goodat:'前端,html5,hadoop'}),
 (p6:Person {name:'張三', born:1993,  interest:'大資料', goodat:'hadoop,html5,java,lucene,elasticsearch,solr'}),
 (p8:Person {name:'徐輝霞', born:1990,  interest:'管理,旅遊', goodat:'管理,採購'}),
 (p9:Person {name:'黃廷鵬', born:1992,  interest:'OA', goodat:'java'}),
 (p10:Person {name:'史樂樂', born:1991,  interest:'OA,旅遊', goodat:'管理'}),
 (p1)-[:認識]->(p2),
 (p1)-[:認識]->(p3),
 (p1)-[:認識]->(p4),
 (p1)-[:認識]->(p5),
 (p1)-[:認識]->(p9),
 (p2)-[:認識]->(p1),
 (p2)-[:認識]->(p3),
 (p2)-[:認識]->(p4),
 (p2)-[:認識]->(p5),
 (p2)-[:認識]->(p9),
 (p3)-[:認識]->(p1),
 (p3)-[:認識]->(p2),
 (p3)-[:認識]->(p4),
 (p3)-[:認識]->(p5),
 (p3)-[:認識]->(p7),
 (p4)-[:認識]->(p1),
 (p4)-[:認識]->(p2),
 (p4)-[:認識]->(p3),
 (p4)-[:認識]->(p5),
 (p4)-[:認識]->(p9),
 (p5)-[:認識]->(p1),
 (p5)-[:認識]->(p2),
 (p5)-[:認識]->(p3),
 (p5)-[:認識]->(p4),
 (p5)-[:認識]->(p6),
 (p5)-[:認識]->(p8),
 (p5)-[:管理]->(p1),
 (p5)-[:管理]->(p2),
 (p5)-[:管理]->(p3),
 (p5)-[:管理]->(p4),
 (p5)-[:管理]->(p6),
 (p6)-[:認識]->(p5),
 (p6)-[:認識]->(p4),
 (p6)-[:夫妻]->(p8),
 (p9)-[:認識]->(p1),
 (p9)-[:認識]->(p2),
 (p9)-[:認識]->(p3),
 (p9)-[:認識]->(p10),
 (p9)-[:喜歡]->(p10),
 (p10)-[:認識]->(p9),
 (p10)-[:同事]->(p7)

然後檢視關係圖如下: image

至此,已經入門了,後面會記錄neo4j的概念,配置,cyper查詢語法,以及neo4j的java整合使用 , jdbc使用等等

有什麼問題可以掃碼關注微信公眾號:我是攻城師(woshigcs),在後臺留言諮詢。 
技術債不能欠,健康債更不能欠, 求道之路,與君同行。