2014-01-23 65 views
0

讓我先解釋一下我想用Neo4j的模型是什麼(V2)的Neo4j圖形數據庫的設計和高效的查詢

我們假設表單上的n維數據集:

val1Dim1, ... , val1Dimn, classValue1 
val2Dim2, ... , val2Dimn, classValue2 
.... 

每個維度提供了一個層次結構(比如說一棵樹)。根據數據集的不同,「維度節點」的總數大約爲1K或略高。

在數據集上運行數據挖掘方法(link to the scientific paper),並從數據集中提取大量模式。

基本上,每個圖案是在表格上:

{a set of value of Dim1} {a set of value of Dim2} ... {a set of class values} 

至少有圍繞11M開採圖案。

我的設計選擇

2類型的節點(標籤):

  • DATA(例如val1Dim1是一個DATA節點)周圍1K節點=>。這些節點有三個屬性:LABEL(值本身),維度ID,DIMENSION和一個構建屬性KEY,即「DIMENSION_LABEL」。在KEY上定義了一個索引。

  • 圖案(每圖案之一)=>至少11M節點

2類型的關係:

  • IS_A代表一般化/專業化關係通過層級進行導航

  • COMPOSED_BY將模式鏈接到其每個成員(例如,如果P = {val1dim1,val2Dim1} {val1Dim2}是一個模式,那麼3個關聯離子化作用,即P→va11Dim1,P> val2Dim1和val1Dim1。

這裏是一個玩具graphDb使我的設計選擇明確 enter image description here

數據插入和規格

我已經使用批量插入其作品非常快(40分鐘左右)。 DB的大小約爲50Gb,由大約11M節點和1B(!!)關係組成。目前,我正在我的機器上運行代碼(8GB內存,英特爾i7和500GB SSD HD)。我正在使用Java。

我想怎麼辦

由於每個維度的值,我想知道是這樣,所有的尺寸值參與模式的模式。

目前,假設2名維我使用的查詢是要實現我的目標是:

match (n:DATA {KEY:'X'})-[r:COMPOSED_BY]-(p:PATTERN)-[r2:COMPOSED_BY]-(m:DATA {KEY:'Y'}) 
return p; 

就目前而言,這是非常非常慢......和Java進程的內存使用量爲2GB(最大)

我的問題

  1. 你認爲一個graphDb可撥作這樣的情景?
  2. 我的設計選擇正確嗎?
  3. 索引怎麼樣?我是否需要定義更多?
  4. 是查詢數據庫好嗎?
  5. 是否有一些配置技巧來加快查詢階段?
  6. 什麼是適合我的應用需求的服務器規格?

在此先感謝

約恩

+0

您可以發佈您的圖形的虛擬圖,這樣我可以把在評論之前更好的可視化你的模型? –

+0

@SumeetSharma我編輯了我的帖子。謝謝。 –

回答

1

我有幾個建議。您可以使用節點標籤(不作爲節點的屬性)。有關節點標籤的更多信息,請參閱here

因此,如果使用標籤,特定維度的所有標籤將自動按照一個集合(即標籤)進行分類。因此,您將減少您維護的關係數量爲IS_A。由於關係在空間上更爲昂貴,因此可以減少數據庫的大小。此外,在標籤上的索引搜索也可以比在整個索引中搜索關鍵字快得多。

在下面的模型中,每個維度節點(DATA)我已經添加了兩個屬性keyvalue下,你可以相當只保留其中一個爲key,然後簡單地指數超過它。所以當你需要這個值的時候只需要解析一下密鑰(只是一個建議不知道你將要使用的用戶的種類)

建議和意見是可以的。

如果您需要更多信息,請回複評論。


編輯點評

根據您的意見後,爲了降低模式的節點數,你可以通過創建獨特relationshipTypes根據PATTERNS命名它們鏈接DATA節點本身。請參閱更新的圖更多的澄清

Model I would suggest

+0

感謝您的建議。重點是我已經在使用標籤區分數據節點(白色)和模式節點(灰色)。實際上,沒有太多的IS_A關係(大約1K)。我的主要問題是模式的數量(11M)以及COMPOSED_BY關係的數量(200M)。我想要運行的典型查詢是「給定一些數據節點N什麼是模式p,以便它存在p和N中每個數據節點之間的COMPOSED_BY關係」。 –

+0

此外,您使用的標籤是數據..我建議,而不是使用數據作爲標籤,使用A/DIM1或B/DIM2作爲標籤,將分離在一個維度下的個人集合的節點集。 而不是創建一個模式節點,創建唯一的關係類型命名模式p1,p2鏈接模式中的一組節點 –

+0

您的想法看起來非常有趣。我會立即進行調查,並告知您對演出的影響。另外,您認爲自動索引關係會加快查詢的速度嗎? –