Go语句属性过滤,2度以上不准确?

  • nebula 版本:2.6.1
  • 部署方式:单机
  • 是否为线上版本: N
  • 问题的具体描述
  1. 对Twitter-2010数据集进行预处理,为点、边随机生成int类型属性level,值域为[0, 9],并导入nebula
  2. 使用GO语句进行多度查询
GO 1 TO <depth> STEPS FROM <FROM_PK> OVER Know WHERE Know._dst !=  <FROM_PK> AND  Know.level == 5 YIELD Know._dst AS vid | GROUP BY $-.vid YIELD 1 AS id | GROUP BY $-.id YIELD COUNT($-.id)
  1. 对比结果
    样本点:21415375

nebula:
1度无属性过滤邻居数1000,有属性过滤邻居数114
2度无属性过滤邻居数143156,有属性过滤邻居数17236

其他数据库tiger、neo4j
1度无属性过滤邻居数1000,有属性过滤邻居数114
2度无属性过滤邻居数143156,有属性过滤邻居数966

为什么2度情况下,有属性过滤的邻居数就对不上?

补充一下stats和语句的profile

(root@nebula) [Twitter2010wp]> show stats
+---------+------------+------------+
| Type    | Name       | Count      |
+---------+------------+------------+
| "Tag"   | "Person"   | 41652230   |
| "Edge"  | "Know"     | 1468365182 |
| "Space" | "vertices" | 41652230   |
| "Space" | "edges"    | 1468365182 |
+---------+------------+------------+
-----+--------------+--------------+----------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------
| id | name         | dependencies | profiling data                                                                                                 | operator info                                                                                       |
-----+--------------+--------------+----------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------
| 10 | Aggregate    | 9            | ver: 0, rows: 1, execTime: 3654us, totalTime: 3654us                                                           | outputVar: [                                                                                        |
|    |              |              |                                                                                                                |   {                                                                                                 |
|    |              |              |                                                                                                                |     "colNames": [                                                                                   |
|    |              |              |                                                                                                                |       "COUNT($-.id)"                                                                                |
|    |              |              |                                                                                                                |     ],                                                                                              |
|    |              |              |                                                                                                                |     "type": "DATASET",                                                                              |
|    |              |              |                                                                                                                |     "name": "__Aggregate_10"                                                                        |
|    |              |              |                                                                                                                |   }                                                                                                 |
|    |              |              |                                                                                                                | ]                                                                                                   |
|    |              |              |                                                                                                                | inputVar: __Aggregate_9                                                                             |
|    |              |              |                                                                                                                | groupKeys: [                                                                                        |
|    |              |              |                                                                                                                |   "$-.id"                                                                                           |
|    |              |              |                                                                                                                | ]                                                                                                   |
|    |              |              |                                                                                                                | groupItems: [                                                                                       |
|    |              |              |                                                                                                                |   {                                                                                                 |
|    |              |              |                                                                                                                |     "expr": "COUNT($-.id)"                                                                          |
|    |              |              |                                                                                                                |   }                                                                                                 |
|    |              |              |                                                                                                                | ]                                                                                                   |
-----+--------------+--------------+----------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------
|  9 | Aggregate    | 8            | ver: 0, rows: 17236, execTime: 24661us, totalTime: 24664us                                                     | outputVar: [                                                                                        |
|    |              |              |                                                                                                                |   {                                                                                                 |
|    |              |              |                                                                                                                |     "colNames": [                                                                                   |
|    |              |              |                                                                                                                |       "id"                                                                                          |
|    |              |              |                                                                                                                |     ],                                                                                              |
|    |              |              |                                                                                                                |     "type": "DATASET",                                                                              |
|    |              |              |                                                                                                                |     "name": "__Aggregate_9"                                                                         |
|    |              |              |                                                                                                                |   }                                                                                                 |
|    |              |              |                                                                                                                | ]                                                                                                   |
|    |              |              |                                                                                                                | inputVar: __DataCollect_8                                                                           |
|    |              |              |                                                                                                                | groupKeys: [                                                                                        |
|    |              |              |                                                                                                                |   "$-.vid"                                                                                          |
|    |              |              |                                                                                                                | ]                                                                                                   |
|    |              |              |                                                                                                                | groupItems: [                                                                                       |
|    |              |              |                                                                                                                |   {                                                                                                 |
|    |              |              |                                                                                                                |     "expr": "1"                                                                                     |
|    |              |              |                                                                                                                |   }                                                                                                 |
|    |              |              |                                                                                                                | ]                                                                                                   |
-----+--------------+--------------+----------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------
|  8 | DataCollect  | 7            | ver: 0, rows: 18014, execTime: 2332us, totalTime: 2337us                                                       | outputVar: [                                                                                        |
|    |              |              |                                                                                                                |   {                                                                                                 |
|    |              |              |                                                                                                                |     "colNames": [                                                                                   |
|    |              |              |                                                                                                                |       "vid"                                                                                         |
|    |              |              |                                                                                                                |     ],                                                                                              |
|    |              |              |                                                                                                                |     "type": "DATASET",                                                                              |
|    |              |              |                                                                                                                |     "name": "__DataCollect_8"                                                                       |
|    |              |              |                                                                                                                |   }                                                                                                 |
|    |              |              |                                                                                                                | ]                                                                                                   |
|    |              |              |                                                                                                                | inputVar: [                                                                                         |
|    |              |              |                                                                                                                |   {                                                                                                 |
|    |              |              |                                                                                                                |     "colNames": [                                                                                   |
|    |              |              |                                                                                                                |       "vid"                                                                                         |
|    |              |              |                                                                                                                |     ],                                                                                              |
|    |              |              |                                                                                                                |     "type": "DATASET",                                                                              |
|    |              |              |                                                                                                                |     "name": "__Project_6"                                                                           |
|    |              |              |                                                                                                                |   }                                                                                                 |
|    |              |              |                                                                                                                | ]                                                                                                   |
|    |              |              |                                                                                                                | kind: M TO N                                                                                        |
-----+--------------+--------------+----------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------
|  7 | Loop         | 0            | ver: 0, rows: 1, execTime: 16us, totalTime: 18us                                                               | outputVar: [                                                                                        |
|    |              |              | ver: 1, rows: 1, execTime: 9us, totalTime: 9us                                                                 |   {                                                                                                 |
|    |              |              | ver: 2, rows: 1, execTime: 4us, totalTime: 4us                                                                 |     "colNames": [],                                                                                 |
|    |              |              |                                                                                                                |     "type": "DATASET",                                                                              |
|    |              |              |                                                                                                                |     "name": "__Loop_7"                                                                              |
|    |              |              |                                                                                                                |   }                                                                                                 |
|    |              |              |                                                                                                                | ]                                                                                                   |
|    |              |              |                                                                                                                | inputVar:                                                                                           |
|    |              |              |                                                                                                                | condition: ((++($__VAR_1)<=2) AND (($__GetNeighbors_2==__EMPTY__) OR (size($__GetNeighbors_2)!=0))) |
|    |              |              |                                                                                                                | loopBody: 6                                                                                         |
-----+--------------+--------------+----------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------
|  6 | Project      | 5            | ver: 0, rows: 104, execTime: 69us, totalTime: 70us                                                             | branch: true, nodeId: 7                                                                             |
|    |              |              | ver: 1, rows: 17910, execTime: 4512us, totalTime: 4514us                                                       |                                                                                                     |
|    |              |              |                                                                                                                | outputVar: [                                                                                        |
|    |              |              |                                                                                                                |   {                                                                                                 |
|    |              |              |                                                                                                                |     "colNames": [                                                                                   |
|    |              |              |                                                                                                                |       "vid"                                                                                         |
|    |              |              |                                                                                                                |     ],                                                                                              |
|    |              |              |                                                                                                                |     "type": "DATASET",                                                                              |
|    |              |              |                                                                                                                |     "name": "__Project_6"                                                                           |
|    |              |              |                                                                                                                |   }                                                                                                 |
|    |              |              |                                                                                                                | ]                                                                                                   |
|    |              |              |                                                                                                                | inputVar: __Filter_5                                                                                |
|    |              |              |                                                                                                                | columns: [                                                                                          |
|    |              |              |                                                                                                                |   "Know._dst AS vid"                                                                                |
|    |              |              |                                                                                                                | ]                                                                                                   |
-----+--------------+--------------+----------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------
|  5 | Filter       | 4            | ver: 0, rows: 0, execTime: 827us, totalTime: 829us                                                             | outputVar: [                                                                                        |
|    |              |              | ver: 1, rows: 0, execTime: 43333us, totalTime: 43335us                                                         |   {                                                                                                 |
|    |              |              |                                                                                                                |     "colNames": [],                                                                                 |
|    |              |              |                                                                                                                |     "type": "DATASET",                                                                              |
|    |              |              |                                                                                                                |     "name": "__Filter_5"                                                                            |
|    |              |              |                                                                                                                |   }                                                                                                 |
|    |              |              |                                                                                                                | ]                                                                                                   |
|    |              |              |                                                                                                                | inputVar: __GetNeighbors_2                                                                          |
|    |              |              |                                                                                                                | condition: ((Know._dst!=21415375) AND (Know.level==5))                                              |
|    |              |              |                                                                                                                | isStable: false                                                                                     |
-----+--------------+--------------+----------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------
|  4 | Dedup        | 3            | ver: 0, rows: 1000, execTime: 325us, totalTime: 326us                                                          | outputVar: [                                                                                        |
|    |              |              | ver: 1, rows: 143001, execTime: 27528us, totalTime: 27531us                                                    |   {                                                                                                 |
|    |              |              |                                                                                                                |     "colNames": [],                                                                                 |
|    |              |              |                                                                                                                |     "type": "DATASET",                                                                              |
|    |              |              |                                                                                                                |     "name": "__VAR_0"                                                                               |
|    |              |              |                                                                                                                |   }                                                                                                 |
|    |              |              |                                                                                                                | ]                                                                                                   |
|    |              |              |                                                                                                                | inputVar: __Project_3                                                                               |
-----+--------------+--------------+----------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------
|  3 | Project      | 2            | ver: 0, rows: 1000, execTime: 613us, totalTime: 614us                                                          | outputVar: [                                                                                        |
|    |              |              | ver: 1, rows: 179294, execTime: 42764us, totalTime: 42767us                                                    |   {                                                                                                 |
|    |              |              |                                                                                                                |     "colNames": [                                                                                   |
|    |              |              |                                                                                                                |       "_vid"                                                                                        |
|    |              |              |                                                                                                                |     ],                                                                                              |
|    |              |              |                                                                                                                |     "type": "DATASET",                                                                              |
|    |              |              |                                                                                                                |     "name": "__Project_3"                                                                           |
|    |              |              |                                                                                                                |   }                                                                                                 |
|    |              |              |                                                                                                                | ]                                                                                                   |
|    |              |              |                                                                                                                | inputVar: __GetNeighbors_2                                                                          |
|    |              |              |                                                                                                                | columns: [                                                                                          |
|    |              |              |                                                                                                                |   "*._dst AS _vid"                                                                                  |
|    |              |              |                                                                                                                | ]                                                                                                   |
-----+--------------+--------------+----------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------
|  2 | GetNeighbors | 1            | {                                                                                                              | outputVar: [                                                                                        |
|    |              |              | ver: 0, rows: 0, execTime: 72us, totalTime: 3665us                                                             |   {                                                                                                 |
|    |              |              | storage_detail: {GetNeighborsNode:1564(us),HashJoinNode:347(us),RelNode:1565(us),SingleEdgeNode:343(us)}       |     "colNames": [],                                                                                 |
|    |              |              | total_rpc_time: 3558(us)                                                                                       |     "type": "DATASET",                                                                              |
|    |              |              | "192.168.20.71":9779 exec/total/vertices: 1688(us)/3265(us)/1,                                                 |     "name": "__GetNeighbors_2"                                                                      |
|    |              |              | }                                                                                                              |   }                                                                                                 |
|    |              |              | {                                                                                                              | ]                                                                                                   |
|    |              |              | ver: 1, rows: 0, execTime: 401us, totalTime: 163705us                                                          | inputVar: __VAR_0                                                                                   |
|    |              |              | storage_detail: {GetNeighborsNode:92323(us),HashJoinNode:14489(us),RelNode:92368(us),SingleEdgeNode:14309(us)} | space: 5                                                                                            |
|    |              |              | total_rpc_time: 163268(us)                                                                                     | dedup: false                                                                                        |
|    |              |              | "192.168.20.71":9779 exec/total/vertices: 93012(us)/162216(us)/1000,                                           | limit: -1                                                                                           |
|    |              |              | }                                                                                                              | filter:                                                                                             |
|    |              |              |                                                                                                                | orderBy: []                                                                                         |
|    |              |              |                                                                                                                | src: COLUMN[0]                                                                                      |
|    |              |              |                                                                                                                | edgeTypes: []                                                                                       |
|    |              |              |                                                                                                                | edgeDirection: OUT_EDGE                                                                             |
|    |              |              |                                                                                                                | vertexProps:                                                                                        |
|    |              |              |                                                                                                                | edgeProps: [                                                                                        |
|    |              |              |                                                                                                                |   {                                                                                                 |
|    |              |              |                                                                                                                |     "props": [                                                                                      |
|    |              |              |                                                                                                                |       "_dst",                                                                                       |
|    |              |              |                                                                                                                |       "level"                                                                                       |
|    |              |              |                                                                                                                |     ],                                                                                              |
|    |              |              |                                                                                                                |     "type": "7"                                                                                     |
|    |              |              |                                                                                                                |   }                                                                                                 |
|    |              |              |                                                                                                                | ]                                                                                                   |
|    |              |              |                                                                                                                | statProps:                                                                                          |
|    |              |              |                                                                                                                | exprs:                                                                                              |
|    |              |              |                                                                                                                | random: false                                                                                       |
-----+--------------+--------------+----------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------
|  1 | Start        |              | ver: 0, rows: 0, execTime: 0us, totalTime: 21us                                                                | outputVar: [                                                                                        |
|    |              |              | ver: 1, rows: 0, execTime: 0us, totalTime: 18us                                                                |   {                                                                                                 |
|    |              |              |                                                                                                                |     "colNames": [],                                                                                 |
|    |              |              |                                                                                                                |     "type": "DATASET",                                                                              |
|    |              |              |                                                                                                                |     "name": "__Start_1"                                                                             |
|    |              |              |                                                                                                                |   }                                                                                                 |
|    |              |              |                                                                                                                | ]                                                                                                   |
-----+--------------+--------------+----------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------
|  0 | Start        |              | ver: 0, rows: 0, execTime: 0us, totalTime: 24us                                                                | outputVar: [                                                                                        |
|    |              |              |                                                                                                                |   {                                                                                                 |
|    |              |              |                                                                                                                |     "colNames": [],                                                                                 |
|    |              |              |                                                                                                                |     "type": "DATASET",                                                                              |
|    |              |              |                                                                                                                |     "name": "__Start_0"                                                                             |
|    |              |              |                                                                                                                |   }                                                                                                 |
|    |              |              |                                                                                                                | ]                                                                                                   |
-----+--------------+--------------+----------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------

