Préparer Graph
Cette page présente comment créer un modèle de graph, insérer et modifier des données de graph dans Ultipa Manager. Des démonstrations sont données à la fois comme opérations UI et UQLs.
Modèle de Graph
Le modèle de Graph dans Ultipa Graph signifie les schemas et propriétés d'un graphset :
Comment Exécuter UQL
create().graph("retail_test")
L'UQL ci-dessus créera le graphset retail_test comme sa signification littérale le décrit.
Dans Ultipa Manager, un UQL, prenez ce 'create graph' comme exemple, peut être composé dans la boîte CLI (Tableau2) ou assemblé via des opérations UI (Tableau3) :
Remarque : Pour passer au nouveau graphset après sa création, cliquez sur le bouton 'Select' du graphset comme montré dans le Tableau3. Cela n'est pas réalisé par UQL, mais une fonction du SDK utilisé par Ultipa Manager.
Créer un Modèle de Graph
Le Tableau4 montre une procédure minimale pour créer un modèle de graph. Il assemble essentiellement deux UQLs qui créent un node schema et une property via UI :
// Créer un node schema 'customer'
create().node_schema("customer")
// créer une property 'balance' sous le node schema 'customer', avec le type de donnée 'float'
create().node_property(@customer, "balance", float)
Caractéristiques de ces UQLs :
- Commence par la commande
create()
- Les
node_schema()
,node_property()
, ... suivants sont des paramètres, connectés à la commande par point '.' - Un schema doit être créé avant ses propriétés
- Les utilisateurs ne créent que les Custom Properties, mais pas les System Properties (voir explications ci-dessous)
Veuillez créer tous les schemas et leurs propriétés listés dans le Tableau1.
Les détails de la création de modèle de graph peuvent être trouvés dans la documentation de GraphSet, Schema, Property.
Métadonnées
Les métadonnées est un terme général pour nodes et edges dans le graph, c'est aussi un autre terme pour les données de graph.
Insérer des Nodes
Les nodes ont deux system properties _id
et _uuid
, ils sont tous deux les identifiants uniques inhérents à chaque node, mais avec des types de données différents.
Cliquez et lisez à propos du Identifiant Unique des métadonnées.
Les UQLs ci-dessous insèrent chacun un ou plusieurs nodes dans le schema customer :
// insérer un node, toutes les custom properties définies à null, '_id' et `_uuid` auto-générés
insert().into(@customer).nodes({})
// insérer deux nodes, toutes les custom properties définies à null, '_id' et `_uuid` auto-générés
insert().into(@customer).nodes([{},{}])
// insérer un node avec 'cust_name' défini à 'Jason', toutes les autres custom properties définies à null, '_id' et `_uuid` auto-générés
insert().into(@customer).nodes({cust_name: "Jason"})
// insérer un node avec '_id' défini à 'CU001', toutes les custom properties définies à null, `_uuid` auto-généré
insert().into(@customer).nodes({_id: "CU001"})
// insérer un node, désigner à la fois 'cust_name' et '_id', toutes les autres custom properties définies à null, `_uuid` auto-généré
insert().into(@customer).nodes({cust_name: "Jason", _id: "CU001"})
...
Caractéristiques de ces UQLs :
- Commence par la commande
insert()
- Déclarer le schema dans
into()
, organiser les valeurs des propriétés de chaque node en tant qu'objet dansnodes()
- Les custom properties non fournies seront définies à null
_id
et_uuid
non fournis seront auto-générés
Les détails de l'insertion des métadonnées peuvent être trouvés dans la documentation de Insert, Overwrite, Upsert.
Insérer des Edges
Les edges n'ont qu'un _uuid
inhérent comme identifiant unique, mais ont quatre autres system properties inhérents, à savoir, l'ID du node de départ et d'arrivée de l'edge _from
&_to
, _from_uuid
&_to_uuid
, au moins une paire d'entre eux doit être désignée lors de l'insertion d'un edge.
Les UQLs ci-dessous insèrent chacun un ou plusieurs edges dans le schema transfer, pointant de 'CU001' ou 'CU002' vers 'MC001' :
// insérer un edge, toutes les custom properties définies à null, `_uuid` auto-généré
insert().into(@transfer).edges({_from: "CU001", _to: "MC001"})
// insérer deux edges, toutes les custom properties définies à null, `_uuid` auto-généré
insert().into(@transfer).edges([{_from: "CU001", _to: "MC001"},{_from: "CU002", _to: "MC001"}])
// insérer un edge avec 'tran_amount' défini à '1000', toutes les autres custom properties définies à null, `_uuid` auto-généré
insert().into(@transfer).edges({_from: "CU001", _to: "MC001", tran_amount: "1000"})
// insérer un edge avec '_uuid' défini à '1', toutes les custom properties définies à null
insert().into(@transfer).edges({_from: "CU001", _to: "MC001", _uuid: 1})
// insérer un edge, désigner à la fois 'tran_amount' et '_uuid', toutes les autres custom properties définies à null
insert().into(@transfer).edges({_from: "CU001", _to: "MC001", tran_amount: "Jason", _uuid: "CU001"})
...
Similaire à l'insertion de nodes, ces UQLs ont les caractéristiques suivantes :
- Commence par la commande
insert()
- Déclarer le schema dans
into()
, organiser les valeurs des propriétés de chaque edge en tant qu'objet dansedges()
- Les custom properties non fournies seront définies à null
_uuid
non fourni sera auto-généré- Doit fournir
_from
et_to
(ou_from_uuid
et_to_uuid
) qui représentent des nodes déjà existants
Les détails de l'insertion des métadonnées peuvent être trouvés dans la documentation de Insert, Overwrite, Upsert.
Pour l'importation en batch de données à partir de fichiers CSV ou d'autres bases de données, veuillez vous référer à l'article Importation de Données.
Mettre à jour les Métadonnées
Exemples supplémentaires d'UQL qui mettent à jour un ou plusieurs node(s) ou edge(s) :
// mettre à jour le 'type' de tous les nodes à 'IV'
update().nodes().set({type: "IV"})
// mettre à jour le 'type' du node dont '_id' est 'CU001' à 'IV'
update().nodes({_id == "CU001"}).set({type: "IV"})
// mettre à jour le 'type' des nodes dont 'merchant_name' contient 'Beijing' à 'IV'
update().nodes({merchant_name contains "Beijing"}).set({type: "IV"})
// mettre à jour le 'result' de tous les edges à 'success'
update().edges().set({result: "success"})
// mettre à jour le 'result' de l'edge dont '_uuid' est '1' à 'success'
update().edges({_uuid == 1}).set({result: "success"})
// mettre à jour le 'result' des edges 'transfer' initiés par 'CU001' à 'success'
update().edges({@transfer._from == "CU001"}).set({result: "success"})
...
Caractéristiques de ces UQLs :
- Commence par la commande
update()
- Décrire dans
nodes()
ouedges()
les métadonnées à mettre à jour (revoyez l'article Données de Graph sur la façon de décrire nodes et edges dans UQL) - Organiser dans un objet dans
set()
les valeurs des properties à mettre à jour, les properties non fournies ne seront pas mises à jour _id
et_uuid
ne sont pas autorisés à être mis à jour
La commande
update()
est utilisée pour modifier les valeurs des propriétés des métadonnées, mais pas pour renommer les properties. Renommer les properties, schemas ou graphsets appartient à la catégorie de la modification des modèles de graph, voir les détails dans la documentation de GraphSet, Schema, Property.