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?
通常我认为对象映射器不适合大规模插入。
您是否可以为超过1秒的查询启用查询日志记录并共享neomodel生成的查询?
dbms.jvm.additional=-Xss256M
过度。这意味着每个线程分配256M内存,通常2M就足够了。
以上是关于Neo4J与NeoModel:如何加速图形创建?的主要内容,如果未能解决你的问题,请参考以下文章