修改密码

请输入密码
请输入密码 请输入8-64长度密码 和 email 地址不相同 至少包括数字、大写字母、小写字母、半角符号中的 3 个
请输入密码
提交

修改昵称

当前昵称:
提交

申请证书

证书详情

Please complete this required field.

  • Ultipa Graph V4

Standalone

Please complete this required field.

Please complete this required field.

服务器的MAC地址

Please complete this required field.

Please complete this required field.

取消
申请
ID
产品
状态
核数
申请天数
审批时间
过期时间
MAC地址
申请理由
审核信息
关闭
基础信息
  • 用户昵称:
  • 手机号:
  • 公司名称:
  • 公司邮箱:
  • 地区:
  • 语言:
修改密码
申请证书

当前未申请证书.

申请证书
Certificate Issued at Valid until Serial No. File
Serial No. Valid until File

Not having one? Apply now! >>>

ProductName CreateTime ID Price File
ProductName CreateTime ID Price File

No Invoice

v5.0
搜索
    v5.0

      全图K邻

      HDC

      概述

      全图K邻算法能识别图中每个节点的邻域。该算法广泛应用于关系发现、影响力预测、好友推荐等场景中。

      全图K邻算法可以看作是K邻查询UQL命令的批量执行。

      特殊说明

      尽管全图K邻算法针对高并发性能进行了优化,但需要注意,在处理大型图(具有数千万个节点或边的图)或包含许多超级节点的图时,此算法仍会消耗大量计算资源。为了优化性能,要充分考虑图的特定特征和大小,建议避免执行过深的全图K邻计算。

      在图G=(V, E)中,如果|E|/|V|=100,理论上查询一个节点的5跳邻居需要105(相当于100亿次计算)的计算复杂度,大约需要100毫秒。由此推断,在具有1千万节点的图中完成此类查询将需要100万秒(相当于约12天)。在处理这种规模的图形时,考虑计算需求和时间要求非常重要。

      示例图集

      创建示例图集:

      // 在空图集中逐行运行以下语句
      create().node_schema("card").edge_schema("transfer")
      create().node_property(@card, "level", int32).node_property(@card, "balance", double)
      insert().into(@card).nodes([{_id:"card1", level:1, balance:258.5}, {_id:"card2", level:1, balance:2421.6}, {_id:"card3", level:3, balance:850.71}, {_id:"card4", level:2, balance:4768.8}, {_id:"card5", level:5, balance:1541.55}, {_id:"card6", level:2, balance:3116.7}, {_id:"card7", level:4, balance:3902.8}, {_id:"card8", level:4, balance:27123.8}])
      insert().into(@transfer).edges([{_from:"card1", _to:"card2"}, {_from:"card2", _to:"card3"}, {_from:"card2", _to:"card7"}, {_from:"card2", _to:"card7"}, {_from:"card3", _to:"card4"}, {_from:"card4", _to:"card3"}, {_from:"card5", _to:"card2"}, {_from:"card6", _to:"card2"}, {_from:"card7", _to:"card3"}, {_from:"card8", _to:"card3"}])
      

      创建HDC图集

      将当前图集全部加载到HDC服务器hdc-server-1上,并命名为 hdc_khop_all

      CALL hdc.graph.create("hdc-server-1", "hdc_khop_all", {
        nodes: {"*": ["*"]},
        edges: {"*": ["*"]},
        direction: "undirected",
        load_id: true,
        update: "static",
        query: "query",
        default: false
      })
      

      hdc.graph.create("hdc_khop_all", {
        nodes: {"*": ["*"]},
        edges: {"*": ["*"]},
        direction: "undirected",
        load_id: true,
        update: "static",
        query: "query",
        default: false
      }).to("hdc-server-1")
      

      参数

      算法名:khop_all

      参数名
      类型
      规范
      默认值
      可选
      描述
      ids []_id / / 通过_id指定参与计算的第一组点;若未设置则计算所有点
      uuids []_uuid / / 通过_uuid指定参与计算的第一组点;若未设置则计算所有点
      k_start Integer ≥1 1 K邻查询的起始深度,查询深度范围为[k_start, k_end]
      k_end Integer ≥1 1 K邻查询的终止深度,查询深度范围为[k_start, k_end]
      direction String in, out / 最短路径中所有边的方向
      node_property []"<@schema.?><property>" / / 进行聚合计算的数值类型点属性。 该选项必须与aggregate_opt配合使用
      aggregate_opt []String max, min, mean, sum, var, dev / 对给定点属性值进行聚合计算的类型。该选项必须与node_property配合使用,其中每个聚合类型对应一种属性。

      聚合类型包括:
      • max:最大值
      • min:最小值
      • mean:平均值
      • sum:求和
      • var:方差
      • dev:标准差
      src_include Integer 0, 1 0 是否在结果中包含目标节点;1表示包含,0表示不包含
      return_id_uuid String uuid, id, both uuid 在结果中使用_uuid_id或同时使用两者来表示
      limit Integer ≥-1 -1 限制返回的结果数;-1返回所有结果

      文件回写

      该算法可生成两个文件:

      配置项
      内容
      filename_ids
      • _id/_uuid:目标节点
      • _id/_uuid:目标节点的邻居
      filename
      • _id/_uuid:目标节点
      • aggregate_opt:聚合结果
      • count:目标节点的邻居数

      CALL algo.khop_all.write("hdc_khop_all", {
        params: {
          return_id_uuid: "id",
          ids: ["card1", "card7"],
          k_start: 2,
          k_end: 3,
          direction: "out",
          node_property: ["@card.level", "@card.balance"],
          aggregate_opt: ["sum", "mean"]
        },
        return_params: {
          file: {
            filename_ids: "neighbors",
            filename: "aggregations"
          }
        }
      })
      

      algo(khop_all).params({
        projection: "hdc_khop_all",
          return_id_uuid: "id",
          ids: ["card1", "card7"],
          k_start: 2,
          k_end: 3,
          direction: "out",
          node_property: ["@card.level", "@card.balance"],
          aggregate_opt: ["sum", "mean"]
      }).write({
        file: {
          filename_ids: "neighbors",
          filename: "aggregations"
        }
      })
      

      结果:

      _id,_id
      card1,card3
      card1,card7
      card1,card4
      card7,card4
      

      _id,sum,mean,count
      card1,9,3174.1,3
      card7,2,4768.8,1
      

      数据库回写

      将结果中的count值写入指定点属性。该属性类型为double

      CALL algo.khop_all.write("hdc_khop_all", {
        params: {
          k_start: 2,
          k_end: 2
        },
        return_params: {
          db: {
            property: "khop2"
          }
        }
      })
      

      algo(khop_all).params({
        projection: "hdc_khop_all",
          k_start: 2,
          k_end: 2
      }).write({
        db: {
          property: "khop2"
        }
      })
      

      完整返回

      CALL algo.khop_all("hdc_khop_all", {
        params: {
          return_id_uuid: "id",
          ids: ["card1", "card7"],
          k_start: 2,
          k_end: 3,
          node_property: ["@card.level", "@card.balance"],
          aggregate_opt: ["max", "mean"]
        },
        return_params: {}
      }) YIELD r
      RETURN r
      

      exec{
        algo(khop_all).params({
          return_id_uuid: "id",
          ids: ["card1", "card7"],
          k_start: 2,
          k_end: 3,
          node_property: ["@card.level", "@card.balance"],
          aggregate_opt: ["max", "mean"]
        }) as r
        return r
      } on hdc_khop_all
      

      结果:

      _id max mean count
      card1 5 6884.06 6
      card7 5 7361.87 5

      流式返回

      CALL algo.khop_all("hdc_khop_all", {
        params: {
          return_id_uuid: "id",
          ids: "card2",
          k_start: 2,
          k_end: 2,
          node_property:  "@card.balance",
          aggregate_opt: "max"   
        },
        return_params: {
        	stream: {}
        }
      }) YIELD results
      RETURN results
      

      exec{
        algo(khop_all).params({
          return_id_uuid: "id",
          ids: "card2",
          k_start: 2,
          k_end: 2,
          node_property:  "@card.balance",
          aggregate_opt: "max"   
        }).stream() as results
        return results
      } on hdc_khop_all
      

      结果:

      _id max count
      card2 27123.8 2
      请完成以下信息后可下载此书
      *
      公司名称不能为空
      *
      公司邮箱必须填写
      *
      你的名字必须填写
      *
      你的电话必须填写
      *
      你的电话必须填写