Prise en charge des graphes Azure Cosmos DB GremlinAzure Cosmos DB Gremlin graph support

Azure Cosmos DB prend en charge le langage de traversées de graphes Apache Tinkerpop, connu sous le nom de Gremlin.Azure Cosmos DB supports Apache Tinkerpop's graph traversal language, known as Gremlin. Vous pouvez utiliser le langage Gremlin pour créer des entités de graphes (vertex et bords), modifier les propriétés au sein de ces entités, exécuter des requêtes et traversées et supprimer des entités.You can use the Gremlin language to create graph entities (vertices and edges), modify properties within those entities, perform queries and traversals, and delete entities.

Dans cet article, nous fournissons une procédure pas à pas pour Gremlin, et nous énumérons les fonctionnalités Gremlin qui sont prises en charge par l’API Gremlin.In this article, we provide a quick walkthrough of Gremlin and enumerate the Gremlin features that are supported by the Gremlin API.

Bibliothèques clientes compatiblesCompatible client libraries

Le tableau suivant présente des pilotes Gremlin courants que vous pouvez utiliser sur Azure Cosmos DB :The following table shows popular Gremlin drivers that you can use against Azure Cosmos DB:

TéléchargementDownload SourceSource Mise en routeGetting Started Version du connecteur prise en chargeSupported connector version
.NET.NET Gremlin.NET sur GitHubGremlin.NET on GitHub Créer un graphe avec .NETCreate Graph using .NET 3.4.0-RC23.4.0-RC2
JavaJava Gremlin JavaDocGremlin JavaDoc Créer un graphe avec JavaCreate Graph using Java 3.2.0+3.2.0+
Node.JSNode.js Gremlin-JavaScript sur GitHubGremlin-JavaScript on GitHub Créer un graphe avec Node.jsCreate Graph using Node.js 3.3.4+3.3.4+
PythonPython Gremlin-Python sur GitHubGremlin-Python on GitHub Créer un graphe avec PythonCreate Graph using Python 3.2.73.2.7
PHPPHP Gremlin-PHP sur GitHubGremlin-PHP on GitHub Créer un graphe avec PHPCreate Graph using PHP 3.1.03.1.0
Console GremlinGremlin console Documents TinkerPopTinkerPop docs Créer un graphe à l’aide de la console GremlinCreate Graph using Gremlin Console 3.2.0 +3.2.0 +

Objets graphiques pris en chargeSupported Graph Objects

TinkerPop est une norme qui couvre un large éventail de technologies de graphes.TinkerPop is a standard that covers a wide range of graph technologies. Par conséquent, elle dispose de la terminologie standard utilisée pour décrire les fonctionnalités offertes par un fournisseur de graphes.Therefore, it has standard terminology to describe what features are provided by a graph provider. Azure Cosmos DB fournit une base de données de graphes permanente, concurrentielle et accessible en écriture qui peut être partitionnée entre plusieurs serveurs ou clusters.Azure Cosmos DB provides a persistent, high concurrency, writeable graph database that can be partitioned across multiple servers or clusters.

Le tableau suivant répertorie les fonctionnalités TinkerPop implémentées par Azure Cosmos DB :The following table lists the TinkerPop features that are implemented by Azure Cosmos DB:

