修改密码

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

      数据插入

      本节介绍用于插入点、边的方法。

      方法 机制 使用场景 备注
      insertNodes()
      insertEdges()
      使用UQL 插入少量点或边
      insertNodesBatchBySchema()
      insertEdgesBatchBySchema()
      使用gRPC将数据直接发送到服务器 插入大量相同schema的点或边 有更严格的格式要求,并且必须使用与嬴图属性类型对应的Java数据类型来给属性赋值(参见属性类型映射
      insertNodesBatchAuto()
      insertEdgesBatchAuto()
      插入大量不同schema的点或边

      属性类型映射

      嬴图属性类型和Java数据类型的映射关系如下:

      嬴图属性类型
      Java数据类型
      示例
      INT32 Integer 18
      UINT32, INT64, UINT64 Long 1715169600L
      FLOAT Float 170.5f
      DOUBLE Double 170.5
      DECIMAL BigDecimal 65.32, new BigDecimal("123.4567")
      STRING, TEXT String "John Doe"
      DATETIME String[1], Date, LocalDateTime "1993-05-06", new Date(1715169600l), LocalDateTime.of(2025, 4, 22, 10, 30)
      TIMESTAMP String[1], Date "1993-05-06", new Date(1715169600l)
      BOOL Boolean true, false
      POINT com.ultipa.sdk.data.Point new Point(132.1, -1.5)
      BLOB byte[], String "abc", new byte[]{1, 2, 3}
      LIST List<> Arrays.asList("tennis", "violin")
      SET Set<> new HashSet<>(Arrays.asList(2004, 3025, 1025))

      [1] 支持的日期字符串格式包括[YY]YY-MM-DD HH:MM:SS[YY]YY-MM-DD HH:MM:SSZ[YY]YY-MM-DDTHH:MM:SSZ[YY]YY-MM-DDTHH:MM:SSXX[YY]YY-MM-DDTHH:MM:SSXXX[YY]YY-MM-DD HH:MM:SS.SSS以及它们的变体。

      示例图结构

      本节示例的点、边插入和删除基于如下的Schema和属性定义进行:

      参考此示例创建这个图结构。

      insertNodes()

      向图中某个Schema插入点。

      参数

      • nodes:List<Node>:待插入的点列表。
      • schemaName: String:Schema名称。
      • InsertRequestConfig(可选):请求配置。

      返回值

      • Response:请求结果。

      // Inserts two 'user' nodes into the graph 'social'
      
      InsertRequestConfig insertRequestConfig = new InsertRequestConfig();
      insertRequestConfig.setGraph("social");
      
      List<Node> nodes = new ArrayList<>();
      
      Node node1 = new Node();
      node1.setId("U1");
      node1.setValues(Value.newBuilder()
              .add("name", "Alice")
              .add("age", 18)
              .add("score", 65.32)
              .add("birthday", "1993-5-4")
              .add("active", false)
              .add("location", new Point(132.1, -1.5))
              .add("profile", "abc")
              .add("interests", Arrays.asList("tennis", "violin"))
              .add("permissionCodes", new HashSet<>(Arrays.asList(2004, 3025, 1025)))
               .build());
      nodes.add(node1);
      
      Node node2 = new Node();
      node2.setId("U2");
      node2.setValues(Value.newBuilder().add("name", "Bob").build());
      nodes.add(node2);
      
      Response response = driver.insertNodes("user", nodes, insertRequestConfig);
      if (response.getStatus().getCode() == Ultipa.ErrorCode.valueOf("SUCCESS")) {
          System.out.println(response.getStatus().getCode());
      } else {
          System.out.println(response.getStatus().getMsg());
      }
      

      SUCCESS
      

      insertEdges()

      向图中某个Schema插入边。

      参数

      • edges:List<Edge>:待插入的边列表;每个Edgefromto属性必填。
      • schemaName: String:Schema名称。
      • InsertRequestConfig(可选):请求配置。

      返回值

      • Response:请求结果。

      // Inserts two 'follows' edges to the graph 'social'
      
      InsertRequestConfig insertRequestConfig = new InsertRequestConfig();
      insertRequestConfig.setGraph("social");
      
      List<Edge> edges = new ArrayList<>();
      
      Edge edge1 = new Edge();
      edge1.setFrom("U1");
      edge1.setTo("U2");
      edge1.setValues(Value.newBuilder()
      		.add("createdOn", "2024-5-6")
              .add("weight", 3.2)
              .build());
      edges.add(edge1);
      
      Edge edge2 = new Edge();
      edge2.setFrom("U2");
      edge2.setTo("U1");
      edge2.setValues(Value.newBuilder().add("createdOn", 1715169600).build());
      edges.add(edge2);
      
      Response response = driver.insertEdges("follows", edges, insertRequestConfig);
      if (response.getStatus().getCode() == Ultipa.ErrorCode.valueOf("SUCCESS")) {
          System.out.println(response.getStatus().getCode());
      } else {
          System.out.println(response.getStatus().getMsg());
      }
      

      SUCCESS
      

      insertNodesBatchBySchema()

      通过gRPC向图中某个Schema插入点。此方法针对批量插入进行了优化。

      参数

      • schema: Schema:目标Schema;属性name必填,properties包含图中对应Schema关联的部分或所有属性。
      • nodes:List<Node>:待插入的点列表;每个Nodevalues属性必须与Schema.properties结构相同。
      • InsertRequestConfig(可选):请求配置。

      返回值

      • InsertResponse:插入请求结果。

      // Inserts two 'user' nodes into the graph 'social'
      
      InsertRequestConfig insertRequestConfig = new InsertRequestConfig();
      insertRequestConfig.setGraph("social");
      
      Schema schema = new Schema();
      schema.setName("user");
      schema.setProperties(new ArrayList<Property>() {{
          add(new Property() {{
          	setName("name");
          	setType(Ultipa.PropertyType.STRING);
          }});
        	/*add(new Property() {{
          	setName("age");
          	setType(Ultipa.PropertyType.INT32);
        	}});*/
        	add(new Property() {{
          	setName("score");
          	setType(Ultipa.PropertyType.DECIMAL);
          	setDecimalExtra(25, 10);
        	}});
        	add(new Property() {{
          	setName("birthday");
          	setType(Ultipa.PropertyType.DATETIME);
        	}});
        	add(new Property() {{
          	setName("active");
          	setType(Ultipa.PropertyType.BOOL);
        	}});
        	add(new Property() {{
          	setName("location");
          	setType(Ultipa.PropertyType.POINT);
        	}});
        	add(new Property() {{
          	setName("profile");
          	setType(Ultipa.PropertyType.BLOB);
        	}});
        	add(new Property() {{
          	setName("interests");
          	setType(Ultipa.PropertyType.LIST);
          	setSubType(Lists.newArrayList(Ultipa.PropertyType.STRING));
        	}});
        	add(new Property() {{
          	setName("permissionCodes");
          	setType(Ultipa.PropertyType.SET);
          	setSubType(Lists.newArrayList(Ultipa.PropertyType.INT32));
        	}});
      }});
      
      List<Node> nodes = new ArrayList<>();
      
      Node node1 = new Node();
      node1.setId("U1");
      node1.setValues(Value.newBuilder()
      		.add("name", "Alice")
          	//.add("age", 18)
              .add("score", 65.32)
              .add("birthday", "1993-05-04")
              .add("active", false)
              .add("location", new Point(132.1, -1.5))
              .add("profile", "abc")
              .add("interests", Arrays.asList("tennis", "violin"))
              .add("permissionCodes", new HashSet<>(Arrays.asList(2004, 3025, 1025)))
              .build());
      nodes.add(node1);
      
      Node node2 = new Node();
      node2.setId("U2");
      node2.setValues(Value.newBuilder()
              .add("name", "Bob")
              //.add("age", null)
              .add("score", null)
              .add("birthday", null)
              .add("active", null)
              .add("location", null)
              .add("profile", null)
              .add("interests", null)
              .add("permissionCodes", null)
              .build());
      nodes.add(node2);
      
      InsertResponse insertResponse = driver.insertNodesBatchBySchema(schema, nodes, insertRequestConfig);
      if (!insertResponse.getErrorItems().isEmpty()) {
        	System.out.println("Error items: " + insertResponse.getErrorItems());
      } else {
        	System.out.println("All nodes inserted successfully");
      }
      

      All nodes inserted successfully
      

      insertEdgesBatchBySchema()

      通过gRPC向图中某个Schema插入边。此方法针对批量插入进行了优化。

      参数

      • schema: Schema:目标Schema;属性name必填,properties包含图中对应Schema关联的部分或所有属性。
      • edges:List<Edge>:待插入的边列表;每个Edgefromto属性必填,values必须与Schema.properties结构相同。
      • InsertRequestConfig(可选):请求配置。

      返回值

      • InsertResponse:插入请求结果。

      // Inserts two 'follows' edges into the graph 'social'
      
      InsertRequestConfig insertRequestConfig = new InsertRequestConfig();
      insertRequestConfig.setGraph("social");
      
      Schema schema = new Schema();
      schema.setName("follows");
      schema.setProperties(new ArrayList<Property>() {{
          add(new Property() {{
          	setName("createdOn");
          	setType(Ultipa.PropertyType.TIMESTAMP);
        	}});
        	/*add(new Property() {{
          	setName("weight");
          	setType(Ultipa.PropertyType.FLOAT);
        	}});*/
      }});
      
      List<Edge> edges = new ArrayList<>();
      
      Edge edge1 = new Edge();
      edge1.setFrom("U1");
      edge1.setTo("U2");
      edge1.setValues(Value.newBuilder()
               .add("createdOn", "2024-05-06")
               //.add("weight", 3.2f)
               .build());
      edges.add(edge1);
      
      Edge edge2 = new Edge();
      edge2.setFrom("U2");
      edge2.setTo("U1");
      edge2.setValues(Value.newBuilder()
              .add("createdOn", new Date(1715169600l))
      		//.add("weight", null)
      		.build());
      edges.add(edge2);
      
      InsertResponse insertResponse = driver.insertEdgesBatchBySchema(schema, edges, insertRequestConfig);
      if (!insertResponse.getErrorItems().isEmpty()) {
        	System.out.println("Error items: " + insertResponse.getErrorItems());
      } else {
        	System.out.println("All edges inserted successfully");
      }
      

      All edges inserted successfully
      

      insertNodesBatchAuto()

      通过gRPC向图中一个或多个Schema插入点。此方法针对批量插入进行了优化。

      参数

      • nodes:List<Node>:待插入的点列表;每个Nodeschema必填,并且values必须包含图中对应schema关联的所有属性。
      • InsertRequestConfig(可选):请求配置。

      返回值

      • Map<String, InsertResponse>:Schema名称,插入请求结果。

      // Inserts two 'user' nodes and a 'product' node into the graph 'social'
      
      InsertRequestConfig insertRequestConfig = new InsertRequestConfig();
      insertRequestConfig.setGraph("social");
      
      List<Node> nodes = new ArrayList<>();
      
      Node node1 = new Node();
      node1.setId("U1");
      node1.setSchema("user");
      node1.setValues(Value.newBuilder()
      		.add("name", "Alice")
      		.add("age", 18)
      		.add("score", 65.32)
              .add("birthday", "1993-05-04")
              .add("active", false)
              .add("location", new Point(132.1, -1.5))
              .add("profile", "abc")
              .add("interests", Arrays.asList("tennis", "violin"))
              .add("permissionCodes", new HashSet<>(Arrays.asList(2004, 3025, 1025)))
              .build());
      nodes.add(node1);
      
      Node node2 = new Node();
      node2.setId("U2");
      node2.setSchema("user");
      node2.setValues(Value.newBuilder()
              .add("name", "Bob")
              .add("age", null)
              .add("score", null)
              .add("birthday", null)
              .add("active", null)
              .add("location", null)
              .add("profile", null)
              .add("interests", null)
              .add("permissionCodes", null)
              .build());
      nodes.add(node2);
      
      Node node3 = new Node();
      node3.setSchema("product");
      node3.setValues(Value.newBuilder()
              .add("name", "Wireless Earbud")
              .add("price", 93.2f)
              .build());
      nodes.add(node3);
      
      Map<String, InsertResponse> result = driver.insertNodesBatchAuto(nodes, insertRequestConfig);
      for (Map.Entry<String, InsertResponse> entry : result.entrySet()) {
          String schemaName = entry.getKey();
          InsertResponse insertResponse = entry.getValue();
      
          if (!insertResponse.getErrorItems().isEmpty()) {
          	System.out.println("Error items of" + schemaName + "nodes: " + insertResponse.getErrorItems());
        } else {
          	System.out.println("All " + schemaName + " nodes inserted successfully");
        }
      }
      

      All product nodes inserted successfully
      All user nodes inserted successfully
      

      insertEdgesBatchAuto()

      通过gRPC向图中一个或多个Schema插入边。此方法针对批量插入进行了优化。

      参数

      • edges:List<Edge>:待插入的边列表;每个Edgeschemafromto必填,并且values必须包含图中对应schema关联的所有属性。
      • InsertRequestConfig(可选):请求配置。

      返回值

      • Map<String, InsertResponse>:Schema名称,插入请求结果。

      // Inserts two 'follows' edges and a 'purchased' edge into the graph 'social'
      
      InsertRequestConfig insertRequestConfig = new InsertRequestConfig();
      insertRequestConfig.setGraph("social");
      
      List<Edge> edges = new ArrayList<>();
      
      Edge edge1 = new Edge();
      edge1.setFrom("U1");
      edge1.setTo("U2");
      edge1.setSchema("follows");
      edge1.setValues(Value.newBuilder()
      		.add("createdOn", "2024-05-06")
              .add("weight", 3.2f)
              .build());
      edges.add(edge1);
      
      Edge edge2 = new Edge();
      edge2.setFrom("U2");
      edge2.setTo("U1");
      edge2.setSchema("follows");
      edge2.setValues(Value.newBuilder()
      		.add("createdOn", new Date(1715169600l))
              .add("weight", null)
              .build());
      edges.add(edge2);
      
      Edge edge3 = new Edge();
      edge3.setFrom("U2");
      edge3.setTo("6809fdd90000020021000108");
      edge3.setSchema("purchased");
      edges.add(edge3);
      
      Map<String, InsertResponse> result = driver.insertEdgesBatchAuto(edges, insertRequestConfig);
      for (Map.Entry<String, InsertResponse> entry : result.entrySet()) {
          String schemaName = entry.getKey();
          InsertResponse insertResponse = entry.getValue();
      
          if (!insertResponse.getErrorItems().isEmpty()) {
          	System.out.println("Error items of" + schemaName + "edges: " + insertResponse.getErrorItems());
        } else {
          	System.out.println("All " + schemaName + " edges inserted successfully");
        }
      }
      

      All purchased edges inserted successfully
      All follows edges inserted successfully
      

      完整示例

      package com.ultipa.www.sdk.api;
      
      import com.google.common.collect.Lists;
      import com.ultipa.sdk.UltipaDriver;
      import com.ultipa.sdk.connect.conf.InsertRequestConfig;
      import com.ultipa.sdk.connect.conf.UltipaConfig;
      import com.ultipa.sdk.data.Point;
      import com.ultipa.sdk.operate.entity.*;
      import com.ultipa.sdk.operate.response.InsertResponse;
      
      import java.util.*;
      
      public class Main {
          public static void main(String[] args) {
              UltipaConfig ultipaConfig = UltipaConfig.config()
                      // URI example: .hosts(Lists.newArrayList("d3026ac361964633986849ec43b84877s.eu-south-1.cloud.ultipa.com:8443"))
                      .hosts(Lists.newArrayList("192.168.1.85:60061","192.168.1.88:60061","192.168.1.87:60061"))
                      .username("<username>")
                      .password("<password>");
      
              UltipaDriver driver = null;
      
              try {
                  driver = new UltipaDriver(ultipaConfig);
      
                  // Inserts two 'user' nodes, a 'product' node, two 'follows' edges, and a 'purchased' edge into the graph 'social'
      
                  InsertRequestConfig insertRequestConfig = new InsertRequestConfig();
                  insertRequestConfig.setGraph("social");
      
                  List<Node> nodes = new ArrayList<>();
      
                  Node node1 = new Node();
                  node1.setId("U1");
                  node1.setSchema("user");
                  node1.setValues(Value.newBuilder()
                          .add("name", "Alice")
                          .add("age", 18)
                          .add("score", 65.32)
                          .add("birthday", "1993-05-04")
                          .add("active", false)
                          .add("location", new Point(132.1, -1.5))
                          .add("profile", "abc")
                          .add("interests", Arrays.asList("tennis", "violin"))
                          .add("permissionCodes", new HashSet<>(Arrays.asList(2004, 3025, 1025)))
                          .build());
                  nodes.add(node1);
      
                  Node node2 = new Node();
                  node2.setId("U2");
                  node2.setSchema("user");
                  node2.setValues(Value.newBuilder()
                          .add("name", "Bob")
                          .add("age", null)
                          .add("score", null)
                          .add("birthday", null)
                          .add("active", null)
                          .add("location", null)
                          .add("profile", null)
                          .add("interests", null)
                          .add("permissionCodes", null)
                          .build());
                  nodes.add(node2);
      
                  Node node3 = new Node();
                  node3.setId("P1");
                  node3.setSchema("product");
                  node3.setValues(Value.newBuilder()
                          .add("name", "Wireless Earbud")
                          .add("price", 93.2f)
                          .build());
                  nodes.add(node3);
      
                  List<Edge> edges = new ArrayList<>();
      
                  Edge edge1 = new Edge();
                  edge1.setFrom("U1");
                  edge1.setTo("U2");
                  edge1.setSchema("follows");
                  edge1.setValues(Value.newBuilder()
                          .add("createdOn", "2024-05-06")
                          .add("weight", 3.2f)
                          .build());
                  edges.add(edge1);
      
                  Edge edge2 = new Edge();
                  edge2.setFrom("U2");
                  edge2.setTo("U1");
                  edge2.setSchema("follows");
                  edge2.setValues(Value.newBuilder()
                          .add("createdOn", new Date(1715169600l))
                          .add("weight", null)
                          .build());
                  edges.add(edge2);
      
                  Edge edge3 = new Edge();
                  edge3.setFrom("U2");
                  edge3.setTo("P1");
                  edge3.setSchema("purchased");
                  edges.add(edge3);
      
                  Map<String, InsertResponse> result_n = driver.insertNodesBatchAuto(nodes, insertRequestConfig);
                  for (Map.Entry<String, InsertResponse> entry : result_n.entrySet()) {
                      String schemaName = entry.getKey();
                      InsertResponse insertResponse = entry.getValue();
      
                      if (!insertResponse.getErrorItems().isEmpty()) {
                          System.out.println("Error items of" + schemaName + "nodes: " + insertResponse.getErrorItems());
                      } else {
                          System.out.println("All " + schemaName + " nodes inserted successfully");
                      }
                  }
      
                  Map<String, InsertResponse> result_e = driver.insertEdgesBatchAuto(edges, insertRequestConfig);
                  for (Map.Entry<String, InsertResponse> entry : result_e.entrySet()) {
                      String schemaName = entry.getKey();
                      InsertResponse insertResponse = entry.getValue();
      
                      if (!insertResponse.getErrorItems().isEmpty()) {
                          System.out.println("Error items of" + schemaName + "edges: " + insertResponse.getErrorItems());
                      } else {
                          System.out.println("All " + schemaName + " edges inserted successfully");
                      }
                  }
              } catch (InterruptedException e) {
                  throw new RuntimeException(e);
              } finally {
                  if (driver != null) {
                      driver.close();
                  }
              }
          }
      }
      
      请完成以下信息后可下载此书
      *
      公司名称不能为空
      *
      公司邮箱必须填写
      *
      你的名字必须填写
      *
      你的电话必须填写
      *
      你的电话必须填写