圖形資料庫之Neo4j學習(一)
最近工作需要使用圖形資料庫來構建知識圖譜,目前基於Java使用最廣泛的有兩個開源框架
(1) neo4j
社群版 免費
企業版 收費
(2) Titan
全開源
我們此次選擇了neo4j的社群版,主要是專案緊,neo4j比較穩定,Titan可能比較新,雖然Titan肯定是未來的主流,我個人是看好Titan的,Neo4j沒法儲存巨大的一張關係圖 ,因為他不支援分片,而Titan是天生分散式的,可以構建在Hbase,Cassandra之上外加+ES或者Solr儲存索引,非常強大,再此不在過多 對比兩個圖形資料庫的優缺點,後面有機會再來專門寫文章敘述。
什麼是圖形資料庫?
圖形資料庫(Graph Database)是利用計算機將點、線、畫霹圖形基本元素按一定資料結同造型儲存的資料集合。
最早應該使用在社交場景,比如QQ的幾度空間關係圖,除了社交應用之外,圖資料庫同很多應用可以工作。很多應用可以自然擴充套件使用圖形型別的關係。比如,好多內嵌在社交應用中的推薦系統常常都是基於圖形的系統。圖資料庫由一系列結點和邊界組成;每一個結點代表了一個實體,每一個邊界代表了兩個結點之間的一種連線或者關係。
Neo4j的安裝
本次方便快速開發測試,安裝平臺是在Windows上。
選擇版本下載
下載後,解壓到某個碟符下面,我這裡用的最新的的版本,需要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 登入之後需要修改
在頁面最上面的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)
然後檢視關係圖如下:
至此,已經入門了,後面會記錄neo4j的概念,配置,cyper查詢語法,以及neo4j的java整合使用 , jdbc使用等等
有什麼問題可以掃碼關注微信公眾號:我是攻城師(woshigcs),在後臺留言諮詢。
技術債不能欠,健康債更不能欠, 求道之路,與君同行。