Structure de Graph
Avant de créer un graph, il est essentiel de concevoir une structure de graph appropriée en fonction du scénario spécifique. Cela établit le modèle de données, permet de comprendre le graph et facilite la récupération efficace de l'information.
Une structure de graph est définie par les labels et properties des nodes et edges, détaillant les types de nodes et edges impliqués et les attributs qu'ils possèdent. La structure du graph peut évoluer avec le temps, facilitant les ajustements selon les besoins.
Voici un exemple de structure de graph :
Label
Les labels sont utilisés pour regrouper et référencer des nodes ou edges du même type. Le modèle de données de graph ci-dessus inclut les labels suivants :
- Labels de nodes :
User
,Product
etType
- Labels d'edges :
Purchased
etHas
Dans Ultipa, la création de label utilisant GQL n'est pas prise en charge. À la place, les schemas créés par UQL servent d'équivalent des labels en GQL. Les principales caractéristiques incluent :
- Chaque node est assigné exactement un label de node, et chaque edge exactement un label d'edge. Les labels sont spécifiés lors de l'insertion de nodes et d'edges.
- Réassigner un label différent à un node ou edge n'est pas permis.
- Bien que les labels de nodes et de edges doivent être uniques, un label de node et un label d'edge peuvent partager le même nom.
Property
Les properties sont utilisées pour stocker des attributs supplémentaires pour les nodes et edges, comme name
et gender
pour les nodes étiquetés User
. Chaque property se compose de son nom et de sa valeur.
Dans Ultipa, la création de property utilisant GQL n'est pas prise en charge. À la place, les properties fournies par le système (properties système) ou créées par UQL (properties personnalisées) sont utilisées comme équivalents en GQL. Les principales caractéristiques incluent :
- Une property est associée à un label, ce qui signifie que tous les nodes ou edges avec le même label partagent le même ensemble de properties.
- Vous pouvez spécifier des valeurs pour les properties lors de l'insertion de nodes ou d'edges, et mettre à jour ou supprimer ces valeurs plus tard si nécessaire.
- Le type d'une property est soit prédéfini, soit défini lors de sa création.
Éléments de Graph
Node et Edge
Les éléments de graph se réfèrent aux nodes et edges, les deux unités fondamentales d'un graph. Typiquement, les nodes représentent des entités et les edges décrivent les relations entre les nodes.
Voici un graph créé en suivant le modèle de données ci-dessus :
Identifiants Uniques
Les nodes ont deux properties système _id
(String) et _uuid
(Uint64) servant d'identifiants uniques. La valeur de _id
doit être explicitement fournie pour chaque node lors de l'insertion de nouveaux nodes, tandis que _uuid
est automatiquement généré par le système et ne peut pas être spécifié manuellement.
Les edges ont la property système _uuid
(Uint64) comme identifiant unique. Comme pour les nodes, la valeur de _uuid
pour les edges est générée par le système et ne peut pas être spécifiée manuellement.
Direction de l'Edge
Dans Ultipa, tous les edges sont dirigés, chacun ayant un source node et un destination node, pointant de l'un vers l'autre. Le source node et le destination node sont également appelés les extrémités d'un edge. Par exemple, (:User {name: "maysoo", gender: "female"})
est le source node de trois edges étiquetés Purchased
, et chaque edge a un destination node distinct étiqueté Product
.
Supposons un edge e
avec le source node a
et le destination node b
. Dans le path (a)-[e]->(b)
, l'edge e
pointe vers la droite. Inversement, dans le path (b)<-[e]-(a)
, le même edge e
pointe vers la gauche.
Boucles
Un edge qui relie un node à lui-même, où le source node et le destination node sont les mêmes, est appelé une boucle.
Paths
Un path est une séquence d'un nombre impair d'éléments de graph connectés. Un path commence toujours (1) par et se termine toujours par un node, et (2) alterne entre nodes et edges. Un path peut se composer d'un seul node.
Dans Ultipa, par défaut, un path permet aux nodes d'être revisités mais pas aux edges (c'est-à-dire que TRAIL
est le mode de path par défaut).
Subpath
Un subpath est un path entièrement contenu dans un autre path.