Neo4j 性能 Neo4j REST API 与 Neo4j Java 驱动程序

Neo4j performance Neo4j REST API Vs Neo4j Java Driver

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

驱动程序在某些方面更优化了一些。 1.5 版也将允许 异步操作。下一个大版本也会提供背压和响应式操作。

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

最好自己测一下。

我做了一些测试,结果如下,不太令人鼓舞

Windows 16GB 内存,10 万个节点,本地连接到 Neo4j。

String defaultNodes = "1000";

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

字符串查询="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 for LIMIT 1000 -- 162

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

LIMIT 1000 带螺栓 -- 143

LIMIT 1000 的 REST -- 156

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

带螺栓用于 LIMIT 10000 -- 377

REST 为 LIMIT 10000 -- 156

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

带螺栓用于 LIMIT 10000 -- 335

REST 为 LIMIT 10000 -- 157

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

带螺栓用于 LIMIT 1000 -- 104

LIMIT 1000 的 REST -- 161

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

带螺栓用于 LIMIT 25000 -- 595

REST 为 LIMIT 25000 -- 155

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

带螺栓用于 LIMIT 25000 -- 544

REST 为 LIMIT 25000 -- 151