我有一個表存儲在一個典型的MySQL數據庫,我已經使用java構建了一個小的分析器工具來解析並構建neo4j數據庫。該數據庫將有約4000萬個節點,每個節點具有一個或多個邊緣(可能最多有10個邊緣)。問題來自我必須創建特定節點的方式。有一個用戶節點,評論節點和hashtag節點。用戶節點和主題標籤節點必須都是唯一的。我使用的代碼從下面的例子中,以確保其唯一性:插入大量的節點到Neo4J
public Node getOrCreateUserWithUniqueFactory(String username, GraphDatabaseService graphDb)
{
UniqueFactory<Node> factory = new UniqueFactory.UniqueNodeFactory(graphDb, "users")
{
@Override
protected void initialize(Node created, Map<String, Object> properties)
{
created.setProperty("name", properties.get("name"));
}
};
return factory.getOrCreate("name", username);
}
我曾想過使用批量插入,但在執行我還沒有看到一個方法來檢查,如果一個節點是獨一無二的批量插入。所以我的問題是什麼是插入所有這些節點的最快方式,同時仍然確保它們保持唯一性。任何幫助將一如既往地不勝感激。
「所以他發現Lucene索引可以在節點屬性上創建,我們可以在Unique Node工廠中引用這些索引。」你能解釋一下嗎?我有一個帶索引節點屬性的索引,例如'名稱'並將其用於唯一節點工廠。這是你的意思嗎? – joewhite86 2013-07-17 09:49:20
是的,請!我也想知道這個增加neo4j插入速度的神奇咒語是什麼! :-) – Stewart 2013-08-21 08:41:08