本篇將介紹Neo4j的安裝,入門,和本身使用了一段時間後發現的優勢缺點,爭取簡潔和實用。html
若是你是第一次接觸Neo4j,而且以前也都沒接觸過相似的Graph Database的話,建議先瀏覽一下我以前的一篇博客:爲何選擇圖形數據庫,爲何選擇Neo4j?。畢竟應該在作一件事以前要想清楚爲何要作是吧。java
上Neo4j官網,下載community版,點擊安裝便可。很簡單沒什麼可說的。sql
既然是入門,那就從簡單開始,一步一步熟悉Neo4j。mongodb
運行Neo4j後,在瀏覽器中打開網頁:http://localhost:7474, 便可進入Neo4j的圖形操做界面,在裏面能夠直接操做數據庫,也能夠查看數據庫的狀態。數據庫
頁面頂端能夠直接寫Cypher語句並運行。右側則顯示一些數據庫的狀態以及提供一部分操做,包括:瀏覽器
Cypher是Neo4j的數據庫語言,入門的話起碼得知道增刪改查吧。session
CREATE (n:Person { name : 'Andres'});
MATCH (a:Person),(b:Person) WHERE a.name = 'Node A' AND b.name = 'Node B' CREATE (a)-[r:Follow]->(b);
MATCH (n:Person { name: 'Andres' }) SET n.name = 'Taylor';
MATCH (n:Person { name:'Andres' }) DETACH DELETE n;
MATCH (a:Person)-[r:Follow]->(b:Person) WHERE a.name = 'Andres' AND b.name = 'Taylor' DELETE r;
接着就是查詢語句了,做爲圖形數據庫,確定要來點不同凡響的查詢對吧。ide
MATCH (ms:Person { name:'Andres' }),(cs:Person { name:'Taylor' }), p = shortestPath((ms)-[r:Follow]-(cs)) RETURN p;
MATCH (a:Person { name:'Andres' })-[r]->(b:Person { name:'Taylor' }) RETURN type(r);
MATCH (:Person { name:'Taylor' })-[r:Follow]->(Person) RETURN Person.name;
還有更多的操做能夠參考官方用戶手冊:官方用戶手冊post
運行Neo4j以後,在軟件窗口能夠選擇數據庫建立位置,以後Neo4j就自動爲咱們建立好了數據庫。性能
CREATE CONSTRAINT ON (a:Person) ASSERT a.name IS UNIQUE;
CREATE INDEX ON :Person(name);
MATCH (n) RETURN count(n); MATCH ()-->() RETURN count(*);
還有更多的操做能夠參考官方用戶手冊:官方用戶手冊
Neo4j提供了數種語言的數據庫驅動,好比在java中,你能夠這樣插入一個節點:
Driver driver = GraphDatabase.driver( "bolt://localhost", AuthTokens.basic( "neo4j", "neo4j" ) ); Session session = driver.session(); session.run( "CREATE (a:Person {name:'Arthur'})" ); session.close(); driver.close();
查詢節點:
Driver driver = GraphDatabase.driver( "bolt://localhost", AuthTokens.basic( "neo4j", "neo4j" ) ); Session session = driver.session(); StatementResult result = session.run( "MATCH (a:Person) WHERE a.name = 'Arthur' RETURN a.name AS name" ); while ( result.hasNext() ) { Record record = result.next(); System.out.println( record.get("name").asString() ); } session.close(); driver.close();
使用了一段時間Neo4j,總結一下我發現的優缺點。
優勢:
缺點:
鑑於其明顯的優缺點,Neo4j適合存儲」修改較少,查詢較多,沒有超大節點「的圖數據。
另外,針對Neo4j的缺點,有一款使用混合索引的數據庫Arangodb也許是一個不錯的考慮對象。根據其官網的說明,Arangodb不只具備通常圖形數據庫的優勢,並且在各類操做的速度上領先於Neo4j。可見:原理上說明爲何Arangodb更快;Arangodb與其餘幾款數據庫的性能對比。