0

我正在使用 Neo4j Server 2.3.2 版本并使用非托管插件来解析非结构化数据并将其加载到图形中。

在执行此操作时,我陷入了重复节点和缓慢吞吐量(即使是批处理)的情况,以进行顺序处理。考虑到重复数据加载的用例,使用以下任一方法寻求并行数据处理(使用服务器插件):

  1. 拆分文件

  2. 拆分进程/线程

现在,对于并行日期加载,我可以预见的最大挑战是处理数据完整性问题,例如如何避免创建重复节点。阅读 Neo4j 的参考资料,我发现了以下创建唯一节点的选项。

选项:

  1. [首选] 使用 Cypher 和唯一约束获取或创建唯一节点

  2. [其他] Java API 的悲观锁定

  3. [Other] 使用遗留索引获取或创建唯一节点

现在,问题是我可以从哪里使用 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
4

1 回答 1

1

这很简单,不知何故我在阅读密码时错过了:(

它像是...

在 (n:Person) 上创建约束断言 n.name 是唯一的;

在 (n:Person) 上创建约束断言 n.role 是唯一的;

于 2016-03-16T02:45:27.053 回答