Neo4j的高级映射模式性能

时间:2013-03-05 10:14:23

标签: java performance neo4j spring-data-neo4j

我在Spring Data Neo4j项目中使用了Neo4j的简单和高级映射模式。由于我已经从简单映射切换到高级映射,因此该项目的性能非常好,我的意思是真的比以前好多了。我没有确切的数字,但肯定是众多。有人可以澄清为什么高级映射模式优于简单映射吗?

我已阅读SDN文档中的Prorgramming Model页面,但我找不到确切的原因。

为了记录,我正在使用Spring的@Transactional支持。

2 个答案:

答案 0 :(得分:5)

是的,这是正确的,因为高级映射只是节点和关系的一个薄包装,并写入数据库(并通过读取)。简单映射将数据复制出来。为了保持性能优势,只在事务中使用高级映射,您会很高兴。

如果您开始修改事务之外的实体,您将获得脏对象跟踪,它将开始重新复制内容。

答案 1 :(得分:0)

我注意到,通过简单的映射,即使不应该有很多不必要的标签提取。即使您不使用@Fetch,SDN仍然会(在某些情况下)获取相关集中所有节点的标签,在某些情况下甚至可以进一步提取。

例如,我有两个团队,大约有100名成员,团队也连在一起(作为父子),@ Fetch无处使用,表现仍然很糟糕。

所以我切换到高级映射以摆脱不必要的标签提取。在我看来,简单映射不再可用,因为它与基于新的Label的TypeRepresentationStrategy一起工作得非常糟糕。似乎它不再适用于标签。