讓我先解釋一下我想用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使我的設計選擇明確
數據插入和規格
我已經使用批量插入其作品非常快(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(最大)
我的問題
- 你認爲一個graphDb可撥作這樣的情景?
- 我的設計選擇正確嗎?
- 索引怎麼樣?我是否需要定義更多?
- 是查詢數據庫好嗎?
- 是否有一些配置技巧來加快查詢階段?
- 什麼是適合我的應用需求的服務器規格?
在此先感謝
約恩
您可以發佈您的圖形的虛擬圖,這樣我可以把在評論之前更好的可視化你的模型? –
@SumeetSharma我編輯了我的帖子。謝謝。 –