Quickstart: Vertices en kanten traverseren met de Gremlin-console en Azure Cosmos DB voor Apache Gremlin

Important

Zoekt u een databaseoplossing voor grootschalige scenario's met een 99.999% SLA (Availability Service Level Agreement), directe automatische schaalaanpassing en automatische failover in meerdere regio's? Overweeg Azure Cosmos DB voor NoSQL.

Wilt u een OLAP-graaf (Online Analytical Processing) implementeren of een bestaande Apache Gremlin-toepassing migreren? Overweeg Graph in Microsoft Fabric.

Azure Cosmos DB voor Apache Gremlin is een volledig beheerde graafdatabaseservice die het populaire Apache Tinkerpop, een graafcomputingframework implementeert met behulp van de Gremlin-querytaal. De API voor Gremlin biedt u een eenvoudige manier om aan de slag te gaan met Gremlin, met een service die in staat is om te groeien en uit te breiden naar behoefte, met minimaal beheer noodzakelijk.

In deze quickstart gebruikt u de Gremlin-console om verbinding te maken met een zojuist gemaakte Azure Cosmos DB voor Gremlin-account.

Prerequisites

Azure Cloud Shell

Azure host Azure Cloud Shell, een interactieve shell-omgeving die u via uw browser kunt gebruiken. U kunt Bash of PowerShell gebruiken met Cloud Shell om met Azure-services te werken. U kunt de vooraf geïnstalleerde Cloud Shell-opdrachten gebruiken om de code in dit artikel uit te voeren zonder dat u iets hoeft te installeren in uw lokale omgeving.

Om Azure Cloud Shell te starten:

Option Voorbeeld/Link
Selecteer Uitproberen in de rechterbovenhoek van een code- of opdrachtblok. Als u Try It selecteert, wordt de code of opdracht niet automatisch gekopieerd naar Cloud Shell. Schermopname met een voorbeeld van Try It for Azure Cloud Shell.
Ga naar https://shell.azure.com, of selecteer de knop Cloud Shell starten om Cloud Shell in uw browser te openen. knop om Azure Cloud Shell te starten.
Klik op de knop Cloud Shell in het menu in de balk rechtsboven in de Azure-portal. Schermafbeelding met de knop Cloud Shell in de Azure portal

Azure Cloud Shell gebruiken:

  1. Start Cloud Shell.

  2. Selecteer de knop Kopiëren op een codeblok (of opdrachtblok) om de code of opdracht te kopiëren.

  3. Plak de code of opdracht in de Cloud Shell-sessie door op Windows en Linux de toetsencombinatie Ctrl+Shift+V in te drukken, of op macOS de toetsencombinatie Cmd+Shift+V te gebruiken.

  4. Selecteer Enter om de code of opdracht uit te voeren.

Een API maken voor een Gremlin-account en relevante resources

De API voor het Gremlin-account moet worden gemaakt voordat u de Gremlin-console gebruikt. Daarnaast helpt het ook om de database en grafiek op hun plaats te krijgen.

  1. Maak shell-variabelen voor accountName, resourceGroupName en locatie.

    # 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. Als u dat nog niet hebt gedaan, meldt u zich aan bij de Azure CLI met behulp van az login.

  3. Hiermee az group create maakt u een nieuwe resourcegroep in uw abonnement.

    az group create \
        --name $resourceGroupName \
        --location $location
    
  4. Hiermee az cosmosdb create maakt u een nieuwe API voor een Gremlin-account met standaardinstellingen.

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

    Opmerking

    U kunt per Azure-abonnement maximaal één gratis laag voor het Azure Cosmos DB-account hebben, en u moet zich aanmelden wanneer u het account maakt. Als dit commando de korting van de gratis laag niet kan toepassen, betekent dit dat er al een ander account in het abonnement is voorzien van de gratis laag.

  5. Haal de API voor Gremlin-eindpunt NAAM op voor het account met behulp van az cosmosdb show.

    az cosmosdb show \
        --resource-group $resourceGroupName \
        --name $accountName \
        --query "name"
    
  6. Zoek de SLEUTEL in de lijst met sleutels voor het account met az-cosmosdb-keys-list.

    az cosmosdb keys list \
        --resource-group $resourceGroupName \
        --name $accountName \
        --type "keys" \
        --query "primaryMasterKey"
    
  7. Noteer de waarden NAME en KEY . Je gebruikt deze inloggegevens later.

  8. Maak een database met de naam cosmicworks met behulp van az cosmosdb gremlin database create.

    az cosmosdb gremlin database create \
        --resource-group $resourceGroupName \
        --account-name $accountName \
        --name "cosmicworks"
    
  9. Een grafiek maken met behulp van az cosmosdb gremlin graph create. Geef de grafiek productseen naam en stel vervolgens de doorvoer 400in op en stel ten slotte het pad naar de partitiesleutel in op /category.

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

