Unterstützung für Gremlin-Diagramme in Azure Cosmos DBAzure Cosmos DB Gremlin graph support

Azure Cosmos DB unterstützt die Apache Tinkerpop-Graphdurchlauf-Sprache, auch als Gremlin bezeichnet.Azure Cosmos DB supports Apache Tinkerpop's graph traversal language, known as Gremlin. Mithilfe der Gremlin-Sprache können Sie Diagrammentitäten (Vertices und Edges) erstellen, Eigenschaften innerhalb dieser Entitäten ändern, Abfragen und Traversierungen ausführen und Entitäten löschen.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.

Dieser Artikel enthält eine kurze exemplarische Vorgehensweise zu Gremlin und listet die Funktionen von Gremlin auf, die von der Gremlin-API unterstützt werden.In this article, we provide a quick walkthrough of Gremlin and enumerate the Gremlin features that are supported by the Gremlin API.

Kompatible ClientbibliothekenCompatible client libraries

In der folgenden Tabelle werden gängige Gremlin-Treiber aufgeführt, die Sie für Azure Cosmos DB verwenden können:The following table shows popular Gremlin drivers that you can use against Azure Cosmos DB:

DownloadDownload SourceSource Erste SchritteGetting Started Unterstützte Connector-VersionSupported connector version
.NET.NET Gremlin.NET auf GitHubGremlin.NET on GitHub Erstellen von Graph mithilfe von .NETCreate Graph using .NET 3.4.0-RC23.4.0-RC2
JavaJava Gremlin JavaDocGremlin JavaDoc Erstellen von Graph mithilfe von JavaCreate Graph using Java 3.2.0 und höher3.2.0+
Node.jsNode.js Gremlin-JavaScript auf GitHubGremlin-JavaScript on GitHub Erstellen von Graph mithilfe von Node.jsCreate Graph using Node.js 3.3.4+3.3.4+
PythonPython Gremlin-Python auf GitHubGremlin-Python on GitHub Erstellen von Graph mithilfe von PythonCreate Graph using Python 3.2.73.2.7
PHPPHP Gremlin-PHP auf GitHubGremlin-PHP on GitHub Erstellen von Graph mithilfe von PHPCreate Graph using PHP 3.1.03.1.0
Gremlin-KonsoleGremlin console TinkerPop-DokumenteTinkerPop docs Erstellen von Graph mithilfe der Gremlin-KonsoleCreate Graph using Gremlin Console 3.2.0 und höher3.2.0 +

Unterstützte Graph-ObjekteSupported Graph Objects

TinkerPop ist ein Standard, der eine große Bandbreite an Diagrammtechnologien abdeckt.TinkerPop is a standard that covers a wide range of graph technologies. Daher weist diese Standardterminologie auf, die beschreiben, welche Funktionen von einem Diagrammanbieter bereitgestellt werden.Therefore, it has standard terminology to describe what features are provided by a graph provider. Azure Cosmos DB stellt eine beständige und beschreibbare Diagrammdatenbank mit hoher Parallelität dar, die über mehrere Server oder Cluster hinweg partitioniert werden kann.Azure Cosmos DB provides a persistent, high concurrency, writeable graph database that can be partitioned across multiple servers or clusters.

Die folgende Tabelle enthält die TinkerPop-Funktionen, die von Azure Cosmos DB implementiert werden:The following table lists the TinkerPop features that are implemented by Azure Cosmos DB:

CategoryCategory Implementierung von Azure Cosmos DBAzure Cosmos DB implementation NotizenNotes
DiagrammfunktionenGraph features Stellen Persistenz und ConcurrentAccess bereit.Provides Persistence and ConcurrentAccess. Sind zur Unterstützung für Transaktionen ausgelegt.Designed to support Transactions Computermethoden können über den Spark-Connector implementiert werden.Computer methods can be implemented via the Spark connector.
VariablenfunktionenVariable features Unterstützen Boolean-, Integer-, Byte-, Double-, Float-, Long- und String-DatentypenSupports Boolean, Integer, Byte, Double, Float, Integer, Long, String Unterstützen primitive Typen; ist mit komplexen Typen über Datenmodelle kompatibelSupports primitive types, is compatible with complex types via data model
Vertex-FunktionenVertex features Unterstützen RemoveVertices MetaProperties, AddVertices MultiProperties, StringIds UserSuppliedIds, AddProperty, RemovePropertySupports RemoveVertices, MetaProperties, AddVertices, MultiProperties, StringIds, UserSuppliedIds, AddProperty, RemoveProperty Unterstützen die Erstellung, Änderung und Löschung von VerticesSupports creating, modifying, and deleting vertices
Vertex-Eigenschafts-FunktionenVertex property features StringIds, UserSuppliedIds, AddProperty, RemoveProperty, BooleanValues, ByteValues, DoubleValues, FloatValues, IntegerValues, LongValues, StringValuesStringIds, UserSuppliedIds, AddProperty, RemoveProperty, BooleanValues, ByteValues, DoubleValues, FloatValues, IntegerValues, LongValues, StringValues Unterstützen die Erstellung, Änderung und Löschung von Vertex-EigenschaftenSupports creating, modifying, and deleting vertex properties
EdgefunktionenEdge features AddEdges, RemoveEdges, StringIds, UserSuppliedIds, AddProperty, RemovePropertyAddEdges, RemoveEdges, StringIds, UserSuppliedIds, AddProperty, RemoveProperty Unterstützen die Erstellung, Änderung und Löschung von EdgesSupports creating, modifying, and deleting edges
Edge-Eigenschafts-FunktionenEdge property features Properties, BooleanValues, ByteValues, DoubleValues, FloatValues, IntegerValues, LongValues, StringValuesProperties, BooleanValues, ByteValues, DoubleValues, FloatValues, IntegerValues, LongValues, StringValues Unterstützen die Erstellung, Änderung und Löschung von Edge-EigenschaftenSupports creating, modifying, and deleting edge properties

