Change Password

Please enter the password.
Please enter the password. Between 8-64 characters. Not identical to your email address. Contain at least 3 of: uppercase, lowercase, numbers, and special characters.
Please enter the password.
Submit

Change Nickname

Current Nickname:
Submit

Apply New License

License Detail

Please complete this required field.

  • Ultipa Graph V4

Standalone

Please complete this required field.

Please complete this required field.

The MAC address of the server you want to deploy.

Please complete this required field.

Please complete this required field.

Cancel
Apply
ID
Product
Status
Cores
Applied Validity Period(days)
Effective Date
Excpired Date
Mac Address
Apply Comment
Review Comment
Close
Profile
  • Full Name:
  • Phone:
  • Company:
  • Company Email:
  • Country:
  • Language:
Change Password
Apply

You have no license application record.

Apply
Certificate Issued at Valid until Serial No. File
Serial No. Valid until File

Not having one? Apply now! >>>

Product Created On ID Amount (USD) Invoice
Product Created On ID Amount (USD) Invoice

No Invoice

v4.5
Search
    Français
    v4.5

      Insertion et Suppression de Données

      Cette section introduit les méthodes sur un objet Connection pour insérer des nodes et des edges dans le graph ou supprimer des nodes et des edges du graphset.

      Chaque exemple se concentre uniquement sur l'utilisation de la méthode. Pour un exemple de code complet, veuillez vous référer à l'exemple complet.

      Exemple de Modèle de Données de Graph

      Les exemples ci-dessous démontrent comment insérer ou supprimer des nodes ou des edges d'un graphset avec les définitions de schema et de propriété suivantes :

      Mapping de Type de Propriété

      Lors de l'insertion de nodes ou d'edges, vous devrez peut-être spécifier des valeurs de propriété de différents types. Le mapping entre les types de propriété Ultipa et les types de données Node.js/Driver est le suivant :

      Type de Propriété Ultipa
      Type C#/Driver
      int32 int
      uint32 uint
      int64 long
      uint64 ulong
      float float
      double double
      decimal Decimal (Type Driver)
      string String
      text String
      datetime UltipaDatetime (Type Driver)
      timestamp UltipaDatetime (Type Driver)
      point Point (Type Driver)
      blob byte[] et String
      list List
      set HashSet

      Insertion

      InsertNodes()

      Insère de nouveaux nodes d'un schema dans le graph actuel.

      Paramètres :

      • string: Nom du schema.
      • List<Node>: La liste des objets Node à insérer.
      • InsertRequestConfig (Optionnel) : Paramètres de configuration pour la demande.

      Retourne :

      • UqlResponse : Résultat de la demande. L'objet Response contient un alias nodes qui détient tous les nodes insérés lorsque InsertRequestConfig.Slient est défini à false.

      InsertRequestConfig insertRequestConfig = new InsertRequestConfig()
      {
          InsertType = InsertType.Normal,
          Graph = "lcc",
          Silent = false,
      };
      
      // Insère deux nodes dans le schema 'user' dans le graphset 'lcc', imprime le code d'erreur et les informations des nodes insérés
      
      var myPoint = new Point();
      myPoint.X = 23.63M;
      myPoint.Y = 104.25M;
      
      Node node1 = new Node()
      {
          Uuid = 1,
          Id = "U001",
          Values = new()
          {
              { "name", "Alice" },
              { "age", 18 },
              { "score", 65.32M },
              { "birthday", new DateTime(1993, 5, 4) },
              { "location", myPoint },
              { "profile", "abc" },
              {
                  "interests",
                  new List<string>() { "tennis", "violin" }
              },
              {
                  "permissionCodes",
                  new HashSet<int> { 2004, 3025, 1025 }
              },
          },
      };
      
      Node node2 = new Node()
      {
      
          Uuid = 2,
          Id = "U002",
          Values = new() { { "name", "Bob" } },
      };
      
      List<Node> nodeList = new List<Node>();
      
      nodeList.Add(node1);
      nodeList.Add(node2);
      
      var res = await ultipa.InsertNodes("user", nodeList, insertRequestConfig);
      if (res.Status.ErrorCode == 0)
      {
          Console.WriteLine("Insertion réussie");
      }
      
      // Il n'y a pas d'alias dans la réponse si InsertRequestConfig.Slient est vrai
      
      List<Node> insertedNodes = res?.Alias("nodes")?.AsNodes();
      foreach (var node in insertedNodes)
      {
          Console.WriteLine(JsonConvert.SerializeObject(node));
      }
      

      Insertion réussie
      {"Uuid":1,"Id":"U001","Schema":"user","Values":{"name":"Alice","age":18,"score":65.3200000000,"birthday":"1993-05-04T00:00:00Z","location":{"X":23.630000,"Y":104.250000},"profile":"YWJj","interests":["tennis","violin"],"permissionCodes":null}}
      {"Uuid":2,"Id":"U002","Schema":"user","Values":{"name":"Bob","age":null,"score":null,"birthday":null,"location":null,"profile":null,"interests":null,"permissionCodes":null}}
      

      InsertEdges()

      Insère de nouveaux edges d'un schema dans le graph actuel.

      Paramètres :

      • string: Nom du schema.
      • List<Edge>: La liste des objets Edge à insérer.
      • InsertRequestConfig (Optionnel) : Paramètres de configuration pour la demande.

      Retourne :

      • UqlResponse : Résultat de la demande. L'objet Response contient un alias edges qui détient tous les edges insérés lorsque InsertRequestConfig.Slient est défini à false.

      InsertRequestConfig insertRequestConfig = new InsertRequestConfig()
      {
          InsertType = InsertType.Normal,
          Graph = "lcc",
          Silent = false,
      };
      
      // Insère deux edges dans le schema 'follows' dans le graphset 'lcc', imprime le code d'erreur et les informations des edges insérés
      
      List<Edge> edgeList = new List<Edge>();
      Edge edge1 = new Edge()
      {
          Uuid = 1,
          FromId = "U001",
          ToId = "U002",
          Values = new() { { "createdOn", new DateTime(2024, 5, 6) } },
      };
      Edge edge2 = new Edge()
      {
          Uuid = 2,
          FromId = "U002",
          ToId = "U001",
          Values = new() { { "createdOn", new DateTime(2024, 5, 8) } },
      };
      
      edgeList.Add(edge1);
      edgeList.Add(edge2);
      
      var res = await ultipa.InsertEdges("follows", edgeList, insertRequestConfig);
      if (res.Status.ErrorCode == 0)
      {
          Console.WriteLine("Insertion réussie");
      }
      
      // Il n'y a pas d'alias dans la réponse si InsertRequestConfig.Slient est vrai
      
      List<Edge> insertedEdges = res?.Alias("edges")?.AsEdges();
      foreach (var edge in insertedEdges)
      {
          Console.WriteLine(JsonConvert.SerializeObject(edge));
      }
      

      Insertion réussie
      {"Uuid":1,"FromUuid":1,"ToUuid":2,"Id":"","FromId":"U001","ToId":"U002","Schema":"follows","Values":{"createdOn":"2024-05-05T16:00:00Z"}}
      {"Uuid":2,"FromUuid":2,"ToUuid":1,"Id":"","FromId":"U002","ToId":"U001","Schema":"follows","Values":{"createdOn":"2024-05-07T16:00:00Z"}}
      

      InsertNodesBatchBySchema()

      Insère de nouveaux nodes d'un schema dans le graph actuel via gRPC. Les propriétés dans les valeurs des nodes doivent être cohérentes avec celles déclarées dans la structure du schema.

      Paramètres :

      • Schema: Le schema cible.
      • List<Node>: La liste des objets Node à insérer.
      • InsertRequestConfig (Optionnel) : Paramètres de configuration pour la demande.

      Retourne :

      • InsertResponse : Résultat de la demande.

      // Insère deux nodes dans le schema 'user' dans le graphset 'lcc' et imprime le code d'erreur
      InsertRequestConfig insertRequestConfig = new InsertRequestConfig()
      {
          InsertType = InsertType.Normal,
          Graph = "lcc",
          Silent = false,
      };
      
      List<Property> properties = new List<Property>();
      Property property1 = new Property() { Name = "name", Type = PropertyType.String };
      Property property2 = new Property() { Name = "age", Type = PropertyType.Int32 };
      Property property3 = new Property() { Name = "score", Type = PropertyType.Decimal };
      Property property4 = new Property() { Name = "birthday", Type = PropertyType.Datetime };
      Property property5 = new Property() { Name = "location", Type = PropertyType.Point };
      Property property6 = new Property() { Name = "profile", Type = PropertyType.Blob };
      Property property7 = new Property()
      {
          Name = "interests",
          Type = PropertyType.List,
          SubTypes = new PropertyType[] { PropertyType.String },
      };
      Property property8 = new Property()
      {
          Name = "permissionCodes",
          Type = PropertyType.Set,
          SubTypes = new PropertyType[] { PropertyType.Int32 },
      };
      properties.Add(property1);
      properties.Add(property2);
      properties.Add(property3);
      properties.Add(property4);
      properties.Add(property5);
      properties.Add(property6);
      properties.Add(property7);
      properties.Add(property8);
      
      Schema schema = new Schema()
      {
          Name = "user",
          Properties = properties,
          DbType = DBType.Dbnode,
      };
      
      var myPoint = new Point();
      myPoint.X = 23.63M;
      myPoint.Y = 104.25M;
      
      Node node1 = new Node()
      {
          Uuid = 1,
          Id = "U001",
          Values = new()
          {
              { "name", "Alice" },
              { "age", 18 },
              { "score", 65.32M },
              { "birthday", new DateTime(1993, 5, 4) },
              { "location", myPoint },
              { "profile", new byte[] { 123 } },
              {
                  "interests",
                  new List<string> { "tennis", "violin" }
              },
              {
                  "permissionCodes",
                  new HashSet<int> { 2004, 3025, 1025 }
              },
          },
      };
      
      Node node2 = new Node()
      {
          Uuid = 2,
          Id = "U002",
          Values = new() { { "name", "Bob" } },
      };
      
      List<Node> nodeList = new List<Node>();
      nodeList.Add(node1);
      nodeList.Add(node2);
      
      var res = ultipa.InsertNodesBatchBySchema(schema, nodeList, insertRequestConfig);
      Console.WriteLine(res.Status.ErrorCode);
      Console.WriteLine(JsonConvert.SerializeObject(res));
      

      Succès
      {"Status":{"ErrorCode":0,"Msg":"","ClusterInfo":null},"Statistic":{"NodeAffected":0,"EdgeAffected":0,"TotalCost":0,"EngineCost":0},"Data":{"Uuids":[1,2],"Ids":[],"ErrorItem":{}}}
      

      InsertEdgesBatchBySchema()

      Insère de nouveaux edges d'un schema dans le graphique actuel via gRPC. Les propriétés dans les valeurs des edges doivent être cohérentes avec celles déclarées dans la structure du schema.

      Paramètres :

      • Schema: Le schema cible.
      • List<Edge>: La liste des objets Edge à insérer.
      • InsertRequestConfig (Optionnel) : Paramètres de configuration pour la demande.

      Retourne :

      • InsertResponse : Résultat de la demande.

      // Insère deux edges dans le schema 'follows' dans le graphset 'lcc' et imprime le code d'erreur
      
      InsertRequestConfig insertRequestConfig = new InsertRequestConfig()
      {
          InsertType = InsertType.Normal,
          Graph = "lcc",
          Silent = false,
      };
      
      List<Property> properties = new List<Property>();
      Property property = new Property() { Name = "createdOn", Type = PropertyType.Datetime };
      properties.Add(property);
      
      Schema schema = new Schema() { Name = "follows", Properties = properties };
      
      List<Edge> edgeList = new List<Edge>();
      Edge edge1 = new Edge()
      {
          Uuid = 1,
          FromId = "U001",
          ToId = "U002",
          Values = new() { { "createdOn", new DateTime(2024, 5, 6) } },
      };
      Edge edge2 = new Edge()
      {
          Uuid = 2,
          FromId = "U002",
          ToId = "U001",
          Values = new() { { "createdOn", new DateTime(2024, 5, 8) } },
      };
      edgeList.Add(edge1);
      edgeList.Add(edge2);
      
      var res = ultipa.InsertEdgesBatchBySchema(schema, edgeList, insertRequestConfig);
      Console.WriteLine(res.Status.ErrorCode);
      Console.WriteLine(JsonConvert.SerializeObject(res.Data));
      

      Succès
      {"Uuids":[1,2],"Ids":[],"ErrorItem":{}}
      

      InsertNodesBatchAuto()

      Insère de nouveaux nodes d'un ou plusieurs schemas dans le graph actuel via gRPC. Les propriétés dans les valeurs des nodes doivent être cohérentes avec celles définies dans la structure du schema correspondant.

      Paramètres :

      • List<Node>: La liste des objets Node à insérer.
      • InsertRequestConfig (Optionnel) : Paramètres de configuration pour la demande.

      Retourne :

      • Dictionary<string,InsertResponse> : Résultat de la demande.

      // Insère deux nodes dans le schema 'user' et un node dans le schema `product` dans le graphset 'lcc' et imprime le code d'erreur
      
      InsertRequestConfig insertRequestConfig = new InsertRequestConfig()
      {
          InsertType = InsertType.Normal,
          Graph = "lcc",
          Silent = false,
      };
      
      var myPoint = new Point();
      myPoint.X = 23.63M;
      myPoint.Y = 104.25M;
      
      Node node1 = new Node()
      {
          Schema = "user",
          Uuid = 1,
          Id = "U001",
          Values = new()
          {
              { "name", "Alice" },
              { "age", 18 },
              { "score", 65.32M },
              { "birthday", new DateTime(1993, 5, 4) },
              { "location", myPoint },
              { "profile", new byte[] { 123 } },
              {
                  "interests",
                  new List<string>() { "tennis", "violin" }
              },
              {
                  "permissionCodes",
                  new HashSet<int> { 2004, 3025, 1025 }
              },
          },
      };
      
      Node node2 = new Node()
      {
          Schema = "user",
          Uuid = 2,
          Id = "U002",
          Values = new() { { "name", "Bob" } },
      };
      
      Node node3 = new Node()
      {
          Schema = "product",
          Uuid = 3,
          Id = "P001",
          Values = new() { { "name", "Wireless Earbud" }, { "price", 93.2F } },
      };
      
      List<Node> nodeList = new List<Node>();
      
      nodeList.Add(node1);
      nodeList.Add(node2);
      nodeList.Add(node3);
      
      var res = await ultipa.InsertNodesBatchAuto(nodeList, insertRequestConfig);
      Console.WriteLine(JsonConvert.SerializeObject(res));
      

      {"user":{"Status":{"ErrorCode":0,"Msg":"","ClusterInfo":null},"Statistic":{"NodeAffected":0,"EdgeAffected":0,"TotalCost":0,"EngineCost":0},"Data":{"Uuids":[1,2],"Ids":[],"ErrorItem":{}}},"product":{"Status":{"ErrorCode":1,"Msg":"Duplicated ids!","ClusterInfo":null},"Statistic":{"NodeAffected":0,"EdgeAffected":0,"TotalCost":0,"EngineCost":0},"Data":{"Uuids":[],"Ids":[],"ErrorItem":{}}}}
      

      InsertEdgesBatchAuto()

      Insère de nouveaux edges d'un ou plusieurs schemas dans le graph actuel via gRPC. Les propriétés dans les valeurs des edges doivent être cohérentes avec celles définies dans la structure du schema correspondant.

      Paramètres :

      • List<Edge>: La liste des objets Edge à insérer.
      • InsertRequestConfig (Optionnel) : Paramètres de configuration pour la demande.

      Retourne :

      • Dictionary<string,InsertResponse> : Résultat de la demande.

      // Insère deux edges dans le schema 'follows' et un edge dans le schema 'purchased' dans le graphset 'lcc' et imprime le code d'erreur
      
      InsertRequestConfig insertRequestConfig = new InsertRequestConfig()
      {
          InsertType = InsertType.Normal,
          Graph = "lcc",
          Silent = false,
      };
      
      List<Edge> edgeList = new List<Edge>();
      Edge edge1 = new Edge()
      {
          Schema = "follows",
          Uuid = 1,
          FromId = "U001",
          ToId = "U002",
          Values = new() { { "createdOn", new DateTime(2024, 5, 6) } },
      };
      Edge edge2 = new Edge()
      {
          Schema = "follows",
          Uuid = 2,
          FromId = "U002",
          ToId = "U001",
          Values = new() { { "createdOn", new DateTime(2024, 5, 8) } },
      };
      Edge edge3 = new Edge()
      {
          Schema = "purchased",
          Uuid = 3,
          FromId = "U002",
          ToId = "P001",
          Values = new() { { "qty", 1 } },
      };
      
      edgeList.Add(edge1);
      edgeList.Add(edge2);
      edgeList.Add(edge3);
      
      var res = await ultipa.InsertEdgesBatchAuto(edgeList, insertRequestConfig);
      Console.WriteLine(JsonConvert.SerializeObject(res));
      

      {"follows":{"Status":{"ErrorCode":0,"Msg":"insert edges succeed!","ClusterInfo":null},"Statistic":{"NodeAffected":0,"EdgeAffected":0,"TotalCost":0,"EngineCost":0},"Data":{"Uuids":[1,2],"Ids":[],"ErrorItem":{}}},"purchased":{"Status":{"ErrorCode":0,"Msg":"insert edges succeed!","ClusterInfo":null},"Statistic":{"NodeAffected":0,"EdgeAffected":0,"TotalCost":0,"EngineCost":0},"Data":{"Uuids":[3],"Ids":[],"ErrorItem":{}}}}
      

      Suppression

      DeleteNodes()

      Supprime les nodes qui répondent aux conditions données du graph actuel. Il est important de noter que supprimer un node entraîne la suppression de tous les edges qui lui sont connectés.

      Paramètres :

      • string: La condition de filtrage pour spécifier les nodes à supprimer.
      • InsertRequestConfig (Optionnel) : Paramètres de configuration pour la demande.

      Retourne :

      • <UqlResponse, List<Node>?> : Résultat de la demande. L'objet Response contient un alias nodes qui détient tous les nodes supprimés lorsque InsertRequestConfig.Slient est défini à false.

      // Supprime un node @user dont le nom est 'Alice' du graphset 'lcc' et imprime le code d'erreur
      // Tous les edges attachés au node supprimé sont également supprimés
      
      InsertRequestConfig insertRequestConfig = new InsertRequestConfig()
      {
          InsertType = InsertType.Normal,
          Graph = "lcc",
          Silent = false,
      };
      
      var res = await ultipa.DeleteNodes("@user.name == 'Alice'", insertRequestConfig);
      Console.WriteLine(res.Item1.Status.ErrorCode);
      Console.WriteLine(JsonConvert.SerializeObject(res.Item2));
      

      Succès
      [{"Uuid":1,"Id":"U001","Schema":"user","Values":{}}]
      

      DeleteEdges()

      Supprime les edges qui répondent aux conditions données du graph actuel.

      Paramètres :

      • string: La condition de filtrage pour spécifier les edges à supprimer.
      • InsertRequestConfig (Optionnel) : Paramètres de configuration pour la demande.

      Retourne :

      • <UqlResponse, List<Edge>?> : Résultat de la demande. L'objet Response contient un alias edges qui détient tous les edges supprimés lorsque InsertRequestConfig.Slient est défini à false.

      // Supprime tous les edges @purchased du graphset 'lcc' et imprime le code d'erreur
      
      InsertRequestConfig insertRequestConfig = new InsertRequestConfig()
      {
          InsertType = InsertType.Normal,
          Graph = "lcc",
          Silent = false,
      };
      
      var res = await ultipa.DeleteEdges("@purchased", insertRequestConfig);
      Console.WriteLine(res.Item1.Status.ErrorCode);
      Console.WriteLine(JsonConvert.SerializeObject(res.Item2));
      

      Succès
      [{"Uuid":3,"FromUuid":2,"ToUuid":3,"Id":"","FromId":"U002","ToId":"P001","Schema":"purchased","Values":{}}]
      

      Exemple Complet

      using System.Data;
      using System.Security.Cryptography.X509Certificates;
      using System.Xml.Linq;
      using Google.Protobuf.WellKnownTypes;
      using Microsoft.Extensions.Logging;
      using Newtonsoft.Json;
      using UltipaService;
      using UltipaSharp;
      using UltipaSharp.api;
      using UltipaSharp.configuration;
      using UltipaSharp.connection;
      using UltipaSharp.exceptions;
      using UltipaSharp.structs;
      using UltipaSharp.utils;
      using Logger = UltipaSharp.utils.Logger;
      using Property = UltipaSharp.structs.Property;
      using Schema = UltipaSharp.structs.Schema;
      
      class Program
      {
          static async Task Main(string[] args)
          {
              // Configurations de connexion
              // Exemple URI : Hosts=new[]{"mqj4zouys.us-east-1.cloud.ultipa.com:60010"}
              var myconfig = new UltipaConfig()
              {
                  Hosts = new[] { "192.168.1.85:60061", "192.168.1.86:60061", "192.168.1.87:60061" },
                  Username = "***",
                  Password = "***",
              };
      
              // Établit une connexion à la base de données
              var ultipa = new Ultipa(myconfig);
              var isSuccess = ultipa.Test();
              Console.WriteLine(isSuccess);
      
              // Configurations de la demande d'insertion
              InsertRequestConfig insertRequestConfig = new InsertRequestConfig()
              {
                  InsertType = InsertType.Normal,
                  Graph = "lcc",
                  Silent = false,
              };
      
              // Insère deux nodes dans le schema 'user' et un node dans le schema `product` dans le graphset 'lcc', imprime le code d'erreur et la réponse de l'insertion
              var myPoint = new Point();
              myPoint.X = 23.63M;
              myPoint.Y = 104.25M;
      
              Node node1 = new Node()
              {
                  Schema = "user",
                  Uuid = 1,
                  Id = "U001",
                  Values = new()
                  {
                      { "name", "Alice" },
                      { "age", 18 },
                      { "score", 65.32M },
                      { "birthday", new DateTime(1993, 5, 4) },
                      { "location", myPoint },
                      { "profile", new byte[] { 123 } },
                      {
                          "interests",
                          new List<string>() { "tennis", "violin" }
                      },
                      {
                          "permissionCodes",
                          new HashSet<int> { 2004, 3025, 1025 }
                      },
                  },
              };
      
              Node node2 = new Node()
              {
                  Schema = "user",
                  Uuid = 2,
                  Id = "U002",
                  Values = new() { { "name", "Bob" } },
              };
      
              Node node3 = new Node()
              {
                  Schema = "product",
                  Uuid = 3,
                  Id = "P001",
                  Values = new() { { "name", "Wireless Earbud" }, { "price", 93.2F } },
              };
      
              List<Node> nodeList = new List<Node>();
      
              nodeList.Add(node1);
              nodeList.Add(node2);
              nodeList.Add(node3);
      
              var res = await ultipa.InsertNodesBatchAuto(nodeList, insertRequestConfig);
              Console.WriteLine(JsonConvert.SerializeObject(res));
          }
      }
      
      Please complete the following information to download this book
      *
      公司名称不能为空
      *
      公司邮箱必须填写
      *
      你的名字必须填写
      *
      你的电话必须填写