Obsługa grafu Gremlin w usłudze Azure Cosmos DBAzure Cosmos DB Gremlin graph support

Azure Cosmos DB obsługuje język przechodzenia wykresu Apache Tinkerpop , znany jako Gremlin.Azure Cosmos DB supports Apache Tinkerpop's graph traversal language, known as Gremlin. Język Gremlin służy do tworzenia jednostek grafu (wierzchołków i krawędzi), modyfikacji właściwości w ramach tych elementów, wykonywania zapytań i przejść oraz usuwania elementów.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.

W tym artykule udostępniamy Krótki przewodnik Gremlin i wyliczamy funkcje Gremlin, które są obsługiwane przez interfejs API Gremlin.In this article, we provide a quick walkthrough of Gremlin and enumerate the Gremlin features that are supported by the Gremlin API.

Zgodne biblioteki klienckieCompatible client libraries

W poniższej tabeli przedstawiono popularne sterowniki Gremlin, których można użyć do usługi Azure Cosmos DB:The following table shows popular Gremlin drivers that you can use against Azure Cosmos DB:

PobierzDownload ŹródłoSource WprowadzenieGetting Started Obsługiwana wersja łącznikaSupported connector version
.NET.NET Gremlin.NET w witrynie GitHubGremlin.NET on GitHub Tworzenie grafu przy użyciu platformy .NETCreate Graph using .NET 3.4.0-RC23.4.0-RC2
JavaJava Gremlin JavaDocGremlin JavaDoc Tworzenie grafu przy użyciu środowiska JavaCreate Graph using Java 3.2.0+3.2.0+
Node.jsNode.js Gremlin-JavaScript w witrynie GitHubGremlin-JavaScript on GitHub Tworzenie grafu przy użyciu platformy Node.jsCreate Graph using Node.js 3.3.4 +3.3.4+
PythonPython Gremlin-Python w witrynie GitHubGremlin-Python on GitHub Tworzenie grafu przy użyciu środowiska PythonCreate Graph using Python 3.2.73.2.7
PHPPHP Gremlin-PHP w witrynie GitHubGremlin-PHP on GitHub Tworzenie grafu przy użyciu środowiska PHPCreate Graph using PHP 3.1.03.1.0
Konsola GremlinGremlin console Dokumentacja dotycząca witryny TinkerPopTinkerPop docs Tworzenie grafu przy użyciu Konsoli GremlinCreate Graph using Gremlin Console 3.2.0 +3.2.0 +

Obsługiwane obiekty grafuSupported Graph Objects

TinkerPop jest standardem, który obejmuje szeroki zakres technologii grafów.TinkerPop is a standard that covers a wide range of graph technologies. Dlatego ma standardową terminologię do opisywania, jakie funkcje są udostępniane przez dostawcę grafu.Therefore, it has standard terminology to describe what features are provided by a graph provider. Usługa Azure Cosmos DB zapewnia trwałą, zapisywalną bazę danych grafów o dużej współbieżności, którą można podzielić na partycje w wielu serwerach lub klastrach.Azure Cosmos DB provides a persistent, high concurrency, writeable graph database that can be partitioned across multiple servers or clusters.

W poniższej tabeli wymieniono funkcje struktury TinkerPop wdrażane przez usługę Azure Cosmos DB:The following table lists the TinkerPop features that are implemented by Azure Cosmos DB:

