我有一个存储在Neo4J数据库中的大图(20M +节点)。 从Java程序,我需要检索几个节点的传入边集并计算它们的交集。 我的图表中某些节点的不确定性非常高(> 300,000)。
我尝试了以下内容:
在具有390,241个传入边的节点上,需要10秒才能完成。 但是,如果我将节点关系存储在PostgreSQL数据库中,我可以在不到1秒的时间内检索该节点的所有传入关系。 问题是我必须为几个(可能是高不确定的)节点重复这个操作,这需要花费很多时间。我认为在热身之后,Neo4j数据库反应会更快,但事实并非如此。
for ( Relationship r : source.getRelationships(Direction.INCOMING, DynamicRelationshipType.withName("Link")) )
{
Node other = r.getOtherNode(source);
set.add(other);
}
我真的不想仅仅为了这个操作在PostgreSQL中复制我的图形,所以我需要一些提示(如果有的话)来加速Neo4j。
我的电脑有32G的RAM,我的程序的Java堆空间是20G。 所有其他设置均为默认值。
提前感谢您的帮助!