CategoryCategory Implémentation d’Azure Cosmos DBAzure Cosmos DB implementation NotesNotes
Fonctionnalités de grapheGraph features Fournit la persistance et ConcurrentAccess.Provides Persistence and ConcurrentAccess. Conçu pour prendre en charge les transactionsDesigned to support Transactions Les méthodes de l’ordinateur peuvent être implémentées via le connecteur Spark.Computer methods can be implemented via the Spark connector.
Fonctionnalités variablesVariable features Prend en charge les valeurs booléennes, entières, byte, doubles, flottantes, longues et de chaîneSupports Boolean, Integer, Byte, Double, Float, Integer, Long, String Prend en charge les types primitifs, et est compatible avec des types complexes via un modèle de donnéesSupports primitive types, is compatible with complex types via data model
Fonctionnalités de vertexVertex features Prend en charge RemoveVertices, MetaProperties, AddVertices, MultiProperties, StringIds, UserSuppliedIds, AddProperty, RemovePropertySupports RemoveVertices, MetaProperties, AddVertices, MultiProperties, StringIds, UserSuppliedIds, AddProperty, RemoveProperty Prend en charge la création, la modification et la suppression de vertexSupports creating, modifying, and deleting vertices
Fonctionnalités de propriétés de vertexVertex property features StringIds, UserSuppliedIds, AddProperty, RemoveProperty, BooleanValues, ByteValues, DoubleValues, FloatValues, IntegerValues, LongValues, StringValuesStringIds, UserSuppliedIds, AddProperty, RemoveProperty, BooleanValues, ByteValues, DoubleValues, FloatValues, IntegerValues, LongValues, StringValues Prend en charge la création, la modification et la suppression des propriétés vertexSupports creating, modifying, and deleting vertex properties
Fonctionnalités de bordsEdge features AddEdges, RemoveEdges, StringIds, UserSuppliedIds, AddProperty, RemovePropertyAddEdges, RemoveEdges, StringIds, UserSuppliedIds, AddProperty, RemoveProperty Prend en charge la création, la modification et la suppression de bordsSupports creating, modifying, and deleting edges
Fonctionnalités de propriétés de bordsEdge property features Properties, BooleanValues, ByteValues, DoubleValues, FloatValues, IntegerValues, LongValues, StringValuesProperties, BooleanValues, ByteValues, DoubleValues, FloatValues, IntegerValues, LongValues, StringValues Prend en charge la création, la modification et la suppression de bordsSupports creating, modifying, and deleting edge properties

Format de câble Gremlin : GraphSONGremlin wire format: GraphSON

Azure Cosmos DB utilise le format GraphSON lors du renvoi des résultats des opérations Gremlin.Azure Cosmos DB uses the GraphSON format when returning results from Gremlin operations. Azure Cosmos DB prend actuellement en charge la version « GraphSONv2 ».Azure Cosmos DB currently supports "GraphSONv2" version. GraphSON est le format standard Gremlin pour représenter des vertex, des bords et des propriétés (propriétés à valeurs uniques et multiples) à l’aide de JSON.GraphSON is the Gremlin standard format for representing vertices, edges, and properties (single and multi-valued properties) using JSON.

Par exemple, l’extrait de code suivant montre une représentation sous forme de GraphSON d’un sommet retourné au client dans Azure Cosmos DB.For example, the following snippet shows a GraphSON representation of a vertex returned to the client from Azure Cosmos DB.

  {
    "id": "a7111ba7-0ea1-43c9-b6b2-efc5e3aea4c0",
    "label": "person",
    "type": "vertex",
    "outE": {
      "knows": [
        {
          "id": "3ee53a60-c561-4c5e-9a9f-9c7924bc9aef",
          "inV": "04779300-1c8e-489d-9493-50fd1325a658"
        },
        {
          "id": "21984248-ee9e-43a8-a7f6-30642bc14609",
          "inV": "a8e3e741-2ef7-4c01-b7c8-199f8e43e3bc"
        }
      ]
    },
    "properties": {
      "firstName": [
        {
          "value": "Thomas"
        }
      ],
      "lastName": [
        {
          "value": "Andersen"
        }
      ],
      "age": [
        {
          "value": 45
        }
      ]
    }
  }

Les propriétés utilisées par GraphSON pour les vertex sont décrites ci-dessous :The properties used by GraphSON for vertices are described below:

PropriétéProperty DescriptionDescription
id ID du vertex.The ID for the vertex. Doit être unique (en association avec la valeur de _partition, si applicable).Must be unique (in combination with the value of _partition if applicable). Si aucune valeur n’est fournie, un GUID est fourni automatiquement.If no value is provided, it will be automatically supplied with a GUID
label Le label du vertex.The label of the vertex. Cette propriété est utilisée pour décrire le type d’entité.This property is used to describe the entity type.
type Utilisé pour distinguer les vertex des documents non graphesUsed to distinguish vertices from non-graph documents
properties Sac de propriétés définies par l’utilisateur associé au vertex.Bag of user-defined properties associated with the vertex. Chaque propriété peut avoir plusieurs valeurs.Each property can have multiple values.
_partition La clé de partition du vertex.The partition key of the vertex. Utilisée pour le partitionnement de graphe.Used for graph partitioning.
outE Cette propriété contient une liste des bords externes d’un vertex.This property contains a list of out edges from a vertex. Permet de stocker les informations de contiguïté avec des vertex pour une exécution rapide des traversées.Storing the adjacency information with vertex allows for fast execution of traversals. Les bords sont regroupés en fonction de leurs labels.Edges are grouped based on their labels.

Et le bord contient les informations suivantes pour faciliter la navigation vers d’autres parties du graphe.And the edge contains the following information to help with navigation to other parts of the graph.