KategoriaCategory Wdrożenie usługi Azure Cosmos DBAzure Cosmos DB implementation UwagiNotes
Funkcjonalności grafuGraph features Zapewnia funkcjonalności Persistence i ConcurrentAccess.Provides Persistence and ConcurrentAccess. Zaprojektowana obsługa funkcjonalności TransactionsDesigned to support Transactions Metody komputera mogą być wdrażane przy użyciu łącznika Spark.Computer methods can be implemented via the Spark connector.
Funkcjonalności zmiennychVariable features Obsługuje zmienne Boolean, Byte, Double, Float, Integer, Long, StringSupports Boolean, Integer, Byte, Double, Float, Integer, Long, String Obsługuje typy pierwotne, a zgodność z typami złożonymi jest osiągana za pomocą modelu danychSupports primitive types, is compatible with complex types via data model
Funkcjonalności wierzchołkówVertex features Obsługuje funkcje RemoveVertices, MetaProperties, AddVertices, MultiProperties, StringIds, UserSuppliedIds, AddProperty, RemovePropertySupports RemoveVertices, MetaProperties, AddVertices, MultiProperties, StringIds, UserSuppliedIds, AddProperty, RemoveProperty Obsługuje tworzenie, modyfikowanie i usuwanie wierzchołkówSupports creating, modifying, and deleting vertices
Funkcjonalności właściwości wierzchołkówVertex property features StringIds, UserSuppliedIds, AddProperty, RemoveProperty, BooleanValues, ByteValues, DoubleValues, FloatValues, IntegerValues, LongValues, StringValuesStringIds, UserSuppliedIds, AddProperty, RemoveProperty, BooleanValues, ByteValues, DoubleValues, FloatValues, IntegerValues, LongValues, StringValues Obsługuje tworzenie, modyfikowanie i usuwanie właściwości wierzchołkówSupports creating, modifying, and deleting vertex properties
Funkcjonalności krawędziEdge features AddEdges, RemoveEdges, StringIds, UserSuppliedIds, AddProperty, RemovePropertyAddEdges, RemoveEdges, StringIds, UserSuppliedIds, AddProperty, RemoveProperty Obsługuje tworzenie, modyfikowanie i usuwanie krawędziSupports creating, modifying, and deleting edges
Funkcjonalności właściwości krawędziEdge property features Properties, BooleanValues, ByteValues, DoubleValues, FloatValues, IntegerValues, LongValues, StringValuesProperties, BooleanValues, ByteValues, DoubleValues, FloatValues, IntegerValues, LongValues, StringValues Obsługuje tworzenie, modyfikowanie i usuwanie właściwości krawędziSupports creating, modifying, and deleting edge properties

Format połączeń Gremlin: GraphSONGremlin wire format: GraphSON

Usługa Azure Cosmos DB korzysta z formatu GraphSON podczas zwracania wyników z operacji Gremlin.Azure Cosmos DB uses the GraphSON format when returning results from Gremlin operations. Azure Cosmos DB obecnie obsługuje wersję "GraphSONv2".Azure Cosmos DB currently supports "GraphSONv2" version. GraphSON jest standardowym formatem środowiska Gremlin do przedstawiania wierzchołków, krawędzi i właściwości (jedno- i wielowartościowych) przy użyciu formatu JSON.GraphSON is the Gremlin standard format for representing vertices, edges, and properties (single and multi-valued properties) using JSON.

Na przykład poniższy fragment kodu przedstawia widok w formacie GraphSON wierzchołka zwracanego do klienta z usługi 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
        }
      ]
    }
  }

Poniżej opisano właściwości używane przez GraphSON dla wierzchołków:The properties used by GraphSON for vertices are described below:

WłaściwośćProperty OpisDescription
id Identyfikator wierzchołka.The ID for the vertex. Musi być unikatowa (w połączeniu z wartością _partition, jeśli ma zastosowanie).Must be unique (in combination with the value of _partition if applicable). Jeśli nie podano wartości, zostanie ona automatycznie dostarczona z identyfikatorem GUIDIf no value is provided, it will be automatically supplied with a GUID
label Etykieta wierzchołka.The label of the vertex. Ta właściwość służy do opisywania typu jednostki.This property is used to describe the entity type.
type Służy do odróżnienia wierzchołków od dokumentów bez grafówUsed to distinguish vertices from non-graph documents
properties Pakiet właściwości zdefiniowanych przez użytkownika skojarzonych z wierzchołkiem.Bag of user-defined properties associated with the vertex. Każda właściwość może mieć wiele wartości.Each property can have multiple values.
_partition Klucz partycji wierzchołka.The partition key of the vertex. Używany do partycjonowania grafu.Used for graph partitioning.
outE Ta właściwość zawiera listę krawędzi poza wierzchołkiem.This property contains a list of out edges from a vertex. Przechowywanie informacji sąsiedztwa razem z wierzchołkiem umożliwia szybkie wykonanie przejść.Storing the adjacency information with vertex allows for fast execution of traversals. Krawędzie są pogrupowane w oparciu o etykiety.Edges are grouped based on their labels.

Krawędź zawiera następujące informacje, aby pomóc w nawigacji do innych części grafu.And the edge contains the following information to help with navigation to other parts of the graph.

