【问题标题】:Janusgraph Gremlin queryJanusgraph Gremlin 查询
【发布时间】:2019-02-14 07:56:18
【问题描述】:

对图表比较陌生。

寻求帮助以在 sql 下构建等效于 4 的 gremlin 查询。

从 table1 a, table b 中选择 a.x1,a.x2,b.y1,b.y2 其中 a.x1=b.y1 和 a.x2=b.y2。

将表格视为顶点,将 x1 x2 y1 y2 视为属性。

在janusgraph中,这些顶点没有边,属性标签也不同。在得到 的结果之前,需要检查顶点是否没有边。

【问题讨论】:

    标签: gremlin janusgraph


    【解决方案1】:

    如果没有边,那么这不是一个非常“图形”的查询,所以这可能看起来有点笨拙。我认为您将不得不使用某种形式的中间遍历V()。我这里用一点数据演示:

    gremlin> g.addV('a').property('x1',1).property('x2',2).
    ......1>   addV('b').property('y1',1).property('y2',2).
    ......2>   addV('b').property('y1',2).property('y2',3).iterate()
    gremlin> g.V().hasLabel('a').as('a').
    ......1>   V().hasLabel('b').as('b').
    ......2>   where('a', eq('b')).
    ......3>     by('x1').
    ......4>     by('y1').
    ......5>   where('a', eq('b')).
    ......6>     by('x2').
    ......7>     by('y2').
    ......8>   select('a','b').
    ......9>     by(valueMap(true))
    ==>[a:[label:a,id:0,x1:[1],x2:[2]],b:[label:b,id:3,y1:[1],y2:[2]]]
    

    我不确定是否有更好的方法来做到这一点。根据您的数据集有多大,这可能是一个非常昂贵的遍历,并且可能更适合使用 Gremlin Spark 的一种 OLAP 遍历形式。

    【讨论】:

    • 谢谢。知道如果顶点一次在 10-20 lacs 范围内会有什么表现吗?添加索引后端还不够吗?
    • 对于那个大小,我肯定会考虑使用 OLAP 方法或其他方法来确定这些类型的连接。图形经过优化,可以在数据片段(即边)之间建立直接连接 - 没有这些连接会消除您从该技术中获得的任何好处。
    • @stephenmallette 面临反序列化问题。在这里需要您的支持stackoverflow.com/questions/60263542/…
    猜你喜欢
    • 1970-01-01
    • 2019-07-27
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 2020-09-29
    • 2022-10-20
    • 1970-01-01
    相关资源
    最近更新 更多