ArangoDB——图遍历 Graph

图遍历 Graph

  • 边缘文档(Edge)存储在边缘集合,并具有附加属性: _from 和 _to,两个或多个文档通过边缘连接起来。
    • 顶点可不必连接其他休战,也可通过多条边与一个以上的其他顶点相连,也可连接到自身的顶点。

    • 图是将节点视为圆,将边视为线或弧。术语节点和顶点可以互换使用。顶点由边连接,构成图。图有许多属性,包括每个关系的方向。
  • 图类型
    • 无向——边连接成对的节点而没有方向的概念

    • 定向——边有一个与之相关的方向(线/弧在描述中有箭头)

    • 有向无环图——边有方向并且没有环。

  • 图规范
    • 在 ArangoDB 中,每条边只有一个方向,不能同时指向两个方向。该模型也称为有向图。

    • 边始终是有向的,但是当您遍历图形或沿相反方向(INBOUND)跟随边而不是沿它们实际指向的方向(OUTBOUND)前进时,可以忽略方向(沿任何方向跟随)。遍历图形称为遍历。

  • 遍历深度
    • 遍历意味着以特定方式沿着图形的边缘行走,行走的步数。

      • 遍历 (S) 中的起始顶点的遍历深度为零。
      • 在深度 = 1 处是 S 的直接邻居(A、B 和 C)。
    • 小深度大于或等于 2 的遍历,有两种遍历图形
      • 深度优先(默认)

        • 继续沿着该路径上的起始顶点到最后一个顶点的边或直到达到最大遍历深度,然后沿着其他路径走。
      • 宽度优先(可选)

        • 跟随从起始顶点到下一层的所有边,然后跟随它们邻居的所有边到另一层并继续这种模式,直到没有更多的边可以跟随或达到最大遍历深度。
        • OPTIONS {bfs: true}
  • 图遍历查询
    • FOR vertex[, edge[, path]] IN [min[..max]] OUTBOUND|INBOUND|ANY startVertex edgeCollection[, more…]
    • FOR 发出最多三个变量
      • 顶点(对象):遍历中的当前顶点
      • edge (对象,可选): 遍历中的当前边
      • 路径(对象,可选):具有两个成员的当前路径的表示:
        • 顶点:此路径上所有顶点的数组
        • edges:此路径上所有边的数组
    • IN min..max:定义遍历的最小和最大深度。如果不指定,min默认为1,max默认为min

    • OUTBOUND/INBOUND/ANY定义您的搜索方向

    • edgeCollection:一个或多个集合名称,其中包含要在遍历中考虑的边
    • 图语句查询参数配置(options)
      • bfs 是否使用深度优先遍历查询
        • 宽度优先
          • OPTIONS {bfs: true}
        • 深度优先
          • OPTIONS {bfs: false}
      • uniqueVertices 认定遍历时节点唯一性
        • 不做任何限制。(默认)
          • OPTIONS {uniqueVertices: 'none'}
          • 此定义图查询中没有去重操作,会出现很多重复的数据及无效操作
        • 确保每个单独的路径上没有重复的顶点。
          • OPTIONS {uniqueVertices: 'path'}
          • 所有遍历的路径中没有重复。
        • 确保在整个遍历过程中访问每个可到达的顶点一次。
          • OPTIONS {uniqueVertices: 'global'}
          • 所有遍历的节点中没有重复。
      • uniqueEdges
        • 每个边只会遍历一遍。(默认)
          • OPTIONS {uniqueEdges: 'path'}
        • 不做任何限制。(不要用,可能会导致边的循环:转圈圈)
          • OPTIONS {uniqueEdges: 'none'}
      • 3.7以上才可用
        • edgeCollections 指定参与的边缘文档集合
        • vertexCollections 指定参与的节点文档集合
        • parallelism 并发设置
          • 如果省略或设置为1,遍历执行就不会并行化。如果设置为大于1的值,那么可以使用最多的工作线程并发地执行遍历。这个值的上限是目标机器上可用内核的数量。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值