大家好,我有这个问题,我需要锁定一个特定的节点,同时我对它进行一些操作,在我完成它之后我必须释放锁。. 我已经阅读了有关 neo4j 中的悲观锁定的信息,但是我如何像使用 jamell neo4jphp 库一样实现它。
在这个方向上的任何帮助都会非常感激我们被卡住并且不知道如何进行。
在 Neo4j 1.9 之前,每个 REST 请求都是一个事务。没有办法让事务的生存时间比请求更长。
在 Neo4j 2.0.0-M04(里程碑版本)中,添加了一个事务性 REST 端点,请参阅http://docs.neo4j.org/chunked/preview/rest-api-transactional.html。要强制执行锁定,有一个技巧是删除不存在的属性。
所以今天 Neo4j 会自动向经历任何写操作的节点添加写锁,直到事务结束。据我所知,通过 Cypher,您无法手动显式地在节点上获得写锁(至少在本机上),但您可以通过 Java 做到这一点。
我读过一些技巧,您将假属性写入节点,然后在事务结束之前删除假属性,但更好的方法可能是使用流行的APOC 插件,它有一系列明确的程序可以通过 Cypher 调用的锁定节点。
在neo4j-contrib.github.io/neo4j-apoc-procedures/#_locking了解更多信息