在一个事务中包装多个数据库查询

时间:2016-01-26 23:17:17

标签: neo4j neo4j-java-api

我在java应用程序中以嵌入模式使用Neo4j。

在升级到Neo4j 2.x之前,我在一个事务中包装了多个数据库操作。升级到2.x之后,我在一个单独的事务中显式执行每个db操作(这是规范的方式,正如文档中所建议的那样)。但是,创建数据库的速度已经严重下降。

有没有办法,我可以在一个事务中包装多个数据库操作(插入和查询)?我知道在回滚的情况下,我将不得不处理丢失的CRUD操作。

还请提出一般性建议,以扩展最终将拥有超过6亿个节点和关系以及超过20亿个注释的数据库。

1 个答案:

答案 0 :(得分:2)

对neo4j的要求是所有操作都必须在事务中。并不要求每个操作都必须在自己的事务中,并且这样做既不是出于性能原因,也是因为这样就无法在一个事务下对多个逻辑操作进行分组。

我认为这里的解决方案是不将每个操作包装在一个事务中,并且完全按照升级之前的操作完成。

这可能是一种误解;在文档中,它们显示了包含在事务中的示例操作,但它没有说明1操作= 1事务的任何地方。实际上,您可以根据需要在一个事务中执行尽可能多的不同读/写操作。要求是所有操作必须在交易中。