WłaściwośćProperty OpisDescription
id Identyfikator krawędzi.The ID for the edge. Musi być unikatowa (w połączeniu z wartością _partition, jeśli ma zastosowanie)Must be unique (in combination with the value of _partition if applicable)
label Etykieta krawędzi.The label of the edge. Ta właściwość jest opcjonalna i służy do opisu typu relacji.This property is optional, and used to describe the relationship type.
inV Ta właściwość zawiera listę wierzchołków dla krawędzi.This property contains a list of in vertices for an edge. Przechowywanie informacji sąsiedztwa razem z krawędzią umożliwia szybkie wykonanie przejść.Storing the adjacency information with the edge allows for fast execution of traversals. Wierzchołki są pogrupowane w oparciu o etykiety.Vertices are grouped based on their labels.
properties Pakiet właściwości zdefiniowanych przez użytkownika skojarzonych z krawędzią.Bag of user-defined properties associated with the edge. Każda właściwość może mieć wiele wartości.Each property can have multiple values.

Każda właściwość może przechowywać wiele wartości w tablicy.Each property can store multiple values within an array.

WłaściwośćProperty OpisDescription
value Wartość właściwościThe value of the property

Kroki w środowisku GremlinGremlin steps

Teraz przyjrzyjmy się krokom w środowisku Gremlin obsługiwanym przez usługę Azure Cosmos DB.Now let's look at the Gremlin steps supported by Azure Cosmos DB. Aby uzyskać pełną dokumentację dotyczącą języka Gremlin, zobacz odwołanie do struktury TinkerPop.For a complete reference on Gremlin, see TinkerPop reference.

