【问题标题】:Dgraph: Deep graph traversal possible with recurse?Dgraph:递归可以进行深度图遍历吗?
【发布时间】:2023-03-21 11:13:01
【问题描述】:

关于 Dgraph 关于图遍历的功能,我有几个问题。

假设我们有一个由 post 类型的节点组成的数据集。每个帖子可以有 n 个帖子是对该帖子的回复。这棵树的深度没有限制。

Dgraph 是否可以从一个起始节点开始搜索所有叶子节点并返回满足特定条件的所有叶子?

是否可以设置深度限制以不产生巨大的数据集?

是否也可以找到所有满足某个条件的父节点的子节点?

最后:Dgraph 中的边是有向的吗?我可以在查询中包含它吗?

【问题讨论】:

    标签: database graph-databases dgraph


    【解决方案1】:

    这里是 Dgraph 的作者。

    Dgraph 是否可以从所有叶子节点开始搜索 从一个起始节点返回满足某个特定条件的所有叶子 条件?

    是的。您可以使用递归指令 (https://docs.dgraph.io/query-language/#recurse-query)。

    是否可以设置深度限制以不以巨大 数据集?

    是的。递归支持最大深度。

    是否也可以找到所有满足某个条件的父节点的子节点?

    是的。您可以遍历一条边,并在其上放置一个过滤器。 https://docs.dgraph.io/query-language/#applying-filters

    最后:Dgraph 中的边是有向的吗?我可以在查询中包含它吗?

    dgraph 中的边是有向的。但是,Dgraph 还支持“反向”索引,可以用来自动生成反向的边。然后,您可以通过在谓词名称前添加波浪号 (~) 来遍历这些反向边缘。

    https://docs.dgraph.io/query-language/#reverse-edges

    【讨论】:

    • 感谢您的详尽回答。我真的开始喜欢 Dgraph,之前用的是 Neo4j。我喜欢它易于分发和可扩展的事实,它接近 GraphQL,它似乎非常快,它是用 Go 编写的,许可证和您团队的开发速度。感谢您创建它! Elixir 中没有客户端,只有一个 Http 包装库。这很可悲,因为 Elixir 是一种奇妙的语言。但这让我学习了 gRPC(嗯,基础知识),现在试图弄清楚自己在 Elixir 中编写一个简单的 gRPC 客户端需要做多少工作。
    猜你喜欢
    • 1970-01-01
    • 2012-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-02
    • 1970-01-01
    • 1970-01-01
    • 2018-06-10
    相关资源
    最近更新 更多