Neo4J与NeoModel:如何加速图形创建?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Neo4J与NeoModel:如何加速图形创建?相关的知识,希望对你有一定的参考价值。

我试图用neo4J和neomodel来表示一些图形关系。但是,当我尝试构建具有数百万个节点和关系的图形时,我遇到了性能问题。

当我有10k节点的图形和它们之间的30k关系时,需要4:20s来导入它Neo4j。创建节点需要1:40,而调用foo.connect(bar)需要2:40创建关系。这非常慢。

当我使用neomodel提供的批处理api时,我能够在4s内创建所有节点,但它不会影响创建关系所需的时间。

Neomodel正在使用CYPHER查询来创建1对1的关系。因此,我决定编写自己的查询,首先匹配创建100个关系所需的所有节点,然后创建这些关系。它发生了一两次,几秒钟就完成了。在其他情况下,它需要几分钟。当我使用htop查看,正在发生的事情,我可以看到,neo4j数据库充分利用了2个核心。

我发现以下文章:Import 10M Stack Overflow Questions into Neo4j In Just 3 Minutes使用neo4j-import,但我想避免它。

我使用默认配置,除了我使用dbms.jvm.additional=-Xss256M能够执行那些批处理关系查询。我有用于节点查找的唯一索引属性。在每次实验之前,我删除所有节点和关系。

你有什么想法,如何加快速度?

答案

你的节点有多少个rel?

通常我认为对象映射器不适合大规模插入。

请查看:https://medium.com/@mesirii/5-tips-tricks-for-fast-batched-updates-of-graph-structures-with-neo4j-and-cypher-73c7f693c8cc

您是否可以为超过1秒的查询启用查询日志记录并共享neomodel生成的查询?

dbms.jvm.additional=-Xss256M过度。这意味着每个线程分配256M内存,通常2M就足够了。

以上是关于Neo4J与NeoModel:如何加速图形创建?的主要内容,如果未能解决你的问题,请参考以下文章

Neo4j - 图形数据科学库 - 如何对图形目录中的命名图形进行密码查询?

neo4j如何与其它系统集成

如何在 Neo4j 中删除/创建数据库?

我如何在 Neo4j 图形数据库中检索关系

NEO4J安装与配置

Neo4j删除图形内存不足