0

我们当前的实现通过 REST API 对 Neo4j 进行了所有调用。我们正在通过 neo4j-java-driver 替换部分代码。我们遇到了一些性能问题,我们试图通过 Cypher 优化和将负载从 Neo4j DB 转移到应用层来解决这些问题。使用 java 驱动程序,它会进一步减少 Neo4j DB 的负载,还是仅仅有助于减少网络延迟?

4

2 回答 2

1

驱动程序在某些方面更理想。1.5 版也将允许异步操作。下一个主要版本还将提供背压和反应操作。

它不再需要生成 JSON,而是流式传输二进制协议。所以这可能会减少一点负载。我不确定,它会产生很大的影响。

最好自己量一下。

于 2017-12-19T06:39:22.503 回答
0

我做了一些测试,下面是结果,这不是很令人鼓舞

具有 16GB RAM、100K 节点的 Windows,本地连接到 Neo4j。

字符串 defaultNodes = "1000";

    if(args.length > 0) {
        defaultNodes = args[0];
    }

String query = "MATCH(n) return 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 限制 1000 -- 162

C:\Migration>java -jar neo4jtestexamples-1.0.0-SNAPSHOT-jar-with-dependencies.jar

带螺栓 LIMIT 1000 -- 143

使用 REST 限制 1000 -- 156

C:\Migration>java -jar neo4jtestexamples-1.0.0-SNAPSHOT-jar-with-dependencies.jar 10000

带螺栓 LIMIT 10000 -- 377

使用 REST 限制 10000 -- 156

C:\Migration>java -jar neo4jtestexamples-1.0.0-SNAPSHOT-jar-with-dependencies.jar 10000

带螺栓 LIMIT 10000 -- 335

使用 REST 限制 10000 -- 157

C:\Migration>java -jar neo4jtestexamples-1.0.0-SNAPSHOT-jar-with-dependencies.jar

带螺栓 LIMIT 1000 -- 104

使用 REST 限制 1000 -- 161

C:\Migration>java -jar neo4jtestexamples-1.0.0-SNAPSHOT-jar-with-dependencies.jar 25000

带螺栓 LIMIT 25000 -- 595

使用 REST 限制 25000 -- 155

C:\Migration>java -jar neo4jtestexamples-1.0.0-SNAPSHOT-jar-with-dependencies.jar 25000

带螺栓 LIMIT 25000 -- 544

使用 REST 限制 25000 -- 151

于 2017-12-20T11:11:48.787 回答