2012-04-12 63 views
0

我對neo4j仍然很陌生。我寫了一個小型RESTFUL服務,它通過REST將節點插入到neo4j數據庫(服務器)中作爲PoC。該結構看起來是這樣的:root - [NODES] - > n - > [NODE] - >節點Neo4j密碼通過REST在中心節點上查詢性能

n節點是「居中」的節點。我計劃添加其他節點作爲不同的節點類型(例如產品/類別/文檔/屬性/用戶...)

在我的第一個例子中,我添加了約。 1.000個節點。現在我試圖增加節點的數量並查詢該節點。現在我面臨着一種表現「問題」。這是我的查詢,在neo4j(1.6.1)Web控制檯執行

START x =節點(0)MATCH PATH =(x - [:NODES] - >居中 - [:NODE] - >節點)返回節點ORDER BY node.id LIMIT 10

START X =節點(0)MATCH PATH =(X - [:NODES] - >爲中心 - [:NODE] - >節點)返回計數(*)

我需要查詢分頁。第一個應該選擇要顯示的元素,第二個要計算頁面。

查詢時間: 1.000節點:〜120個毫秒 4.000節點:〜200 - 300個毫秒 6.000節點:〜250 - 500毫秒

Cypher支架查詢時間增加非常快(在我看來)。我計劃以這種方式添加〜2000,000個節點。我的查詢有什麼問題嗎?是否有可能讓他們更快? (我已經設置了我的neo4j堆大小爲100M,10k節點應該怎麼樣)

在此先感謝!

回答

1

您可以做的第一件事是刪除路徑分配 - 您不使用PATH路徑,所以不需要創建它。

除此之外,你似乎沒有在這裏做任何錯誤。

對於這種類型的查詢,Cypher性能比1.7好得多。我們昨天發佈了1.7.M03,如果你的係數不是1.6,那麼你可以把它拿出來。

+0

我會試試:)謝謝Andres! – Alebon 2012-04-12 15:12:57

+0

是的,這似乎更好。現在我有10k個節點。第一個查詢從〜300-500ms降到〜100ms,計數查詢從〜110ms降到50-60ms。喜歡它;) – Alebon 2012-04-12 15:23:09

+0

另外一個問題:使用那些居中的節點是否很常見? – Alebon 2012-04-12 15:25:25

0

如果它們只是跟隨節點的描述符,那麼根本沒有「集中」節點可能會有幫助。我認爲如果您只是使用帶標籤的索引節點來描述節點類型(例如,產品/類別/文檔/屬性/用戶...),那麼它會更快更好地組織起來。見labels

+0

對於較新的版本(包括標籤)是如此;) – Alebon 2013-06-04 07:17:19