Neo4j锁定策略是否阻止用户访问在同一时刻重新定位的节点?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Neo4j锁定策略是否阻止用户访问在同一时刻重新定位的节点?相关的知识,希望对你有一定的参考价值。

为了跟踪合同变更的历史记录,我正在逐渐摆脱目前的版本,这个版本正在每次更改时创建。更改(续订合同)涉及删除旧关系(不删除任何节点),插入新的当前版本节点以及创建新关系。我认为这一切都发生在一次交易中。如果客户端在发生更改时尝试访问当前版本,客户端是否会请求...

  1. 找不到节点或其内容?
  2. 找到合同节点的先前版本?
  3. 找到合同节点的新版本?

在下面的示例代码中,我们有一名教练和一名运动员,他们在每年年初续签联合合同。如果您运行第一个查询一次,第二个查询多次运行,它将构建此模型。我不知道如何最终测试这种竞争情况。

contract history tail

//INITIALIZE FIRST CONTRACT
CREATE (coach:PERSON {name:'coach'})
CREATE (athlete:PERSON {name:'athlete'})
CREATE (curr:CONTRACT {name:'contract', year:2017, content: "The signees herein..."})
MERGE (coach)-[:BOUND_TO]->(curr)<-[:BOUND_TO]-(athlete)


//RENEW CONTRACT
MATCH (coach:PERSON {name:'coach'} )
MATCH (athlete:PERSON {name:'athlete'} )
MATCH (coach)-[r1:BOUND_TO]->(curr)<-[r2:BOUND_TO]-(athlete)
MERGE (coach)-[:BOUND_TO]->(new:CONTRACT {name:'contract', year:curr.year + 1, content: "The signees herein..."})<-[:BOUND_TO]-(athlete)
MERGE (new)-[:PREV]->(curr)
DELETE r1,r2
答案

Neo4j是一个完整的ACID数据库,因此您的问题将取决于实现提交的时间:

  • 在提交之前:用户将找到以前的版本
  • 提交后:用户将找到新版本

以上是关于Neo4j锁定策略是否阻止用户访问在同一时刻重新定位的节点?的主要内容,如果未能解决你的问题,请参考以下文章

尝试一定次数后锁定的 Python 密码系统

html ajax访问webapi 跨域

html ajax访问webapi 跨域

如何修复 - 重新登录时,CORS 策略已阻止访问“https://login.windows.net......”获取

404错误杂谈

锁定用户记录并阻止编辑?