Neo4j的設計動機是為了更好地,更高效地描述實體之間的關系。在現(xiàn)實生活中,每一個實體都于周圍的其他實體有著千絲萬縷的關系,這些關系里面所存儲的信息甚至要大于身體本身的屬性。然后傳統(tǒng)的關系型數(shù)據(jù)庫更注重刻畫實體內(nèi)部的屬性,實體與實體之間的關系通常都是利用外鍵來實現(xiàn)。所以在求解關系的時候通常需要join操作,而join操作通常又是耗時的。圖數(shù)據(jù)庫為重點描述數(shù)據(jù)之間關系的數(shù)據(jù)庫應運而生,成為了NoSQL中非常重要的一部分。而Neo4j正是圖數(shù)據(jù)庫中最為優(yōu)秀的之一。
特點:
Neo4j支持索引,其內(nèi)部實際上通過Lucene實現(xiàn)。
Neo4j完整支持事務,即滿足ACID性質(zhì)。
免索引鄰接,用來保證關系查詢的速度。
圖算法。Neo4j實現(xiàn)的三種圖算法:最短路徑(最少數(shù)目的關系)、Dijkstra算法(解決有向圖中任意兩個頂點之間的最短路徑問題)以及A*算法(是解決靜態(tài)路網(wǎng)中求解最短路最有效的方法)。
多個Neo4J結(jié)點可以組成neo4j的Master-Slave集群
兩個基本元素,節(jié)點和關系。節(jié)點有標簽和任意多個屬性。關系,又叫圖論里面的邊,有類型和屬性。Neo4j關系被分為兩種主要類型,單向關系和雙向關系。
Neo4j使用
一.基本的增刪改查
創(chuàng)建一個節(jié)點:CREATE (n:Person{name:'Andres'});
創(chuàng)建一個邊:CREATE(a)-[r:Follow]->(b);
查詢最短路徑:MATCH(ms:Person{name:'Node A'}),(cs:Person{name:'Node B'}),p=shortestPath((ms)-[r:Follow]-(cs))RETURNp;
查詢兩個節(jié)點之間的關系:MATCH (a:Person{name:'Node A'})-[r]->(b:Person{name:'Node B'})? ? ?RETURNtype(r);
創(chuàng)建索引的語法:create index on : customer (name)
二.常用的Neo4j CQL命令如下:
S.No.CQL命令/條用法
1.CREATE 創(chuàng)建創(chuàng)建節(jié)點,關系和屬性
2.MATCH 匹配檢索有關節(jié)點,關系和屬性數(shù)據(jù)
3.RETURN 返回返回查詢結(jié)果
4.WHERE 哪里提供條件過濾檢索數(shù)據(jù)
5.DELETE 刪除刪除節(jié)點和關系
6.REMOVE 移除刪除節(jié)點和關系的屬性
7.ORDER BY以…排序排序檢索數(shù)據(jù)
8.SET 組添加或更新標簽
三.以下是常用的Neo4j CQL函數(shù):
S.No.定制列表功能用法
1.String 字符串它們用于使用String字面量。
2.Aggregation 聚合它們用于對CQL查詢結(jié)果執(zhí)行一些聚合操作。
3.Relationship 關系他們用于獲取關系的細節(jié),如startnode,endnode等。
參考鏈接,侵刪:
https://blog.csdn.net/weixin_34314962/article/details/89655551
https://blog.csdn.net/qq_41977838/article/details/123563005
https://blog.csdn.net/Dream_bin/article/details/104470275/
https://zhuanlan.zhihu.com/p/88745411?utm_source=wechat_session