Quickstart: Hoekpunten en randen doorlopen met de Gremlin-console en Azure Cosmos DB voor Apache Gremlin

VAN TOEPASSING OP: Gremlin

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 lage wrijving manier om aan de slag te gaan met Gremlin met een service die zo veel mogelijk kan groeien en uitschalen als u nodig hebt met minimaal beheer.

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

Vereisten

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 op te starten:

Optie Voorbeeld/koppeling
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. Screenshot that shows an example of 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. Button to launch Azure Cloud Shell.
Klik op de knop Cloud Shell in het menu in de balk rechtsboven in de Azure-portal. Screenshot that shows the Cloud Shell button in the 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 Ctrl+Shift+V in Windows en Linux te selecteren of door Cmd+Shift+V te selecteren in macOS.

  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
    

    Notitie

    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 deze opdracht de korting op de gratis laag niet kan toepassen, betekent dit dat er al een ander account in het abonnement is ingeschakeld met de gratis laag.

  5. Haal de API voor Gremlin-eindpuntNAAM 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 . U gebruikt deze referenties later.

  8. Maak een database met de naam cosmicworks .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 containerinstallatiekopieën van Docker Hub. Deze installatiekopieën zorgen ervoor 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 containerinstallatiekopie 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
      }
    }
    

    Notitie

    Vervang de <account-name> tijdelijke aanduidingen door <account-key> 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 de Docker-containerinstallatiekopieën 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, gebruikt u de standaard Gremlin-syntaxis om zowel hoekpunten als randen te maken en te doorlopen.

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

    Waarde
    Label 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')
    

    Belangrijk

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

  2. Voeg nog een productpunt toe met deze eigenschappen:

    Waarde
    Label 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 grafiek om alle hoekpunten te vinden die de Kiama classic surfboard.

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

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

Resources 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 dit om de resourcegroep 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 actieve container voor het Gremlin-account. Van daaruit hebt u meerdere algemene Gremlin-opdrachten uitgevoerd.

Volgende stap