首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >什么时候应该使用推断关系和节点而不是显式关系和节点?

什么时候应该使用推断关系和节点而不是显式关系和节点?
EN

Stack Overflow用户
提问于 2020-08-03 23:56:23
回答 1查看 21关注 0票数 0

当我在Neo4j中查找如何利用临时关系时,我遇到了这个问题:Cypher temp relationship和它下面的评论让我想知道什么时候应该使用它们,既然没有人反对他,我想我应该在这里提出这个问题。

我主要来自SQL背景,我使用虚拟关系的主要原因是为了消除重复的数据,并进行遍历以获取某些东西的属性。

举一个更具体的例子,假设我们有一个健壮的蛋糕食谱,它的成分是糖。糖是使蛋糕变甜的原因。

现在想象一个用例,其中我不喜欢甜蛋糕,所以我想要获得配方中使蛋糕变甜的所有成分,并可能删除它们或找到替代方案。

然后还有另一个用例,我只想要甜食。我可以从甜食原料开始倒着吃,或者只是存储蛋糕通常是甜的,这节省了遍历的时间,使查询变得更容易。但是,正如我前面提到的,这会复制可以推断的已知数据。

如果这个例子太奇怪了,我很抱歉,我做得很糟糕。不过,我希望主要的问题能被理解。

EN

回答 1

Stack Overflow用户

发布于 2020-08-04 01:15:58

我的感觉是,创建冗余的“快捷方式”关系的唯一有效方案是:

  • 您的用例有严格的时间限制(例如,平均查询时间必须小于200ms),但是您的neo4j查询--尽管进行了优化--超出了这个限制,而且您已经验证了添加“捷径”关系确实会使响应时间变得可接受。

你应该意识到,添加多余的“捷径”关系是有代价的:

修改数据库的

  • 查询需要更复杂(以修改冗余关系),而且速度也更慢。
  • 您总是必须添加冗余关系--即使实际上您从来不需要一些(大多数?)
  • 如果你想对数据库进行并发更新,那么lose some updates and introduce inconsistencies进入数据库的机会就会增加--这意味着你必须更加努力地避免出现这种情况

注意:出于可视化的目的,您可以使用virtual nodes and relationships,它是临时的,并不实际存储在数据库中。

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

https://stackoverflow.com/questions/63232817

复制
相关文章

相似问题

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