我正在使用Neo4j Server 2.3.2版本并使用非托管插件来解析非结构化数据并将其加载到图中。
在做这件事的时候,我陷入了重复节点和缓慢吞吐量(即使是批次处理作业)的情况。考虑到重复数据加载的用例,寻求并行数据处理(使用服务器插件)使用以下任一:
>
拆分文件
拆分过程 /Threading
现在,对于并行日期加载,我可以预见的最大挑战是处理数据完整性问题,例如如何避免创建重复节点。阅读Neo4j的参考资料,我发现了以下创建唯一节点的选项。
选项:
>
[首选]使用Cypher和唯一约束获取或创建唯一节点
[其他]悲观锁定从JavaAPI
【其他】使用旧版索引获取或创建唯一节点
现在,问题是我可以从哪里使用javaAPI来强制执行这个唯一的约束。我正在寻找一些可以捕获和强制执行约束的事件信息。请建议加载/调用一些事件/方法的最佳方式,我们在那里注入强制约束的代码。
此外,是否有任何方法可以在创建任何实体之前使用Cipher定义这种独特的强制执行。
提前谢谢
参考资料:
>
http://neo4j.com/docs/stable/transactions-unique-nodes.html
http://neo4j.com/docs/stable/tutorials-java-embedded-unique-nodes.html#tutorials-java-embedded-unique-get-or-create
http://neo4j.com/docs/stable/tutorials-java-embedded-unique-nodes.html#tutorials-java-embedded-unique-get-or-create-with-factory
http://neo4j.com/docs/stable/rest-api-unique-indexes.html
http://neo4j.com/docs/stable/tutorials-java-embedded-unique-nodes.html#tutorials-java-embedded-unique-pessimistic
http://neo4j.com/docs/stable/tutorials-java-embedded-unique-nodes.html#tutorials-java-embedded-unique-get-or-create
这很简单,不知何故,我在阅读密码时错过了:(
它就像…
在(n: Person)ASSERT上创建约束n.name是唯一的;
在(n: Person)ASSERT上创建约束n.角色是唯一的;