【问题标题】:Starting a traversal from nodes having Labels (Traversal framework)从具有标签的节点开始遍历(遍历框架)
【发布时间】:2014-10-18 04:27:49
【问题描述】:

在我当前的模型中,我使用 Traversal 框架从特定节点开始执行查询。

(Node{id:"XXX"}) -> ...Other nodes.

出于经济原因(减少使用的节点和关系的数量),我正在考虑将标签“XXX”添加到其他节点。

知道其他节点可能是几百万个节点,我想知道是否: - 以这种方式建模是好主意还是坏主意(独立于更经济)? - 在这种情况下使用Traversal框架,我应该如何指定起始节点?

编辑

一个具体的例子:

假设我有 Person (Node:Person) 类型的用户节点。每个 Person 节点都与 Country 节点 (Node:Country) 相关,关系为 :LIVES_IN 每个人可以链接到 0..* 具有关系的人 :KNOWS

我正在使用遍历框架在 1 个国家/地区查找相互关联(直接或间接)的不同 Person 组。我通过从国家节点开始遍历并遍历 LIVES_IN 和 KNOWS 关系来做到这一点。

您可以想象,居住在同一个国家/地区的人可以达到数百万。

【问题讨论】:

    标签: neo4j traversal


    【解决方案1】:

    你应该总是尝试从这种类型和方向的关系较少的一侧来/看。

    因此,取决于您在右侧或左侧的关系较少,我会来自较小的一侧。

    你也可以看看双向遍历 api,它从两边同时进行,直到找到重叠。

    在您的具体示例中,我总是从人员方面查看,并检查他们是否在同一个国家,即 living_in 关系另一端的节点是同一个国家节点。

    所以我会首先通过其他方式关联人们(您必须处理较少的关系),然后才检查国家/地区。

    另一种选择是将居住关系子结构为州/县和市。

    那么你在国家和城市之间只有几千个关系,根据你的模型,从一个城市到另一个人也只有几千个。所以你可以先检查两边的城市,要么他们在同一个城市,要么你只检查这两个城市在同一个国家。

    【讨论】:

    • 感谢迈克尔的回答,但我不确定我是否得到了第一部分。我在原始帖子中添加了一个具体示例。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-21
    • 1970-01-01
    • 2023-03-17
    相关资源
    最近更新 更多