Schnellstart: Traversieren von Knoten und Kanten mit der Gremlin-Konsole und Azure Cosmos DB für Apache Gremlin

Important

Suchen Sie nach einer Datenbanklösung für hochskalige Szenarien mit einer Vereinbarung über verfügbarkeitsbasierte Servicelevels (Service Level Agreement, SLA) von 99,999% Verfügbarkeit, sofortige Automatische Skalierung und automatisches Failover über mehrere Regionen hinweg? Erwägen Sie Azure Cosmos DB für NoSQL.

Möchten Sie ein OLAP-Diagramm (Online Analytical Processing) implementieren oder eine vorhandene Apache Gremlin-Anwendung migrieren? Erwägen Sie Graph in Microsoft Fabric.

Azure Cosmos DB for Apache Gremlin ist ein vollständig verwalteter Graphdatenbankdienst, der das beliebte Graphcomputingframework Apache Tinkerpop mit der Abfragesprache Gremlin implementiert. Die API für Gremlin ermöglicht mit einem Dienst, der mit minimalem Verwaltungsaufwand beliebig wachsen und skaliert werden kann, einen reibungslosen Einstieg in die Verwendung von Gremlin.

In dieser Schnellstartanleitung verwenden Sie die Gremlin-Konsole, um eine Verbindung mit einem neu erstellten Azure Cosmos DB for Gremlin-Konto herzustellen.

Prerequisites

Azure Cloud Shell

Azure hostet Azure Cloud Shell, eine interaktive Shell-Umgebung, die Sie über Ihren Browser nutzen können. Sie können entweder Bash oder PowerShell mit Cloud Shell verwenden, um mit Azure-Diensten zu arbeiten. Sie können die vorinstallierten Befehle von Cloud Shell verwenden, um den Code in diesem Artikel auszuführen, ohne etwas in Ihrer lokalen Umgebung installieren zu müssen.

So starten Sie Azure Cloud Shell:

Auswahl Beispiel/Link
Wählen Sie rechts oben in einem Code- oder Befehlsblock die Option Ausprobieren aus. Wenn Sie Try It auswählen, wird der Code oder befehl nicht automatisch in Cloud Shell kopiert. Screenshot: Beispiel von „Jetzt testen“ für Azure Cloud Shell.
Wechseln Sie zu https://shell.azure.com, oder wählen Sie die Schaltfläche "Cloud Shell starten " aus, um Cloud Shell in Ihrem Browser zu öffnen. Schaltfläche , um Azure Cloud Shell zu starten.
Wählen Sie im Azure-Portal rechts oben im Menü die Schaltfläche Cloud Shell aus. Screenshot: Schaltfläche „Cloud Shell“ im Azure-Portal

So verwenden Sie Azure Cloud Shell:

  1. Starten Sie Cloud Shell.

  2. Wählen Sie die Schaltfläche Kopieren für einen Codeblock (oder Befehlsblock) aus, um den Code oder Befehl zu kopieren.

  3. Fügen Sie den Code oder Befehl in die Cloud Shell Sitzung ein, indem Sie Ctrl+Shift+V auf Windows und Linux auswählen, oder indem Sie Cmd+Shift+V unter macOS auswählen.

  4. Wählen Sie Geben Sie ein, um den Code oder Befehl auszuführen.

Erstellen einer API für das Gremlin-Konto und relevante Ressourcen

