2014-06-23 56 views
8

我的問題是從開發人員的角度來看(不是特別尊重用戶),可能有點麻煩。 我想知道如何將節點和關係的結構邏輯地存儲在數據庫中。就像,當我說我有bla bla信息。哪裏? - 然後在BOOK中,答案是以網格或頁面上的線條的形式。在RDBMS的情況下,數據以網格/表格格式存儲。但我無法理解圖表是如何存儲在Neo4j /圖形數據庫中的。 我正在使用neo4j客戶端2.1.2。Neo4j如何在內部存儲數據?

+1

思考參考鏈和圖表:http://www.slideshare.net/thobe/an-overview-of-neo4j-internals – duffymo

回答

3

http://www.slideshare.net/thobe/an-overview-of-neo4j-internals已經有點過時了,但是這給你一個很好的Neo4j邏輯表示概述。

一個節點引用:

  • 它的第一個標籤(我的猜測是,標籤被存儲爲一個單向鏈表)
  • 它的第一個屬性(屬性被組織成一個單向鏈表)
  • 其開始/結束關係

關係被組織爲雙向鏈接列表。 的關係分:

  • 其第一屬性(同節點)
  • 其開始節點的前導和後繼關係
  • 其端節點的前導和後繼關係

由於這種鏈式結構,遍歷(即查詢數據的方式)的概念很容易出現。這就是爲什麼像Neo4j這樣的圖形數據庫擅長遍歷圖形結構數據的原因。

我的粗略猜測也是,因爲Neo4j版本2.1(和its newly introduced dense node management),節點的關係按類型分開。通過這樣做,如果節點N例如是類型A的5個關係的起始節點,並且對於類型B的5百萬個類型,則針對N的遍歷類型A的rels保持O(n = 5)。