Gremlin-Sendeformat: GraphSONGremlin wire format: GraphSON

Azure Cosmos DB verwendet bei der Rückgabe von Ergebnissen aus Gremlin-Vorgängen das GraphSON-Format.Azure Cosmos DB uses the GraphSON format when returning results from Gremlin operations. Azure Cosmos DB unterstützt derzeit die Version „GraphSONv2“.Azure Cosmos DB currently supports "GraphSONv2" version. GraphSON ist das Standardformat von Gremlin zur Darstellung von Vertices, Edges und (ein- und mehrwertigen) Eigenschaften mittels JSON.GraphSON is the Gremlin standard format for representing vertices, edges, and properties (single and multi-valued properties) using JSON.

Der folgende Ausschnitt zeigt z.B. eine GraphSON-Darstellung eines Vertex in Azure Cosmos DB, der an den Client zurückgegeben wurde.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
        }
      ]
    }
  }

Die von GraphSON für Vertices verwendeten Eigenschaften sind nachfolgend beschrieben:The properties used by GraphSON for vertices are described below:

EigenschaftProperty BESCHREIBUNGDescription
id Die ID für den Vertex.The ID for the vertex. Muss eindeutig sein (in Kombination mit dem Wert von _partition, falls zutreffend).Must be unique (in combination with the value of _partition if applicable). Wird kein Wert angegeben, wird automatisch eine GUID bereitgestellt.If no value is provided, it will be automatically supplied with a GUID
label Die Bezeichnung des Vertex.The label of the vertex. Diese Eigenschaft dient zur Beschreibung des Entitätstyps.This property is used to describe the entity type.
type Dient zur Unterscheidung von Vertices von anderen Dokumenten, die keine Diagramme sind.Used to distinguish vertices from non-graph documents
properties Sammlung von benutzerdefinierten Eigenschaften in Verbindung mit dem Vertex.Bag of user-defined properties associated with the vertex. Jede Eigenschaft kann mehrere Werte enthalten.Each property can have multiple values.
_partition Der Partitionsschlüssel des Vertex.The partition key of the vertex. Wird für Graphpartitionierung verwendet.Used for graph partitioning.
outE Diese Eigenschaft enthält eine Liste von externen Edges aus einem Vertex.This property contains a list of out edges from a vertex. Die Speicherung von Informationen zur Nähe zum Vertex ermöglicht die schnelle Ausführung von Traversierungen.Storing the adjacency information with vertex allows for fast execution of traversals. Edges werden basierend auf deren Bezeichnungen gruppiert.Edges are grouped based on their labels.

Zudem enthalten Edges folgende Informationen, die die Navigation in anderen Teilen des Diagramms unterstützen können.And the edge contains the following information to help with navigation to other parts of the graph.

EigenschaftProperty BESCHREIBUNGDescription
id Die ID für den Edge.The ID for the edge. Muss eindeutig sein (in Kombination mit dem Wert von _partition, falls zutreffend).Must be unique (in combination with the value of _partition if applicable)
label Die Bezeichnung des Edge.The label of the edge. Diese Eigenschaft ist optional, und dient zur Beschreibung des Beziehungstyps.This property is optional, and used to describe the relationship type.
inV Diese Eigenschaft enthält eine Liste von In-Vertices für einen Edge.This property contains a list of in vertices for an edge. Die Speicherung von Informationen über die Nähe zum Vertex mit dem Edge ermöglicht die schnelle Ausführung von Traversierungen.Storing the adjacency information with the edge allows for fast execution of traversals. Vertices werden basierend auf ihren Bezeichnungen gruppiert.Vertices are grouped based on their labels.
properties Sammlung von benutzerdefinierten Eigenschaften in Verbindung mit dem Edge.Bag of user-defined properties associated with the edge. Jede Eigenschaft kann mehrere Werte enthalten.Each property can have multiple values.

