2016-03-15 18 views
0

我使用Neo4j Server 2.3.2版本並使用非託管插件來解析非負載結構數據並將其加載到圖形中。Neo4j獨立服務器:在服務器啓動時使用Java API強制實施唯一約束

雖然這樣做,我陷入了重複節點的情況,吞吐量較低(即使是批處理)以進行順序處理。考慮到重複數據負載的使用情況,尋求並行數據處理使用或者(使用服務器插件):

  1. 分割文件

  2. 拆分進程/線程現在

,並行日期加載是我可以預見的最大挑戰,就是處理數據完整性問題,例如如何避免創建重複節點。閱讀Neo4j的參考資料,我發現了以下創建獨特節點的選項。

選項:

  1. [首選]獲取或使用Cypher和唯一約束

  2. [其他]悲觀從Java API鎖定

  3. [其他]獲取或創建創建獨特的節點使用傳統索引的獨特節點

現在,問題來自於我可以使用java API執行這個唯一約束的地方。我正在尋找一些事件信息,我可以捕捉並強化這些限制。請告知加載/調用某些事件/方法的最佳方式,並在那裏注入用於實施約束的代碼。

另外,是否有任何方法可以在創建任何實體之前使用Cipher很好地定義這種獨特的強制執行。

在此先感謝

參考文獻:

  1. http://neo4j.com/docs/stable/transactions-unique-nodes.html

  2. http://neo4j.com/docs/stable/tutorials-java-embedded-unique-nodes.html#tutorials-java-embedded-unique-get-or-create

  3. http://neo4j.com/docs/stable/tutorials-java-embedded-unique-nodes.html#tutorials-java-embedded-unique-get-or-create-with-factory

  4. http://neo4j.com/docs/stable/rest-api-unique-indexes.html

  5. http://neo4j.com/docs/stable/tutorials-java-embedded-unique-nodes.html#tutorials-java-embedded-unique-pessimistic

  6. http://neo4j.com/docs/stable/tutorials-java-embedded-unique-nodes.html#tutorials-java-embedded-unique-get-or-create

  7. http://neo4j.com/docs/stable/javadocs/org/neo4j/graphdb/index/Index.html#putIfAbsent%28T,%20java.lang.String,%20java.lang.Object%29

回答

1

這是非常簡單的,不知何故,我錯過了一邊唸叨密碼:(

它像...

創建約束ON(N:人)ASSERT n.name是唯一的;

創建約束ON(N:人)ASSERT n.role是唯一的;

+0

它的Cypher BTW。用'y':) –