PropriétéProperty DescriptionDescription
id L’ID du bord.The ID for the edge. Doit être unique (en association avec la valeur de _partition, si applicable).Must be unique (in combination with the value of _partition if applicable)
label Le label du bord.The label of the edge. Cette propriété est facultative, elle est utilisée pour décrire le type de relation.This property is optional, and used to describe the relationship type.
inV Cette propriété contient la liste des vertex d’un bord.This property contains a list of in vertices for an edge. Permet de stocker les informations de contiguïté avec le bord pour une exécution rapide des traversées.Storing the adjacency information with the edge allows for fast execution of traversals. Les vertex sont regroupés en fonction de leurs labels.Vertices are grouped based on their labels.
properties Sac de propriétés définies par l’utilisateur associé au bord.Bag of user-defined properties associated with the edge. Chaque propriété peut avoir plusieurs valeurs.Each property can have multiple values.

Chaque propriété peut stocker plusieurs valeurs dans un tableau.Each property can store multiple values within an array.

PropriétéProperty DescriptionDescription
value Valeur de la propriétéThe value of the property

Étapes de GremlinGremlin steps

Nous allons maintenant examiner les étapes Gremlin prises en charge par Azure Cosmos DB.Now let's look at the Gremlin steps supported by Azure Cosmos DB. Pour des références complètes sur Gremlin, consultez Référence TinkerPop.For a complete reference on Gremlin, see TinkerPop reference.

