3

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

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

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

内容 -> 类别

内容 -> 内容(相关)

您认为这种“模式”适用于这种类型的域吗?

  1. 从 postgresql 迁移所有数据做 neo4j:它需要永远(大约 4、5 天)。这只是对节点的一些搜索并相应地创建/更新。(如果每个节点需要 500 毫秒,则搜索使用索引和插入/更新)我做错了吗?

  2. 迁移完成了,所以我去尝试一些查询......我最终得到了大约 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

这需要大约 3 秒,不包括第一次运行,这需要更多时间......这正常吗?

我究竟做错了什么 ?

请注意,我使用的是 neo4j 1.9.2,并自动索引一些节点属性(包括类型、代码、状态、定义代码和发布的戳记 - 标题未自动索引)

此外,在上一个查询中返回“c”( start c = node : node_auto_index( 'type: category AND code : category-code' ) return c; )很快(同样,不包括第一次运行,这需要大约 20-30 毫秒),我不确定这是否是使用索引的正确方法......

提前谢谢你(对不起,如果有些事情没有意义 - 问我,我会尽力解释得更好)。

4

3 回答 3

2

您是否查看过批量导入工具: http: //www.neo4j.org/develop/import?您真的应该在初始导入时查看它 - 它需要几分钟而不是几天。

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

里克

于 2013-09-16T06:01:24.637 回答
1

这会返回多少个节点?

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

你能试试吗?

对于导入,最容易从 SQL 生成 CSV 并使用http://github.com/jexp/batch-import导入

于 2013-09-16T07:25:13.123 回答
0

您是否在运行 Linux,也许在 ext4 文件系统上?

您可能想要设置 barrier=0 挂载选项,如下所述:http: //structr.org/blog/neo4j-performance-on-ext4

进一步讨论这个话题:https ://groups.google.com/forum/#!topic/neo4j/nflUyBsRKyY

于 2013-12-11T00:54:31.850 回答