Das API für Gremlin-Konto sollte vor der Verwendung der Gremlin-Konsole erstellt werden. Darüber hinaus ist es hilfreich, wenn die Datenbank und der Graph bereits vorhanden sind.

  1. Erstellen Sie Shellvariablen für accountName, resourceGroupName und location.

    # Variable for resource group name
    resourceGroupName="msdocs-cosmos-gremlin-quickstart"
    location="westus"
    
    # Variable for account name with a randomly generated suffix
    
    let suffix=$RANDOM*$RANDOM
    accountName="msdocs-gremlin-$suffix"
    
  2. Melden Sie sich mithilfe von az login bei der Azure CLI an, falls Sie dies noch nicht getan haben.

  3. Verwenden Sie az group create, um eine neue Ressourcengruppe in Ihrem Abonnement zu erstellen.

    az group create \
        --name $resourceGroupName \
        --location $location
    
  4. Verwenden Sie az cosmosdb create, um ein neues „API für Gremlin“-Konto mit Standardeinstellungen zu erstellen.

    az cosmosdb create \
        --resource-group $resourceGroupName \
        --name $accountName \
        --capabilities "EnableGremlin" \
        --locations regionName=$location \
        --enable-free-tier true
    

    Note

    Sie können pro Azure-Abonnement maximal ein Azure Cosmos DB-Konto im Free-Tarif einrichten und müssen sich beim Erstellen des Kontos anmelden. Ist dieser Befehl zum Anwenden des tarifspezifischen Rabatts für den Free-Tarif nicht erfolgreich, bedeutet dies, dass bereits ein anderes Konto im Abonnement mit dem Free-Tarif aktiviert wurde.

  5. Rufen Sie die API für den Gremlin-Endpunkt NAME des Kontos mithilfe von az cosmosdb show ab.

    az cosmosdb show \
        --resource-group $resourceGroupName \
        --name $accountName \
        --query "name"
    
  6. Ermitteln Sie den Schlüssel in der Liste der Schlüssel für das Konto mit az-cosmosdb-keys-list.

    az cosmosdb keys list \
        --resource-group $resourceGroupName \
        --name $accountName \
        --type "keys" \
        --query "primaryMasterKey"
    
  7. Notieren Sie sich die Werte für NAME und SCHLÜSSEL. Sie verwenden diese Anmeldeinformationen später.

  8. Erstellen Sie mithilfe von eine cosmicworks mit der Bezeichnung az cosmosdb gremlin database create:

    az cosmosdb gremlin database create \
        --resource-group $resourceGroupName \
        --account-name $accountName \
        --name "cosmicworks"
    
  9. Erstellen Sie ein Diagramm mithilfe von az cosmosdb gremlin graph create. Nennen Sie den Graphen products, und legen Sie den Durchsatz auf 400 und den Partitionsschlüsselpfad auf /category fest.

    az cosmosdb gremlin graph create \
        --resource-group $resourceGroupName \
        --account-name $accountName \
        --database-name "cosmicworks" \
        --name "products" \
        --partition-key-path "/category" \
        --throughput 400
    

Starten und Konfigurieren der Gremlin-Konsole mithilfe von Docker

Für die Gremlin-Konsole verwendet diese Schnellstartanleitung das Containerimage tinkerpop/gremlin-console von Docker Hub. Dieses Image stellt sicher, dass Sie die geeignete Version der Konsole (3.4) für die Verbindung mit der API für Gremlin verwenden. Sobald die Konsole ausgeführt wird, stellen Sie eine Verbindung von Ihrem lokalen Docker-Host mit dem API für Gremlin-Remotekonto her.

  1. Rufen Sie die Version 3.4 des tinkerpop/gremlin-console Container-Images ab.

    docker pull tinkerpop/gremlin-console:3.4
    
  2. Erstellen Sie einen leeren Arbeitsordner. Erstellen Sie im leeren Ordner eine Datei vom Typ remote-secure.yaml. Fügen Sie der Datei diese YAML-Konfiguration hinzu.

    hosts: [<account-name>.gremlin.cosmos.azure.com]
    port: 443
    username: /dbs/cosmicworks/colls/products
    password: <account-key>
    connectionPool: {
      enableSsl: true,
      sslEnabledProtocols: [TLSv1.2]
    }
    serializer: {
      className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV2d0,
      config: {
        serializeResultToString: true
      }
    }
    

    Note

    Ersetzen Sie die Platzhalter <account-name> und <account-key> durch die Werte für NAME und SCHLÜSSEL, die Sie zuvor in dieser Schnellstartanleitung abgerufen haben.

  3. Öffnen Sie ein neues Terminal im Kontext Ihres Arbeitsordners, der die Datei remote-secure.yaml enthält.

  4. Führen Sie das Docker-Containerimage im interaktiven Modus (--interactive --tty) aus. Stellen Sie sicher, dass Sie den aktuellen Arbeitsordner im Pfad /opt/gremlin-console/conf/ innerhalb des Containers einbinden.

    docker run -it --mount type=bind,source=.,target=/opt/gremlin-console/conf/ tinkerpop/gremlin-console:3.4
    
  5. Stellen Sie im Gremlin-Konsolencontainer mithilfe der Konfigurationsdatei remote-secure.yaml eine Verbindung mit dem Remotekonto (API für Gremlin) her.

    :remote connect tinkerpop.server conf/remote-secure.yaml
    