简单的说,碰到的问题是这样的:
进行不带属性过滤的K-Neighbors时,1~6度,所有数据库都能跑出相同的邻居数 :o:
进行带属性过滤的KN时,2度开始nebula就和其他数据库不一致了 :x:

neo4j 使用的是什么语句查询的? 还有一点就是 nebula 中go 拓展的方式是 采用 walk 方式的,可以参考
https://docs.nebula-graph.com.cn/2.6.0/1.introduction/2.1.path/#walk

neo4j:

MATCH (n)-[r*..<depth>]->(m) WHERE n<>m and id(n) = <fromPk> and all(edge in r where edge.level=5) RETURN COUNT(DISTINCT m) as count

tiger:

use graph twitter2010_WithProps
CREATE OR REPLACE DISTRIBUTED QUERY KN_INT(VERTEX<Person> S, INT depth) for graph twitter2010_WithProps{

    OrAccum          @visited = false;
    SumAccum<int>    @@loop=0;
  SumAccum<int> @@count = 0;

    Start = {S};
    Start = SELECT v
            FROM Start:v
            ACCUM v.@visited = true;

    WHILE (@@loop < depth) DO
        Start = SELECT v
                FROM Start:u - (Friend:e)->:v
                WHERE v.@visited != true AND v.level==5
                POST-ACCUM v.@visited = true;
        @@count += Start.size();
        @@loop += 1;
   END;
   PRINT @@count as vertexCount;
}

INSTALL QUERY KN_INT

match 中的拓展使用的是 上述文档中 path的方式拓展的,已经访问过的边不会重复访问,和go拓展的方式是不一样的

请问能否再解释得详细一点吗?我这边已经针对边的属性进行过滤了,不应该会有增多的邻居呀 :face_with_hand_over_mouth:

@jmq2020 帮忙指出的是 GO 的游走是 walk ,所以它的游走考虑的路径数可能会多:遍历时点和边可以重复。

至于为什么属性限制的情况下2度结果不同,不知道您的GO 有属性过滤邻居数表达是什么样子的。

您能使用 MATCH 做一样的 nebula 里的查找么?