日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

neo4j——图数据库初探 - JDream314的专栏 - 博客频道 - CSDN.NET

發布時間:2025/3/21 asp.net 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 neo4j——图数据库初探 - JDream314的专栏 - 博客频道 - CSDN.NET 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

neo4j——圖數據庫初探 - JDream314的專欄 - 博客頻道 - CSDN.NET

圖數據庫neo4j初探(下載地址:http://neo4j.org/ )

本篇將初步介紹一下圖數據庫neo4j,將分一下幾點介紹:什么是neo4j、neo4j作用、neo4j用法簡單介紹

1、什么是neo4j

?

neo4j是一種圖數據庫,同時它也是一種嵌入式數據庫。它對圖數據是以節點和邊(關系)模式進行存儲。每個節點可以包含一系列信息,通過Node類里面的setProperty()方法對節點信息進行存儲,Node也可以使用createRelationshipTo()方法實現個節點和其他節點的聯系,并且該方法返回的是一個Relationship對象,我們也可以對Relationship設置屬性,也就是節點和節點之間的關系屬性。什么叫關系屬性?例如:person1àperson2,person1和person2的關系可以是朋友也可以是同學還可以是親人,這里的朋友、同學、親人就是這里的Relationship的屬性。那么關系屬性就是描敘兩個節點之間的關系類型。這就方便在對節點進行查找的時候對節點進行過濾。如下圖:

2、neo4j作用

上面對neo4j進行了簡單的介紹,可知neo4j是一種對圖數據進行存儲,是一種嵌入式數據庫。它可以將復雜的圖數據以節點和邊形式存儲。例如:在我們現實社會中人與人之間的關系,這就是一個復雜的圖,朋友也可以是多種多樣的,怎樣描敘這樣復雜的圖呢?Neo4j提供了比較簡單的描敘方式。如圖:

?

就上面的圖可以根據neo4j提供的方法獲取第一層朋友和第二層朋友:?? TraversalDescriptiontd = Traversal.description().breadthFirst().relationships(RelTypes.KNOWS, Direction.OUTGOING).filter(Traversal.returnAllButStartNode() );??? 上面的代碼所執行的是:同個一個事務獲取一個事務描敘,然后根據這個事務描敘在一存儲的圖中過濾出我們想要的節點,這個事務描敘第一個是進行廣度優先搜索(breadthFirst),接下類對節點關系進行過濾。Direction是指定關系的方向,RelTypes就是關系的類型。這樣就可以獲得相應的結果。

3、neo4j用法簡單介紹

?

此處就neo4j的一個例子進行講解(如圖):

?

上面圖是一個部門結構圖,這個在我們現實生活中也是比較常見的。如:我們學校,它就是一個由各個部門構成的。如何對這種圖進行查找,以獲得我們想要的信息呢?

1)、獲得各個部門的名:

TraversalDescription td =Traversal.description().breadthFirst().relationships(RoleRels.ROOT, Direction.INCOMING).relationships(RoleRels.PART_OF, Direction.INCOMING).filter(Traversal.returnAllButStartNode());

2)、獲得所有的admin

TraversalDescription td =Traversal.description().breadthFirst().relationships(RoleRels.PART_OF, Direction.INCOMING).relationships(RoleRels.MEMBER_OF, Direction.INCOMING).filter(Traversal.returnAllButStartNode() );

?3)、更具個人信息獲得他所在的所有部門

? Node jale = getUserByName(?"Jale"?);

?TraversalDescription td = Traversal.description().depthFirst().relationships(RoleRels.MEMBER_OF, Direction.OUTGOING).relationships(RoleRels.PART_OF, Direction.OUTGOING).filter(Traversal.returnAllButStartNode() );

?附錄:

?neo4j還提供了兩種遍歷的方式:一種是深度搜索,第二種是廣度搜索。也提供了兩種搜索算法,一種是A*算法,第二種是dijkstra算法。提高了編程人員的工作效率。同時neo4j也有簡歷索引的功能,方便了多節點的查找。

謝謝瀏覽!本篇到此 結束!

總結

以上是生活随笔為你收集整理的neo4j——图数据库初探 - JDream314的专栏 - 博客频道 - CSDN.NET的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。