Erstellen und Durchlaufen von Vertices und Kanten

Nachdem die Konsole mit dem Konto verbunden wurde, verwenden Sie die Gremlin-Standardsyntax, um Knoten und Kanten zu erstellen und zu durchlaufen.

  1. Fügen Sie einen Vertex für product mit den folgenden Eigenschaften hinzu:

    Value
    Bezeichnung product
    id 68719518371
    name Kiama classic surfboard
    price 285.55
    category surfboards
    :> g.addV('product').property('id', '68719518371').property('name', 'Kiama classic surfboard').property('price', 285.55).property('category', 'surfboards')
    

    Important

    Vergessen Sie nicht das :> Präfix. Dieses Präfix ist für die Remoteausführung des Befehls erforderlich.

  2. Fügen Sie einen weiteren Vertex vom Typ product mit den folgenden Eigenschaften hinzu:

    Value
    Bezeichnung product
    id 68719518403
    name Montau Turtle Surfboard
    price 600
    category surfboards
    :> g.addV('product').property('id', '68719518403').property('name', 'Montau Turtle Surfboard').property('price', 600).property('category', 'surfboards')
    
  3. Erstellen Sie eine Kante namens replaces, um eine Beziehung zwischen den beiden Produkten zu definieren.

    :> g.V(['surfboards', '68719518403']).addE('replaces').to(g.V(['surfboards', '68719518371']))
    
  4. Zählen Sie alle Vertices innerhalb des Graphen.

    :> g.V().count()
    
  5. Durchlaufen Sie den Graphen, um alle Knoten zu finden, die Kiama classic surfboard ersetzen.

    :> g.V().hasLabel('product').has('category', 'surfboards').has('name', 'Kiama classic surfboard').inE('replaces').outV()
    
  6. Durchlaufen Sie den Graphen, um alle Vertices zu suchen, die durch Montau Turtle Surfboard ersetzt werden.

    :> g.V().hasLabel('product').has('category', 'surfboards').has('name', 'Montau Turtle Surfboard').outE('replaces').inV()
    

Bereinigen von Ressourcen

Wenn Sie das API für Gremlin-Konto nicht mehr benötigen, löschen Sie die entsprechende Ressourcengruppe.

  1. Erstellen Sie eine Shell-Variable für resourceGroupName, wenn sie noch nicht vorhanden ist.

    # Variable for resource group name
    resourceGroupName="msdocs-cosmos-gremlin-quickstart"
    
  2. Verwenden Sie az group delete, um die Ressourcengruppe zu löschen:

    az group delete \
        --name $resourceGroupName
    

Wie haben wir das Problem gelöst?

Azure Cosmos DB for Apache Gremlin hat unser Problem gelöst, indem Gremlin als Dienst angeboten wurde. Mit diesem Angebot müssen Sie keine eigenen Gremlin-Serverinstanzen verwenden und keine eigene Infrastruktur verwalten. Darüber hinaus können Sie Ihre Lösung skalieren, wenn Ihre Anforderungen im Laufe der Zeit zunehmen.

Um eine Verbindung mit dem API für Gremlin-Konto herzustellen, haben Sie das Containerimage tinkerpop/gremlin-console verwendet, um die Gremlin-Konsole auf eine Weise auszuführen, die keine lokale Installation erforderte. Anschließend haben Sie die in der Datei remote-secure.yaml gespeicherte Konfiguration verwendet, um eine Verbindung vom ausgeführten Container mit dem API für Gremlin-Konto herzustellen. Von dort aus haben Sie mehrere gängige Gremlin-Befehle ausgeführt.