首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在neo4j中分离无关数据集的最佳方法是什么?

在neo4j中分离无关数据集的最佳方法是什么?
EN

Stack Overflow用户
提问于 2017-11-13 17:54:47
回答 1查看 42关注 0票数 0

我使用neo4j来包含来自不同源系统的临时数据集。我的数据包括几个父对象,每个对象包含不同类型的4-7层子对象。每个数据集的对象总数在2000至150万之间。我正在使用python py2neo库,它在数据创建阶段和传递用于报告的密码查询时都具有良好的性能。

为了查询和清除目的,我想将数据集从不相关的系统中分离出来,但我担心性能问题。我有一些想法,但我不清楚哪一个最有可能可行。

  1. 最容易实现的(对于我的代码)将是一个顶级的“项目”对象。然后,该项目对象将有几个直接子对象(通过关系)和许多间接子对象。我担心,当我想通过项目进行过滤时,我将不得不使用关系通配符MATCH (pr:project)<-[:IN_PROJECT*7]-(c:child_object)距离,这似乎是非常昂贵的查询。
  2. 我还可以在项目对象和项目中的每个其他对象之间建立直接关系。MATCH (pr:project)<-[:IN_PROJECT]-(c:child_object)这应该更容易编写查询,但我不知道当我有一个具有潜在数百万关系的对象时可能会发生什么。
  3. 最后,我可以在dataset中的每个对象上设置一个project属性。MATCH (c:child_object {project-id:"A1B2C3"}) --这似乎是一种浪费性的解决方案,但我认为,在图形DB模型中,它的性能可能更好。

如果我破坏了示例Cypher查询/ neo4j术语,请原谅。我把这个项目搁置了六个星期,我有点生疏了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-13 18:23:22

如果有有限的数据集,则应考虑使用专用标签来指定数据源。在Neo4j的属性图数据模型中,允许节点具有多个标签

代码语言:javascript
运行
复制
MATCH (c:child_object:DataSourceA)

标签总是被索引,所以性能应该比你的建议1-3更好。我还认为这是一个更优雅的解决方案--但是,如果您不知道预先设置的数据数量,这将变得非常棘手。在后一种情况下,您可能会使用以下内容

代码语言:javascript
运行
复制
MATCH (c:child_object)
WHERE 'DataSourceA' IN labels(c)

但是这更像是一个“全表扫描”,所以从性能上讲,您最好使用方法3并在project-id上构建一个索引。

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

https://stackoverflow.com/questions/47270594

复制
相关文章

相似问题

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