De Gremlin-console starten en configureren met docker

Voor de Gremlin Console gebruikt deze quickstart de tinkerpop/gremlin-console container image van Docker Hub. Deze afbeelding waarborgt dat u de juiste versie van de console (3.4) gebruikt voor verbinding met de API voor Gremlin. Zodra de console wordt uitgevoerd, maakt u vanaf uw lokale Docker-host verbinding met de externe API voor het Gremlin-account.

  1. Haal de 3.4 versie van de tinkerpop/gremlin-console containerafbeelding op.

    docker pull tinkerpop/gremlin-console:3.4
    
  2. Maak een lege werkmap. Maak in de lege map een remote-secure.yaml-bestand . Voeg deze YAML-configuratie toe aan het bestand.

    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
      }
    }
    

    Opmerking

    Vervang de <account-name> en <account-key> placeholders met de waarden NAME en KEY die u eerder in deze quickstart hebt verkregen.

  3. Open een nieuwe terminal in de context van uw werkmap met het bestand remote-secure.yaml .

  4. Voer een Docker-containerafbeelding uit in de interactieve modus (--interactive --tty). Zorg ervoor dat u de huidige werkmap koppelt aan het /opt/gremlin-console/conf/ pad in de container.

    docker run -it --mount type=bind,source=.,target=/opt/gremlin-console/conf/ tinkerpop/gremlin-console:3.4
    
  5. Maak in de Gremlin-consolecontainer verbinding met het externe account (API voor Gremlin) met behulp van het remote-secure.yaml-configuratiebestand .

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

Hoekpunten en randen maken en doorlopen

Nu de console is verbonden met het account, kunt u de standaard Gremlin-syntaxis gebruiken om zowel hoekpunten als randen te maken en te doorlopen.

  1. Voeg een hoekpunt toe voor een product met de volgende eigenschappen:

    Value
    etiket 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

    Vergeet het :> voorvoegsel niet. THis-voorvoegsel is vereist om de opdracht op afstand uit te voeren.

  2. Voeg nog een productvertex toe met deze eigenschappen:

    Value
    etiket 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. Maak een rand met de naam replaces om een relatie tussen de twee producten te definiëren.

    :> g.V(['surfboards', '68719518403']).addE('replaces').to(g.V(['surfboards', '68719518371']))
    
  4. Tel alle hoekpunten in de grafiek.

    :> g.V().count()
    
  5. Doorkruis de graaf om alle hoekpunten te vinden die de Kiama classic surfboard vervangen.

    :> g.V().hasLabel('product').has('category', 'surfboards').has('name', 'Kiama classic surfboard').inE('replaces').outV()
    
  6. Doorloop de graaf om alle hoekpunten te vinden die door Montau Turtle Surfboard worden vervangen.

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

De hulpbronnen opschonen

Wanneer u de API voor het Gremlin-account niet meer nodig hebt, verwijdert u de bijbehorende resourcegroep.

  1. Maak een shellvariabele voor resourceGroupName als deze nog niet bestaat.

    # Variable for resource group name
    resourceGroupName="msdocs-cosmos-gremlin-quickstart"
    
  2. Gebruik az group delete om de resource groep te verwijderen.

    az group delete \
        --name $resourceGroupName
    

Hoe hebben we het probleem opgelost?

Azure Cosmos DB voor Apache Gremlin heeft ons probleem opgelost door Gremlin als een service aan te bieden. Met deze aanbieding hoeft u niet uw eigen Gremlin-serverexemplaren op te stellen of uw eigen infrastructuur te beheren. Nog meer kunt u uw oplossing schalen naarmate uw behoeften na verloop van tijd toenemen.

Als u verbinding wilt maken met de API voor het Gremlin-account, hebt u de tinkerpop/gremlin-console containerinstallatiekopieën gebruikt om de gremlin-console uit te voeren op een manier waarvoor geen lokale installatie is vereist. Vervolgens hebt u de configuratie gebruikt die is opgeslagen in het bestand remote-secure.yaml om verbinding te maken vanuit de lopende container met de API voor het Gremlin-account. Van daaruit hebt u meerdere algemene Gremlin-opdrachten uitgevoerd.