krokstep OpisDescription Dokumentacja dotycząca struktury TinkerPop 3.2TinkerPop 3.2 Documentation
addE Dodaje krawędź między dwoma wierzchołkamiAdds an edge between two vertices krok addEaddE step
addV Dodaje wierzchołek do grafuAdds a vertex to the graph krok addVaddV step
and Gwarantuje, że wszystkie przejścia zwracają wartośćEnsures that all the traversals return a value krok andand step
as Modulator kroku do przypisania zmiennej do wyniku krokuA step modulator to assign a variable to the output of a step krok asas step
by Modulator kroku używany z elementami group i orderA step modulator used with group and order krok byby step
coalesce Zwraca pierwsze przejście, które zwraca wynikReturns the first traversal that returns a result krok coalescecoalesce step
constant Zwraca wartość stałą.Returns a constant value. Używany z krokiem coalesceUsed with coalesce krok constantconstant step
count Zwraca liczbę z przejściaReturns the count from the traversal krok countcount step
dedup Zwraca wartości z usuniętymi duplikatamiReturns the values with the duplicates removed krok dedupdedup step
drop Upuszcza wartości (wierzchołek/krawędź)Drops the values (vertex/edge) krok dropdrop step
executionProfile Tworzy opis wszystkich operacji generowanych przez wykonany krok GremlinCreates a description of all operations generated by the executed Gremlin step executionProfile — krokexecutionProfile step
fold Działa jak bariera, która oblicza agregację wynikówActs as a barrier that computes the aggregate of results krok foldfold step
group Grupuje wartości w oparciu o określone etykietyGroups the values based on the labels specified krok groupgroup step
has Służy do filtrowania właściwości, wierzchołków i krawędzi.Used to filter properties, vertices, and edges. Obsługuje warianty hasLabel, hasId, hasNot i has.Supports hasLabel, hasId, hasNot, and has variants. krok stephas step
inject Wstawia wartości do strumieniaInject values into a stream krok injectinject step
is Służy do wykonywania filtru przy użyciu wyrażenia logicznegoUsed to perform a filter using a boolean expression krok isis step
limit Pozwala ograniczyć liczbę elementów podczas przechodzeniaUsed to limit number of items in the traversal krok limitlimit step
local Krok local opakowuje sekcję przejścia, podobnie jak podzapytanieLocal wraps a section of a traversal, similar to a subquery krok locallocal step
not Służy do tworzenia negacji filtruUsed to produce the negation of a filter krok notnot step
optional Zwraca wynik określonego przejścia, jeśli wstrzymuje wynik lub zwraca wywołujący elementReturns the result of the specified traversal if it yields a result else it returns the calling element krok optionaloptional step
or Gwarantuje, że co najmniej jedno przejście zwróci wartośćEnsures at least one of the traversals returns a value krok oror step
order Zwraca wyniki w określonej kolejności sortowaniaReturns results in the specified sort order krok orderorder step
path Zwraca pełną ścieżkę przejściaReturns the full path of the traversal krok pathpath step
project Projektuje właściwości jako mapęProjects the properties as a Map krok projectproject step
properties Zwraca właściwości dla określonych etykietReturns the properties for the specified labels krok propertiesproperties step
range Filtruje do określonego zakresu wartościFilters to the specified range of values krok rangerange step
repeat Powtarza krok określoną liczbę razy.Repeats the step for the specified number of times. Używany do zapętleniaUsed for looping krok repeatrepeat step
sample Służy do próbkowania wyników z przejściaUsed to sample results from the traversal krok samplesample step
select Służy do projektowania wyników z przejściaUsed to project results from the traversal krok selectselect step
store Używany do nieblokujących agregacji z przejściaUsed for non-blocking aggregates from the traversal krok storestore step
TextP.startingWith(string) Funkcja filtrowania ciągów.String filtering function. Ta funkcja jest używana jako predykat dla kroku has(), aby dopasować właściwość do początku danego ciąguThis function is used as a predicate for the has() step to match a property with the beginning of a given string Predykaty TextPTextP predicates
TextP.endingWith(string) Funkcja filtrowania ciągów.String filtering function. Ta funkcja jest używana jako predykat dla kroku has(), aby dopasować właściwość do końca danego ciąguThis function is used as a predicate for the has() step to match a property with the ending of a given string Predykaty TextPTextP predicates
TextP.containing(string) Funkcja filtrowania ciągów.String filtering function. Ta funkcja jest używana jako predykat dla kroku has(), aby dopasować właściwość do zawartości danego ciąguThis function is used as a predicate for the has() step to match a property with the contents of a given string Predykaty TextPTextP predicates
TextP.notStartingWith(string) Funkcja filtrowania ciągów.String filtering function. Ta funkcja jest używana jako predykat dla kroku has() w celu dopasowania właściwości, która nie zaczyna się od danego ciąguThis function is used as a predicate for the has() step to match a property that doesn't start with a given string Predykaty TextPTextP predicates
TextP.notEndingWith(string) Funkcja filtrowania ciągów.String filtering function. Ta funkcja jest używana jako predykat dla kroku has() w celu dopasowania właściwości, która nie kończy się podanym ciągiemThis function is used as a predicate for the has() step to match a property that doesn't end with a given string Predykaty TextPTextP predicates
TextP.notContaining(string) Funkcja filtrowania ciągów.String filtering function. Ta funkcja jest używana jako predykat dla kroku has() w celu dopasowania właściwości, która nie zawiera danego ciąguThis function is used as a predicate for the has() step to match a property that doesn't contain a given string Predykaty TextPTextP predicates
tree Agreguje ścieżki z wierzchołka do drzewaAggregate paths from a vertex into a tree krok treetree step
unfold Odwija iterator w ramach krokuUnroll an iterator as a step krok unfoldunfold step
union Scalanie wyników z wielu przejśćMerge results from multiple traversals krok unionunion step
V Zawiera kroki niezbędne do przejść między wierzchołkami i krawędziami V, E, out, in, both, outE, inE, bothE, outV, inV, bothV, oraz otherV doIncludes the steps necessary for traversals between vertices and edges V, E, out, in, both, outE, inE, bothE, outV, inV, bothV, and otherV for kroki vertexvertex steps
where Służy do filtrowania wyników z przejścia.Used to filter results from the traversal. Obsługuje operatory eq, neq, lt, lte, gt, gte i betweenSupports eq, neq, lt, lte, gt, gte, and between operators krok wherewhere step

Aparat zoptymalizowany pod kątem zapisu oferowany w usłudze Azure Cosmos DB obsługuje domyślnie automatyczne indeksowanie wszystkich właściwości w wierzchołkach i krawędziach.The write-optimized engine provided by Azure Cosmos DB supports automatic indexing of all properties within vertices and edges by default. W związku z tym zapytania z filtrami, zapytania zakresu, sortowanie lub agregacje na dowolnej właściwości są przetwarzane z indeksu i skutecznie obsługiwane.Therefore, queries with filters, range queries, sorting, or aggregates on any property are processed from the index, and served efficiently. Więcej informacji na temat działania indeksowania w usłudze Azure Cosmos DB znajduje się w dokumencie dotyczącym indeksowania niezależnie od schematu.For more information on how indexing works in Azure Cosmos DB, see our paper on schema-agnostic indexing.

Następne krokiNext steps