étapestep DescriptionDescription Documentation TinkerPop 3.2TinkerPop 3.2 Documentation
addE Ajoute un bord reliant deux vertexAdds an edge between two vertices étape addEaddE step
addV Ajoute un vertex au grapheAdds a vertex to the graph étape addVaddV step
and Fait en sorte que toutes les traversées retournent une valeurEnsures that all the traversals return a value étape andand step
as Un modulateur d’étape pour attribuer une variable à la sortie d’une étapeA step modulator to assign a variable to the output of a step étape asas step
by Un modulateur d’étape utilisé avec group et orderA step modulator used with group and order étape byby step
coalesce Renvoie la première traversée qui renvoie un résultatReturns the first traversal that returns a result étape coalescecoalesce step
constant Renvoie une valeur constante.Returns a constant value. Utilisé avec coalesceUsed with coalesce étape constantconstant step
count Renvoie le nombre de traverséesReturns the count from the traversal étape countcount step
dedup Renvoie les valeurs en supprimant les doublonsReturns the values with the duplicates removed étape dedupdedup step
drop Supprime les valeurs (vertex/bord)Drops the values (vertex/edge) étape dropdrop step
executionProfile Crée une description de toutes les opérations générées par l’étape Gremlin exécutéeCreates a description of all operations generated by the executed Gremlin step Étape executionProfileexecutionProfile step
fold Agit comme une barrière qui calcule l’agrégation des résultatsActs as a barrier that computes the aggregate of results étape foldfold step
group Regroupe les valeurs basées sur les labels spécifiésGroups the values based on the labels specified étape groupgroup step
has Permet de filtrer les propriétés, les vertex et les bords.Used to filter properties, vertices, and edges. Prend en charge hasLabel, hasId, hasNot, et les variantes has.Supports hasLabel, hasId, hasNot, and has variants. étape hashas step
inject Injecter des valeurs dans un flux de donnéesInject values into a stream étape injectinject step
is Permet d’exécuter un filtre à l’aide d’une expression booléenneUsed to perform a filter using a boolean expression étape isis step
limit Permet de limiter le nombre d’éléments dans la traverséeUsed to limit number of items in the traversal étape limitlimit step
local Local encapsule une section d’une traversée, similaire à une sous-requêteLocal wraps a section of a traversal, similar to a subquery étape locallocal step
not Permet de produire la négation d’un filtreUsed to produce the negation of a filter étape notnot step
optional Renvoie le résultat de la traversée spécifiée si elle produit un résultat, sinon renvoie l’élément appelantReturns the result of the specified traversal if it yields a result else it returns the calling element étape optionaloptional step
or Garantit qu’au moins l’une des traversées renvoie une valeurEnsures at least one of the traversals returns a value étape oror step
order Renvoie les résultats dans l’ordre de tri spécifiéReturns results in the specified sort order étape orderorder step
path Renvoie le chemin d’accès complet de la traverséeReturns the full path of the traversal étape pathpath step
project Projette les propriétés sous forme de carteProjects the properties as a Map étape projectproject step
properties Renvoie les propriétés pour les labels spécifiésReturns the properties for the specified labels étape propertiesproperties step
range Filtre la plage de valeurs spécifiéeFilters to the specified range of values étape rangerange step
repeat Répète l’étape le nombre de fois spécifié.Repeats the step for the specified number of times. Permet d’effectuer des bouclesUsed for looping répétez l’étaperepeat step
sample Permet d’échantillonner les résultats à partir de la traverséeUsed to sample results from the traversal étape samplesample step
select Permet de projeter les résultats à partir de la traverséeUsed to project results from the traversal étape selectselect step
store Pour les agrégations non bloquantes de la traverséeUsed for non-blocking aggregates from the traversal étape storestore step
TextP.startingWith(string) Fonction de filtrage de chaîne.String filtering function. Cette fonction est utilisée comme prédicat de l'étape has() pour faire correspondre une propriété avec le début d'une chaîne donnéeThis function is used as a predicate for the has() step to match a property with the beginning of a given string Prédicats TextPTextP predicates
TextP.endingWith(string) Fonction de filtrage de chaîne.String filtering function. Cette fonction est utilisée comme prédicat de l'étape has() pour faire correspondre une propriété avec la fin d'une chaîne donnéeThis function is used as a predicate for the has() step to match a property with the ending of a given string Prédicats TextPTextP predicates
TextP.containing(string) Fonction de filtrage de chaîne.String filtering function. Cette fonction est utilisée comme prédicat de l'étape has() pour faire correspondre une propriété avec le contenu d'une chaîne donnéeThis function is used as a predicate for the has() step to match a property with the contents of a given string Prédicats TextPTextP predicates
TextP.notStartingWith(string) Fonction de filtrage de chaîne.String filtering function. Cette fonction est utilisée comme prédicat de l'étape has() pour faire correspondre une propriété qui ne commence pas par une chaîne donnéeThis function is used as a predicate for the has() step to match a property that doesn't start with a given string Prédicats TextPTextP predicates
TextP.notEndingWith(string) Fonction de filtrage de chaîne.String filtering function. Cette fonction est utilisée comme prédicat de l'étape has() pour faire correspondre une propriété qui ne finit pas par une chaîne donnéeThis function is used as a predicate for the has() step to match a property that doesn't end with a given string Prédicats TextPTextP predicates
TextP.notContaining(string) Fonction de filtrage de chaîne.String filtering function. Cette fonction est utilisée comme prédicat de l'étape has() pour faire correspondre une propriété qui ne contient pas une chaîne donnéeThis function is used as a predicate for the has() step to match a property that doesn't contain a given string Prédicats TextPTextP predicates
tree Chemins d’accès d’agrégation à partir d’un vertex dans une arborescenceAggregate paths from a vertex into a tree étape treetree step
unfold Dérouler un itérateur comme une étapeUnroll an iterator as a step étape unfoldunfold step
union Fusionner les résultats à partir de plusieurs traverséesMerge results from multiple traversals étape unionunion step
V Inclut les étapes nécessaires pour les traversées entre les vertex et les bords V, E, out, in, both, outE, inE, bothE, outV, inV, bothV et otherV pourIncludes the steps necessary for traversals between vertices and edges V, E, out, in, both, outE, inE, bothE, outV, inV, bothV, and otherV for étapes vertexvertex steps
where Permet de filtrer les résultats à partir de la traversée.Used to filter results from the traversal. Prend en charge les opérateurs eq, neq, lt, lte, gt, gte et betweenSupports eq, neq, lt, lte, gt, gte, and between operators étape wherewhere step

Le moteur optimisé pour l’écriture fourni par Azure Cosmos DB prend en charge l’indexation automatique de toutes les propriétés au sein des vertex et des arêtes par défaut.The write-optimized engine provided by Azure Cosmos DB supports automatic indexing of all properties within vertices and edges by default. Par conséquent, les requêtes avec des filtres, les requêtes de plage, le tri ou les agrégations sur toutes les propriétés sont traités à partir de l’index et exécutés efficacement.Therefore, queries with filters, range queries, sorting, or aggregates on any property are processed from the index, and served efficiently. Pour plus d’informations sur la façon dont fonctionne l’indexation dans Azure Cosmos DB, consultez notre article sur l’indexation indépendante du schéma.For more information on how indexing works in Azure Cosmos DB, see our paper on schema-agnostic indexing.

Étapes suivantesNext steps