MATCH (n:Device) <-[r:BINDDEVICE] - (m:User) where n.deviceId = "yp_waigu" return count(m)
node
Neo4j是一個嵌入式,基於磁盤的,支持完整事務的Java持久化引擎,它在圖(網絡)中而不是表中存儲數據。算法
Neo4j提供了大規模可擴展性,在一臺機器上能夠處理數十億節點/關係/屬性的圖,能夠擴展到多臺機器並行運行。相對於關係數據庫來講,圖數據庫善於處理大量複雜、互鏈接、低結構化的數據,這些數據變化迅速,須要頻繁的查詢——在關係數據庫中,這些查詢會致使大量的錶鏈接,所以會產生性能上的問題。數據庫
Neo4j重點解決了擁有大量鏈接的傳統RDBMS在查詢時出現的性能衰退問題。經過圍繞圖進行數據建模,Neo4j會以相同的速度遍歷節點與邊,其遍歷速度與構成圖的數據量沒有任何關係。數組
此外,Neo4j還提供了很是快的圖算法、推薦系統和OLAP風格的分析,而這一切在目前的RDBMS系統中都是沒法實現的。
網絡
Neo4j 中最基本的概念是節點(node)和關係(relationship)。性能
節點表示實體,由org.neo4j.graphdb.Node
接口來表示。在兩個節點之間,能夠有不一樣的關係。code
關係由org.neo4j.graphdb.Relationship
接口來表示。每一個關係由起始節點、終止節點和類型等三個要素組成。起始節點和終止節點的存在,說明了關係是有方向,相似於有向圖中的邊。不過在某些狀況,關係的方向可能並無意義,會在處理時被忽略。全部的關係都是有類型的,用來區分節點之間意義不一樣的關係。在建立關係時,須要指定其類型。關係的類型由 org.neo4j.graphdb.RelationshipType
接口來表示。接口
節點和關係均可以有本身的屬性。每一個屬性是一個簡單的名值對。屬性的名稱是 String
類型的,而屬性的值則只能是基本類型、String
類型以及基本類型和 String
類型的數組。一個節點或關係能夠包含任意多個屬性。事務