首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Neo4j性能-计数节点-链表性能-替代品?

Neo4j性能-计数节点-链表性能-替代品?
EN

Stack Overflow用户
提问于 2014-09-23 00:37:16
回答 2查看 361关注 0票数 4

更新:韦斯在这里打了一个全垒打!谢谢..我添加了一个使用neography Gem开发的Rails版本。做同样的事,但他的版本更快。参见下面的比较

我正在使用Neo4j中的链接列表(1.9、REST、Cypher)来帮助保持注释的正确顺序(是的,我知道我可以按时间等进行排序)。

代码语言:javascript
复制
(object node)---[:comment]--->(comment)--->(comment)--->(comment).... etc  

目前,我有900个评论,需要7秒才能完成整个列表--完全不能接受..我只是返回节点的ID (我知道,不要这样做,但这不是我的帖子的他点)。

我想要做的是找到评论用户的ID,这样我就可以返回一个计数。(比如“乔和405人在你的帖子上发表评论”)。现在,我甚至不计算唯一的节点--我只是返回每个记录的author_id ..(我会担心稍后计数--首先要处理基本的性能问题)。

代码语言:javascript
复制
start object=node(15837) match object-[:COMMENTS*]->comments  return comments.author_id

7秒太长了。

与其使用链接列表,我只需拥有一个对象并将所有注释直接链接到节点--但这可能会导致一个超级节点陷入困境,然后找到最新的评论,即使有跳过和限制,也会很慢。

关系索引在这里有帮助吗?除了确保一种独特的关系,或者查看关系是否存在之外,我从来没有使用过它们,但是我可以在密码查询中使用它们来帮助加快速度吗?

如果没有,我还能做些什么来减少返回it所需的时间?

比较:这里是Rails版本,使用了Neography的“第二阶段”方法:

代码语言:javascript
复制
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

结果:在290 in中发现526个节点。

韦斯的解决方案花了5毫秒。:-)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-23 06:30:55

关系索引不会有帮助。我建议使用非托管扩展和遍历API--对于长列表上的这个特定查询,它将比Cypher快得多。这个例子应该能让你更接近:

https://github.com/wfreeman/linkedlistlength

我是以Mark的例子为基础的:http://www.markhneedham.com/blog/2014/07/20/neo4j-2-1-2-finding-where-i-am-in-a-linked-list/

票数 2
EN

Stack Overflow用户

发布于 2014-09-23 17:07:03

如果您这样做只是为了返回一个计数,那么这里最好的解决方案就是不要在每个查询上找出它,因为它不会经常更改它。将total_comments属性中节点上的结果缓存到节点。每次添加或删除关系时,都要更新此计数。如果您想知道当前用户的任何朋友是否对其进行了评论,以便您可以说,"Joe和其他700人对此发表了评论“,那么您可以执行第二个查询:

start joe=node(15830) object=node(15838) match joe-[:FRIENDS]->friend-[:POSTED_COMMENT]->comment<-[:COMMENTS]-object RETURN friend LIMIT 1

你限制在1,因为你只需要一个朋友的名字谁评论。如果它返回某人,调整由1显示的注释数量,包括用户名。您可以使用JS这样做,这样它就不会延迟您的页面加载。对不起,如果我的Cypher有点错误,不习惯于<2.0语法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25985130

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档