performance - 获取所有 Neo4j 节点和关系的最快方法?

标签 performance neo4j dump

将所有无序节点和关系从正在运行的 Neo4j 2.x 服务器获取到程序中的最快方法是什么?

Cypher MATCH n RETURN n 对于我的用例来说太慢了(假设我们有 >10M 的节点要提取)。

shell 命令 dump看起来很有趣,但它需要一些技巧才能从源代码中调用。 dump 有可用的基准吗?

任何建议表示赞赏!

--编辑--

我认为本地 Neo4j 服务器的 REST 端点(因此没有网络效应)执行查询,查询类似于 MATCH n RETURN n SKPI 0 LIMIT 50000。我的数据库是 Neo4j 2.0.3,填充有 100k 个具有 1 个整数属性的节点,并且没有任何关系。计算机:SSD,读取速度 1.3+ Mo/s,CPU i7 1.6Ghz,JVM -Xmx2g。检索 50k 个节点大约需要 4 秒:

curl -s -w %{time_total} -d"query=match n return n limit 50000" -D- -onul: http://localhost:7474/db/data/cypher

HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
Access-Control-Allow-Origin: *
Content-Length: 63394503
Server: Jetty(9.0.z-SNAPSHOT)

4,047

最佳答案

获取所有节点的最快方法是运行嵌入式 Neo4j。您通过 Cypher 使用 REST API 看到的性能下降很大程度上是由于网络上的数据传输限制造成的。

使用方法getAllNodes,您可以检索图中的所有节点,而无需通过网络传输数据。

http://api.neo4j.org/current/org/neo4j/tooling/GlobalGraphOperations.html

try ( Transaction tx = db.beginTx(); ) {
    Iterable<Node> allNodes = db.getAllNodes();
    tx.success();
}

请注意,从 2.1.2 开始,此方法现已弃用。

要了解有关 Neo4j 嵌入式的更多信息,请查看文档。

http://docs.neo4j.org/chunked/stable/tutorials-java-embedded.html

关于performance - 获取所有 Neo4j 节点和关系的最快方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24370393/

相关文章:

neo4j - 在 Cypher/Neo4J 中匹配多个节点属性值

java - Java 有检查对象类型的方法吗?

c - 如何从任意虚拟地址转储内存,忽略 SIGSEGV

mysql - 使用 Solr 存储数据以供检索 Vs。 MySQL

Javascript 作用域链

php - 什么被认为是较长的执行时间?

google-app-engine - 将编码键映射到应用引擎中的较短标识符

neo4j - Spring Data Neo4j 4.x 唯一性约束?

java - 是否可以在 Neo4J Java Driver v1.0.3 中为 asList 方法指定元素类型

css - Symfony 2 Assets :dump UglifyCss causes [Symfony\Component\Process\Exception\RuntimeException] The process has been signaled with signal "5"