2012-09-10 61 views
2

我是neo4j的新手,我正在建立一個社交網絡。爲了這個問題,我的圖由userevent節點組成,它們之間有關係。Neo4j,哪個更好:多重關係還是一個屬性?

用戶可能被邀請,加入,參加或主持一個事件,每個都是前一個事件的子集。

對於/應該爲每個狀態/狀態創建多個關係還是有一個與存儲當前狀態的屬性的關係?是否有任何好處?

+0

我認爲簡單的編程代碼着想,你應該使用一個關係類型(如「事件」)和它的屬性(如「狀態:出席」)。但如果你真的必須最大限度地提高速度,請使用下面建議的關係類型 – ulkas

回答

2

根據我的理解,圖形類型查詢比關係類型更容易/更有效地完成關係類型。

一個關係如何,但關係類型不同?

您可以使用Cypher查詢與管道的多種關係類型(如果您與事件之間不存在其他關係,則不希望在查詢中找到這些關係)。

更新 - 添加控制檯例如:http://console.neo4j.org/?id=woe684

或者,你可以離開舊有關係,而不是必須構建稍微複雜的查詢,但感覺有點浪費這個用例。

+0

你知道這種性能差異今天是否仍然如此嗎? 我有8種不同的關係,每種都有5個關卡。我還應該創建40個不同的關係類型,而不是8個具有「值」屬性的關係類型? – MrE

+0

是的。在緩存和存儲中,關係類型基本上就是索引的方式。如果您只有8種不同的關係,那麼這並不重要,但是如果您(在給定節點上)有幾千EVENT_ATTENDEE關係和100 EVENT_HOST關係(按照此示例),指定EVENT_HOST它甚至不會考慮其他關係類型。由於你有更多的關係,它會更重要。 –

1

如果可能,在屬性限定的單一類型上選擇不同的關係類型可能會在查詢圖時產生顯着的積極性能影響。前一種方法比後者快至少2倍。當數據處於高級緩存中並且使用本地Java API查詢圖時,第一種方法對於單跳遍歷速度要快8倍以上。

來源:http://graphaware.com/neo4j/2013/10/24/neo4j-qualifying-relationships.html

+0

當沒有屬性的關係時它是合理的,但當它包含屬性時如何表現? – MAYA

相關問題