我们当前的实现通过REST API调用Neo4j。我们正在通过neo4j-java-driver替换一些代码。 我们遇到了一些性能问题,我们试图通过Cypher优化和将负载从Neo4j DB移动到应用层来解决。 使用java驱动程序,它是否会进一步降低Neo4j数据库的负载,或者只是在减少网络延迟方面有所帮助?
答案 0 :(得分:1)
对于某些事情,驱动程序更加优化。版本1.5也允许 异步操作。下一个主要版本还将提供背压和反应操作。
它不再需要生成JSON,而是流式传输二进制协议。这样可能会减少负载。我不确定,它会产生很大的影响。
最好衡量自己。
答案 1 :(得分:0)
我做了一些测试,下面是结果,这不是很令人鼓舞
Windows具有16GB RAM,100K节点,本地连接到Neo4j。
String defaultNodes =" 1000&#34 ;;
if(args.length > 0) {
defaultNodes = args[0];
}
字符串查询=" MATCH(n)返回n LIMIT" + defaultNodes;
long time = System.currentTimeMillis();
session.run(query);
System.out.println("With bolt for LIMIT "+defaultNodes+" -- "+(System.currentTimeMillis() - time));
time = System.currentTimeMillis();
Neo4jRESTHandler dbHandler = new Neo4jRESTHandler();
dbHandler.executeCypherQuery(query);
System.out.println("With REST for LIMIT "+defaultNodes+" -- "+(System.currentTimeMillis() - time));
C:\ Migration> java -jar neo4jtestexamples-1.0.0-SNAPSHOT-jar-with-dependencies.jar
使用螺栓用于LIMIT 1000 - 131
使用REST for LIMIT 1000 - 162
C:\ Migration> java -jar neo4jtestexamples-1.0.0-SNAPSHOT-jar-with-dependencies.ja [R
使用螺栓用于LIMIT 1000 - 143
使用REST for LIMIT 1000 - 156
C:\ Migration> java -jar neo4jtestexamples-1.0.0-SNAPSHOT-jar-with-dependencies.ja r 10000
螺栓用于LIMIT 10000 - 377
使用REST for LIMIT 10000 - 156
C:\ Migration> java -jar neo4jtestexamples-1.0.0-SNAPSHOT-jar-with-dependencies.ja r 10000
使用螺栓用于LIMIT 10000 - 335
使用REST for LIMIT 10000 - 157
C:\ Migration> java -jar neo4jtestexamples-1.0.0-SNAPSHOT-jar-with-dependencies.ja [R
使用螺栓用于LIMIT 1000 - 104
REST for LIMIT 1000 - 161
C:\ Migration> java -jar neo4jtestexamples-1.0.0-SNAPSHOT-jar-with-dependencies.ja r 25000
使用螺栓用于LIMIT 25000 - 595
使用REST for LIMIT 25000 - 155
C:\ Migration> java -jar neo4jtestexamples-1.0.0-SNAPSHOT-jar-with-dependencies.ja r 25000
使用螺栓用于LIMIT 25000 - 544
REST for LIMIT 25000 - 151