提问者:小点点

Neo4j独立服务器:在服务器启动时使用JavaAPI强制执行唯一约束


我正在使用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


  • 共1个答案

    匿名用户

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

    它就像…

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

    在(n: Person)ASSERT上创建约束n.角色是唯一的;