修改密码

请输入密码
请输入密码 请输入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

      HDC投影

      概述

      HDC投影驻留在HDC(高密度计算)服务器的内存中,其中包含从分片服务器物理存储中加载的图集的全部或部分数据。

      HDC投影支持所有图算法和数据检索图查询。

      管理HDC投影

      显示HDC投影

      调用hdc.graph.show()过程获取当前图集的所有HDC投影信息:

      CALL hdc.graph.show()
      

      获取其中一个特定HDC投影信息,如名为hdcGraph_1的投影:

      CALL hdc.graph.show("hdcGraph_1")
      

      语句返回表_projectList,包含以下字段:

      字段
      描述
      project_name 投影名称
      project_type 投影类型;HDC投影的类型为hdc
      graph_name 加载数据的源图集名称
      status 投影的当前状态,包括DONECREATINGFAILEDUNKNOWN
      stats 投影包含的点边统计数据,包括schema(标签)、属性和总数
      is_default 说明该投影是否为当前图集的默认HDC投影
      hdc_server_name 托管投影的HDC服务器名称
      hdc_server_status HDC服务器的当前状态,包括ACTIVEDEAD
      config HDC投影的配置

      当使用hdc.graph.show("<projectName>")获取特定投影信息时,会额外返回两个表:

      • _graph_from_<hdcName>:显示<hdcName>上创建的所有HDC投影
      • _algoList_from_<hdcName>:列出安装在<hdcName>上的所有算法

      其中,<hdcName>是投影所在的HDC服务器名称。

      创建HDC投影

      调用hdc.graph.create().to()过程可在HDC服务器上创建一个当前图集的内存投影。创建过程以作业形式执行,稍后可使用语句CALL job.show()来验证投影是否创建成功。

      CALL hdc.graph.create("<hdcName>", "<projectName>", {
        nodes: {
          "<label?>": ["<property1?>", "<property2?>", ...],
          "<label2?>": ["<property1?>", "<property2?>", ...],
          ...
        },
        edges: {
          "<label1?>": ["<property1?>", "<property2?>", ...],
          "<label2?>": ["<property1?>", "<property2?>", ...],
          ...
        },
        direction: "<edgeDirection?>",
        load_id: <boolean?>,
        update: "<dataSyncMode>",
        query: "query",
        default: <boolean?>
      })
      
      参数 描述 可选
      <hdcName> 托管投影的HDC服务器名称
      <projectName> 投影名称。HDC服务器上的HDC投影名称必须唯一,且不可与同一图集下的分布式投影重名
      配置映射 nodes 根据标签和属性指明待投影的点。默认加载_uuid ,可通过load_id配置是否加载_id。设置为 "*": ["*"]时加载所有点
      edges 根据标签和属性指明待投影的边。默认加载所有系统属性。设置为"*": ["*"]时加载所有边
      direction 由于每条边在物理空间存储了两次(终点和一条入边以及起点和一条出边),您可选择使用in只投影入边,使用out只投影出边,或使用undirected(默认项)投影入边和出边。注意,使用inout会在计算过程中将图遍历限制为指定的方向
      load_id 设置为false时,投影各点不加载_id值以节约内存空间;默认为true
      update 设置数据同步模式。目前仅支持static模式(默认),在该模式下,物理存储中的任何数据变更均不会同步至投影中
      query 这是一个保留参数,用于设置一个查询语句来指定要投影的数据。目前仅可设置为query
      default 设置为true时,指定本投影为当前图集的默认HDC投影;默认为false

      示例

      将当前图集全部投影到hdc-server-1上并命名为hdcGraph

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

      将当前图集投影到hdc-server-1上并命名为hdcGraph_1,其中点@account@movie仅投影指定属性,边 @rate仅投影入边,且不加载点的_id值:

      CALL hdc.graph.create("hdc-server-1", "hdcGraph_1", {
        nodes: {
          "account": ["name", "gender"],
          "movie": ["name", "year"]
        },
        edges: {"rate": ["*"]},
        direction: "in",
        load_id: false,
        update: "static",
        query: "query",
        default: false
      })
      

      删除HDC投影

      调用hdc.graph.drop()过程可以从HDC服务器上删除当前图集的HDC投影。

      以下示例删除了名为hdcGraph_1的HDC投影:

      CALL hdc.graph.drop("hdcGraph_1")
      

      示例图集和投影

      在一个空图集中,运行以下语句创建示例图集:

      INSERT (a:entity {_id: "A"}),
             (b:entity {_id: "B"}),
             (c:entity {_id: "C"}),
             (d:entity {_id: "D"}),
             (a)-[:link {weight:1}]->(b),
             (a)-[:link {weight:1.5}]->(c),        
             (a)-[:link {weight:0.5}]->(d),      
             (b)-[:link {weight:2}]->(c),        
             (c)-[:link {weight:0.5}]->(d)
      

      为全图创建名为hdcGraph的HDC投影:

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

      执行查询

      暂不支持在HDC投影上执行GQL查询。

      执行算法

      HDC算法在HDC投影上执行。HDC算法支持以下六种执行模式:文件回写、数据库回写、统计回写、完整返回、流式返回和统计返回。

      回写模式

      调用algo.<algoName>("<projectName>", {params:{}, write_params:{}})过程在HDC投影上以回写模式(文件回写、数据库回写和统计回写)执行算法。

      文件回写

      在投影hdcGraph上执行度中心性算法,计算所有点的出度并将结果回写到文件degree.txt中:

      CALL algo.degree("hdcGraph", {
        params: {
          return_id_uuid: "id",
          direction: "out"
        },
        write_params: {
          file: {
            filename: "degree.txt"
          }
        }
      })
      

      结果:

      _id,degree_centrality
      D,0
      B,1
      A,3
      C,1
      

      数据库回写

      在投影hdcGraph上执行度中心性算法,计算所有点的度并将结果回写到点属性degree中:

      CALL algo.degree("hdcGraph", {
        params: {},
        write_params: {
          db: {
            property: "degree"
          }
        }
      })
      

      统计回写

      在投影hdcGraph上执行三角形计算算法,计算图中三角形的个数并将统计概述写至作业中:

      CALL algo.triangle_counting("hdcGraph", {
        params: {
          result_type: 1
        },
        write_params: {
          stats: {}
        }
      })
      

      结果:

      triangle_count
      2

      返回模式

      调用algo.<algoName>("<projectName>", {params:{}, return_params:{}})过程在HDC投影上以返回模式(完整返回、流式返回和统计返回)执行算法。

      完整返回

      在投影hdcGraph上执行度中心性算法,计算所有点的出度并返回结果:

      CALL algo.degree("hdcGraph", {
        params: {
          return_id_uuid: "id",
          direction: "out"
        },
        return_params: {}
      }) YIELD r
      RETURN r
      

      结果:

      _id degree_centrality
      D 0
      B 1
      A 3
      C 1

      流式返回

      在投影hdcGraph上执行度中心性算法,计算所有点的出度并返回结果:

      CALL algo.degree("hdcGraph", {
        params: {
          return_id_uuid: "id",
          direction: "out"
        },
        return_params: {
          type: "stream"
        }
      }) YIELD r
      RETURN r
      

      结果:

      _id degree_centrality
      D 0
      B 1
      A 3
      C 1

      统计返回

      在投影hdcGraph上执行三角形计算算法,计算图中三角形的个数并返回统计概述:

      CALL algo.triangle_counting("hdcGraph", {
        params: {
          result_type: 1
        },
        return_params: {
          type: "stats"
        }
      }) YIELD s
      RETURN s
      

      结果:

      triangle_count
      2

      图遍历方向

      在创建HDC投影时,若direction选项设定为inout,图遍历会被对应限制在入边或出边上。若在查询或算法中遍历缺失的方向,则会引发报错或生成空结果。

      创建HDC投影hdcGraph_in_edges,其中包含所有点和入边:

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

      本条查询中,度中心性算法计算投影hdcGraph_in_edges上所有点的出度,结果均为0。

      CALL algo.degree("hdcGraph_in_edges", {
        params: {
          return_id_uuid: "id",
          direction: "out"
        },
        return_params: {}
      }) YIELD r
      RETURN r
      

      结果:

      _id degree_centrality
      D 0
      B 0
      A 0
      C 0

      投影不包含点ID

      在创建HDC投影时,若load_id选项设定为false,则投影不包含点的_id值。若在查询或算法中引用了_id,则会引发报错或生成空结果。算法回写文件会用_uuid值替代_id值。

      创建图集的HDC投影hdcGraph_no_id,其中不包含点的_id值:

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

      度中心性算法计算投影hdcGraph_no_id上所有点的度,由于投影不包含点的_id值,结果中对应列的值均为空:

      CALL algo.degree("hdcGraph_no_id", {
        params: {
          return_id_uuid: "id",
        },
        return_params: {}
      }) YIELD r
      RETURN r
      

      结果:

      _id degree_centrality
      2
      2
      3
      3

      度中心性算法计算投影hdcGraph_no_id上所有点的度,并将结果回写至文件degree.txt上,其中点的_id被替换成_uuid

      CALL algo.degree("hdcGraph_no_id", {
        params: {
          return_id_uuid: "id"
        },
        write_params: {
          file: {
            filename: "degree.txt"
          }
        }
      })
      

      结果:

      _uuid,degree_centrality
      288232575174967298,2
      3530824306881724417,2
      10016007770295238657,3
      12033620403357220866,3
      

      投影不包含属性

      如果创建HDC投影时未包含某些属性,则在查询或算法引用这些属性时会引发报错或生成空结果。

      创建图集的HDC投影hdcGraph_no_weight,其中包含所有点以及边@link的系统属性:

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

      度中心性算法根据边属性@link.weight加权计算投影hdcGraph_no_weight上所有点的度。由于weight属性缺失,查询会引发报错:

      CALL algo.degree("hdcGraph_no_weight", {
        params: {
          edge_schema_property: "@link.weight"
        },
        return_params: {}
      }) YIELD r
      RETURN r
      
      请完成以下信息后可下载此书
      *
      公司名称不能为空
      *
      公司邮箱必须填写
      *
      你的名字必须填写
      *
      你的电话必须填写
      *
      你的电话必须填写