我的应用程序(在Node.Js和Neo4j 2.0.1上运行)有一个很长的Cypher请求,它立即创建了大约16个节点和307之间的关系。它长约50K。
大量的关系由数据模型决定,我可能希望稍后改变,但是,如果我决定保持原样,那么有两个问题:
1)我发送给Neo4J的每个Cypher请求的最大大小是多少?
2)处理太长时间的请求的最佳策略是什么?将其拆分为较小的,然后在事务中批处理?我不喜欢这样做,因为在这种情况下,我失去了由MERGE和CREATE命令组合产生的一致性(请求自动识别了一些尚不存在的节点,创建它们,然后我可以使用他们通过MERGE获得的指数来建立他们之间的关系。
谢谢!
答案 0 :(得分:0)
我通常建议
使用较小的语句,以便查询计划缓存可以立即启动并执行您的查询而无需编译,为此您还需要
参数,例如{context}或{user}
我认为最多10-15个元素的语句大小很容易处理。
您仍然可以使用transactional cypher endpoint在一个tx中执行所有这些操作,这允许批处理语句及其参数。