ruby-on-rails – Neo4j性能 – 计算节点 – 链表性能 – 替代方
更新:Wes在这里打了一个本垒打!谢谢..我添加了一个我正在使用neography Gem开发的Rails版本.完成相同的事情,但他的版本更快..请参阅下面的比较
我在Neo4j(1.9,REST,Cypher)中使用链接列表来帮助保持评论的正确顺序(是的,我知道我可以对时间进行排序等). (object node)---[:comment]--->(comment)--->(comment)--->(comment).... etc 目前我有900条评论,它需要7秒才能完成整个列表 – 完全不可接受..我只是返回节点的ID(我知道,不要这样做,但不是他指向我的帖子) . 我想要做的是找到评论的用户的ID,这样我就可以返回一个计数..(比如“Joe和405其他人对你的帖子发表了评论”)..现在,我甚至没有计算在这一点 – 我只是为每条记录返回author_id ..(我会担心稍后计算 – 首先要处理基本的性能问题). start object=node(15837) match object-[:COMMENTS*]->comments return comments.author_id 7秒太长了… 我可以只使用一个对象并将所有注释直接链接到节点,而不是使用链接列表 – 但这可能会导致超级节点陷入困境,然后找到最新的注释,即使是跳过和限制,会慢狗.. 关系指数会有帮助吗?我从来没有使用它们,只是为了确保一个独特的关系,或者看看是否存在关系,但是我可以在密码查询中使用它们来帮助加快速度吗? 如果没有,我还能做些什么来减少返回ID所需的时间? 比较:以下是使用Neography gem的“第二阶段”方法的Rails版本: next_node_id=18233 @neo=Neography::Rest.new start_node = Neography::Node.load(next_node_id,@neo) all_nodes=start_node.outgoing(:COMMENTS).depth(10000) raise all_nodes.size.to_i 结果:在290ms找到526个节点.. Wes的解决方案耗时5毫秒.. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |