Neo4j是什麼?

一、 什麼是圖數據庫

圖數據庫用圖來存儲數據,是最接近高性能的一種用於存儲數據的數據結構方式之一。

圖形數據庫是以圖形結構的形式存儲數據的數據庫。 它以節點關係屬性的形式存儲應用程序的數據。 正如RDBMS以表的“行,列”的形式存儲數據,GDBMS以“圖形”的形式存儲數據。

1.1 一個圖由無數的節點和關係組成

最簡單的圖是單節點的,一個記錄,記錄了一些屬性。一個節點可以從單屬性開始,成長爲成千上億,雖然會有一點點麻煩。從某種意義上講,將數據用關係連接起來分佈到不同節點上纔是有意義的。

1.2 熱門圖形數據庫

Neo4j是一個流行的圖數據庫。 其他圖形數據庫是Oracle NoSQL數據庫,OrientDB,HypherGraphDB,GraphBase,InfiniteGraph,AllegroGraph。

1.3 圖形

圖形是一組節點和連接這些節點的關係。 節點和關係包含表示數據的屬性。 屬性是用於表示數據的鍵值對。

我們將在後面的章節中討論“什麼是節點,什麼是關係和什麼是屬性”。

 

二、Neo4j簡介

Neo4j是一個高性能的,NOSQL圖形數據庫,它將結構化數據存儲在網絡上而不是表中。它是一個嵌入式的、基於磁盤的、具備完全的事務特性的Java持久化引擎,但是它將結構化數據存儲在網絡(從數學角度叫做圖)上而不是表中。

Neo4j 是目前最流行的圖形數據庫,支持完整的事務,在屬性圖中,圖是由頂點(Vertex),邊(Edge)和屬性(Property)組成的,頂點和邊都可以設置屬性,頂點也稱作節點,邊也稱作關係,每個節點和關係都可以由一個或多個屬性。

Neo4j創建的圖是用頂點和邊構建一個有向圖,其查詢語言cypher已經成爲事實上的標準。

它包括如下幾個顯著特點:

  • 完整的ACID支持
  • 高可用性
  • 輕易擴展到上億級別的節點和關係
  • 通過遍歷工具高速檢索數據

Neo4j是:

  • 一個開源
  • 無Schema
  • 沒有SQL
  • 圖形數據庫

圖形數據庫也稱爲圖形數據庫管理系統或GDBMS。

三、圖數據庫模型

3.1 節點

構成一張圖的基本元素是節點和關係。在Neo4j中,節點和關係都可以包含屬性。

下面讓我們認識一個最簡單的節點,他只有一個屬性,屬性名是name,屬性值是Marko:

3.2 關係

節點之間的關係是圖數據庫很重要的一部分。通過關係可以找到很多關聯的數據,比如節點集合,關係集合以及他們的屬性集合。

一個關係連接兩個節點,必須有一個開始節點和結束節點。

因爲關係總是直接相連的,所以對於一個節點來說,與他關聯的關係看起來有輸入/輸出兩個方向,這個特性對於我們遍歷圖非常有幫助:

關係在任一方向都會被遍歷訪問。這意味着我們並不需要在不同方向都新增關係。而關係總是會有一個方向,所以當這個方向對你的應用沒有意義時你可以忽略方向。特別注意一個節點可以有一個關係是指向自己的:

爲了將來增強遍歷圖中所有的關係,我們需要爲關係設置類型。注意 關鍵字 type 在這可能會被誤解,你其實可以把他簡單的理解爲一個標籤而已。

例1:有兩種關係的最簡單的社會化網絡圖

3.3. 屬性

節點和關係都可以設置自己的屬性。屬性是由Key-Value鍵值對組成。
例2:包含兩個屬性的節點

例3:包含屬性的關係

 這裏Emil->Johan的關係,包含了屬性“since:2001”,Emil->Ian的關係,包含了屬性”rating:5”

3.4 路徑

路徑由至少一個節點,通過各種關係連接組成,經常是作爲一個查詢或者遍歷的結果。

最短的路徑是0長度的像下面這樣:

 長度爲1的路徑如下:

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章