Neo4j性能-真的很快吗?

Neo4j性能-真的很快吗?,neo4j,Neo4j,我想在neo4j上运行一些测试,并将其性能与其他数据库(本例中为postgresql)进行比较 这个postgres数据库有大约2000000个“内容”,分布在3000个“类别”左右。(这意味着有一个“内容”表、一个“类别”表和一个“内容到类别”关系表,因为一个内容可以位于多个类别中)。 因此,将其映射到neo4j db,我正在创建节点“内容”、“类别”及其关系(内容到类别,内容到内容,因为内容可以有相关内容) 类别->类别(类别可以有子类别) 内容->类别 内容->内容(相关) 您认为这种“模

我想在neo4j上运行一些测试,并将其性能与其他数据库(本例中为postgresql)进行比较

这个postgres数据库有大约2000000个“内容”,分布在3000个“类别”左右。(这意味着有一个“内容”表、一个“类别”表和一个“内容到类别”关系表,因为一个内容可以位于多个类别中)。 因此,将其映射到neo4j db,我正在创建节点“内容”、“类别”及其关系(内容到类别,内容到内容,因为内容可以有相关内容)

类别->类别(类别可以有子类别)

内容->类别

内容->内容(相关)

您认为这种“模式”适合这种类型的域吗

  • 从postgresql do neo4j迁移所有数据:这需要花费很长时间(大约4、5天)。这只是一些对节点的搜索,并相应地创建/更新。(搜索使用索引和插入/更新(如果每个节点需要500毫秒) 我做错什么了吗

  • 迁移完成了,所以我尝试了一些查询。。。 我最终得到了大约2000000个内容节点、3000个类别节点和超过4000000个关系

  • (请注意,我对neo4j这个世界还不熟悉,所以我不知道如何优化密码查询…)

    我想测试的查询之一是:获取给定类别中给定“定义”的10个最新发布内容(包括给定类别子类别中的内容)

    我做了一点实验,结果是这样的:

    START 
      c = node : node_auto_index( 'type: category AND code: category_code' ),
      n = node : node_auto_index( 'type: content AND state: published AND definitionCode: definition_name' )
    MATCH (c) <- [ r:BELONGS_TO * ] - (n)
    RETURN n.published_stamp, n.title
    ORDER BY n.published_stamp DESC
    LIMIT 6
    
    开始
    c=节点:节点自动索引('type:category AND code:category\u code'),
    n=节点:节点自动索引('type:content和state:published AND definitionCode:definition\u name')
    
    MATCH(c)您是否查看了批量导入设施:?您真的应该在初始导入时查看这一点-这将需要几分钟而不是几天

    我会请我们的技术人员就其他一些问题与您联系。你真的不应该看到这个


    Rik

    此操作返回多少个节点

    START 
      n = node : node_auto_index( 'type: content AND state: published AND definitionCode: definition_name' )
    RETURN count(*)
    
    我会尝试让图表来完成这项工作。 你的层级结构通常有多深? 通常将任意长度关系限制为不具有组合爆炸: 我在内容和类别之间的关系类型也不同于类别树。 你能指出你目前的关系类型吗

    START 
      c = node : node_auto_index( 'type: category AND code: category_code' ),
    MATCH (c) <- [:BELONGS_TO*5] - (n)
    WHERE n.type = 'content' AND n.state='published' and n.definitionCode = 'definition_name'
    RETURN n.published_stamp, n.title
    ORDER BY n.published_stamp DESC
    LIMIT 6
    
    开始
    c=节点:节点自动索引('type:category AND code:category\u code'),
    
    MATCH(c)您是否正在运行Linux,可能是在ext4文件系统上

    您可能需要设置barrier=0装载选项,如下所述:


    关于此主题的进一步讨论:

    第一次查询返回的节点:391499,耗时5743ms。第二个查询:81017ms。现在我只有“属于”关系,但我正在研究一个新的导入,它将为不同的事情提供不同的关系类型,正如您所指出的。我还应该看看批量导入工具。。。我设法做了一个新的完整导入,花了整个周末,呵呵,谢谢。