Jede Eigenschaft kann mehrere Werte in einem Array speichern.Each property can store multiple values within an array.

EigenschaftProperty BESCHREIBUNGDescription
value Wert der EigenschaftThe value of the property

Gremlin-SchritteGremlin steps

Sehen wir uns nun die Gremlin-Schritte an, die von Azure Cosmos DB unterstützt werden.Now let's look at the Gremlin steps supported by Azure Cosmos DB. Eine vollständige Referenz zu Gremlin finden Sie in der TinkerPop-Referenz.For a complete reference on Gremlin, see TinkerPop reference.

Schrittstep BESCHREIBUNGDescription Dokumentation zu TinkerPop 3.2TinkerPop 3.2 Documentation
addE Fügt einen Edge zwischen zwei Vertices hinzuAdds an edge between two vertices addE-SchrittaddE step
addV Fügt einen Vertex zum Diagramm hinzuAdds a vertex to the graph addV-SchrittaddV step
and Stellt sicher, dass alle Traversierungen einen Wert zurückgebenEnsures that all the traversals return a value and-Schrittand step
as Ein Schrittmodulator für die Zuweisung einer Variable zur Ausgabe eines SchrittsA step modulator to assign a variable to the output of a step as-Schrittas step
by Ein mit group und order verwendeter SchrittmodulatorA step modulator used with group and order by-Schrittby step
coalesce Gibt die erste Traversierung, die ein Ergebnis zurückgibt, zurückReturns the first traversal that returns a result coalesce-Schrittcoalesce step
constant Gibt einen konstanten Wert zurück.Returns a constant value. Wird mit coalesce verwendet.Used with coalesce constant-Schrittconstant step
count Gibt die Anzahl aus der Traversierung zurückReturns the count from the traversal count-Schrittcount step
dedup Gibt die Werte mit entfernten Duplikaten zurückReturns the values with the duplicates removed dedup-Schrittdedup step
drop Löscht die Werte (Vertex/Edge)Drops the values (vertex/edge) drop-Schrittdrop step
executionProfile Erstellt eine Beschreibung aller Vorgänge, die im ausgeführten Gremlin-Schritt generiert werden.Creates a description of all operations generated by the executed Gremlin step executionProfile-SchrittexecutionProfile step
fold Fungiert als Grenze, die Ergebnisse berechnet und zusammenfasstActs as a barrier that computes the aggregate of results fold-Schrittfold step
group Gruppiert die Werte basierend auf den angegebenen BezeichnungenGroups the values based on the labels specified group-Schrittgroup step
has Wird zum Filtern von Eigenschaften, Vertices und Edges verwendet.Used to filter properties, vertices, and edges. Unterstützt die Varianten hasLabel, hasId, hasNot und has.Supports hasLabel, hasId, hasNot, and has variants. has-Schritthas step
inject Fügt Werte in einen Stream einInject values into a stream inject-Schrittinject step
is Dient zur Ausführung eines Filters mithilfe eines booleschen AusdrucksUsed to perform a filter using a boolean expression is-Schrittis step
limit Dient zur Beschränkung der Anzahl der Elemente in der TraversierungUsed to limit number of items in the traversal limit-Schrittlimit step
local Umschließt lokal einen Abschnitt einer Traversierung, ähnlich wie bei einer UnterabfrageLocal wraps a section of a traversal, similar to a subquery local-Schrittlocal step
not Dient zur Negierung eines FiltersUsed to produce the negation of a filter not-Schrittnot step
optional Gibt das Ergebnis der angegebenen Traversierung zurück, wenn diese ein anderes Ergebnis als das vom aufrufenden Element zurückgegebene Ergebnis liefertReturns the result of the specified traversal if it yields a result else it returns the calling element optional-Schrittoptional step
or Stellt sicher, dass mindestens einer der Traversierungen einen Wert zurückgibtEnsures at least one of the traversals returns a value or-Schrittor step
order Gibt die Ergebnisse in der angegebenen Sortierreihenfolge zurückReturns results in the specified sort order order-Schrittorder step
path Gibt den vollständigen Pfad der Traversierung zurückReturns the full path of the traversal path-Schrittpath step
project Projiziert die Eigenschaften als KarteProjects the properties as a Map project-Schrittproject step
properties Gibt die Eigenschaften für die angegebenen Bezeichnungen zurückReturns the properties for the specified labels properties-Schrittproperties step
range Filtert auf den angegebenen WertebereichFilters to the specified range of values range-Schrittrange step
repeat Wiederholt den Schritt für die angegebene Anzahl von Versuchen.Repeats the step for the specified number of times. Wird für die Ausführung als Schleife verwendet.Used for looping repeat-Schrittrepeat step
sample Wird zum Testen von Ergebnissen aus der Traversierung verwendetUsed to sample results from the traversal sample-Schrittsample step
select Wird zum Projizieren von Ergebnissen aus der Traversierung verwendetUsed to project results from the traversal select-Schrittselect step
store Wird für nicht blockierende Aggregate aus der Traversierung verwendetUsed for non-blocking aggregates from the traversal store-Schrittstore step
TextP.startingWith(string) Filterfunktion für Zeichenfolgen.String filtering function. Diese Funktion dient als ein Prädikat für den Schritt has(), um eine Eigenschaft mit dem Anfang einer bestimmten Zeichenfolge zu finden.This function is used as a predicate for the has() step to match a property with the beginning of a given string TextP-PrädikateTextP predicates
TextP.endingWith(string) Filterfunktion für Zeichenfolgen.String filtering function. Diese Funktion dient als ein Prädikat für den Schritt has(), um eine Eigenschaft mit dem Ende einer bestimmten Zeichenfolge zu finden.This function is used as a predicate for the has() step to match a property with the ending of a given string TextP-PrädikateTextP predicates
TextP.containing(string) Filterfunktion für Zeichenfolgen.String filtering function. Diese Funktion dient als ein Prädikat für den Schritt has(), um eine Eigenschaft mit dem Inhalt einer bestimmten Zeichenfolge zu finden.This function is used as a predicate for the has() step to match a property with the contents of a given string TextP-PrädikateTextP predicates
TextP.notStartingWith(string) Filterfunktion für Zeichenfolgen.String filtering function. Diese Funktion dient als ein Prädikat für den Schritt has(), um eine Eigenschaft zu finden, die nicht mit einer bestimmten Zeichenfolge beginnt.This function is used as a predicate for the has() step to match a property that doesn't start with a given string TextP-PrädikateTextP predicates
TextP.notEndingWith(string) Filterfunktion für Zeichenfolgen.String filtering function. Diese Funktion dient als ein Prädikat für den Schritt has(), um eine Eigenschaft zu finden, die nicht auf eine bestimmte Zeichenfolge endet.This function is used as a predicate for the has() step to match a property that doesn't end with a given string TextP-PrädikateTextP predicates
TextP.notContaining(string) Filterfunktion für Zeichenfolgen.String filtering function. Diese Funktion dient als ein Prädikat für den Schritt has(), um eine Eigenschaft zu finden, die eine bestimmte Zeichenfolge nicht enthält.This function is used as a predicate for the has() step to match a property that doesn't contain a given string TextP-PrädikateTextP predicates
tree Aggregiert Pfade aus einem Vertex in einer StrukturAggregate paths from a vertex into a tree tree-Schritttree step
unfold Löst einen Iterator als Schritt aufUnroll an iterator as a step unfold-Schrittunfold step
union Führt Ergebnisse aus mehreren Traversierungen zusammenMerge results from multiple traversals union-Schrittunion step
V Enthält die erforderlichen Schritte für Traversierungen zwischen Vertices und Edges: V, E, out, in, both, outE, inE, bothE, outV, inV, bothV und otherV fürIncludes the steps necessary for traversals between vertices and edges V, E, out, in, both, outE, inE, bothE, outV, inV, bothV, and otherV for vertex-Schrittevertex steps
where Wird zum Filtern von Ergebnissen aus der Traversierung verwendet.Used to filter results from the traversal. Unterstützt die Operatoren eq, neq, lt, lte, gt, gte und between.Supports eq, neq, lt, lte, gt, gte, and between operators where-Schrittwhere step

Die von Azure Cosmos DB bereitgestellte, für Schreibvorgänge optimierte Engine unterstützt standardmäßig die automatische Indizierung aller Eigenschaften in Vertices und Edges.The write-optimized engine provided by Azure Cosmos DB supports automatic indexing of all properties within vertices and edges by default. Daher werden Abfragen mit Filtern, Bereichsabfragen, Sortierungen oder Aggregate von Eigenschaften über den Index verarbeitet und effizient übermittelt.Therefore, queries with filters, range queries, sorting, or aggregates on any property are processed from the index, and served efficiently. Weitere Informationen zur Indizierung in Azure Cosmos DB finden Sie in unserem Dokument unter Schemagnostische Indizierung.For more information on how indexing works in Azure Cosmos DB, see our paper on schema-agnostic indexing.

Nächste SchritteNext steps