Guida introduttiva: Attraversare vertici e archi con la console Gremlin e Azure Cosmos DB per Apache Gremlin

SI APPLICA A: Gremlin

Azure Cosmos DB per Apache Gremlin è un servizio di database a grafo completamente gestito che implementa il popolare Apache Tinkerpopframework di calcolo a grafo usando il linguaggio di query Gremlin. L'API per Gremlin offre un modo a basso attrito per iniziare a usare Gremlin con un servizio che può aumentare e aumentare il numero di istanze in base alle esigenze di gestione minima.

In questa guida introduttiva si usa la console Gremlin per connettersi a un account Azure Cosmos DB per Gremlin appena creato.

Prerequisiti

Azure Cloud Shell

Azure Cloud Shell è un ambiente di shell interattivo ospitato in Azure e usato tramite il browser. È possibile usare Bash o PowerShell con Cloud Shell per usare i servizi di Azure. È possibile usare i comandi preinstallati di Cloud Shell per eseguire il codice in questo articolo, senza dover installare alcun elemento nell'ambiente locale.

Per avviare Azure Cloud Shell:

Opzione Esempio/Collegamento
Selezionare Prova nell'angolo superiore destro di un codice o di un blocco di comandi. Selezionando Prova non viene copiato automaticamente il codice o il comando in Cloud Shell. Screenshot that shows an example of Try It for Azure Cloud Shell.
Passare a https://shell.azure.com o selezionare il pulsante Avvia Cloud Shell per aprire Cloud Shell nel browser. Button to launch Azure Cloud Shell.
Selezionare il pulsante Cloud Shell nella barra dei menu nell'angolo in alto a destra del portale di Azure. Screenshot that shows the Cloud Shell button in the Azure portal

Per usare Azure Cloud Shell:

  1. Avviare Cloud Shell.

  2. Selezionare il pulsante Copia in un blocco di codice (o blocco di comandi) per copiare il codice o il comando.

  3. Incollare il codice o il comando nella sessione di Cloud Shell selezionando CTRL+MAIUSC+V in Windows e Linux oppure selezionando CMD+MAIUSC+V in macOS.

  4. Selezionare INVIO per eseguire il codice o il comando.

Creare un'API per l'account Gremlin e le risorse pertinenti

L'API per l'account Gremlin deve essere creata prima di usare la console Gremlin. Inoltre, consente anche di avere il database e il grafico sul posto.

  1. Creare variabili della shell per accountName, resourceGroupName e 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. Se non è già stato fatto, accedere all'interfaccia della riga di comando di Azure usando az login.

  3. Usare az group create per creare un nuovo gruppo di risorse nella sottoscrizione.

    az group create \
        --name $resourceGroupName \
        --location $location
    
  4. Usare az cosmosdb create per creare una nuova API per l'account Gremlin con le impostazioni predefinite.

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

    Nota

    È possibile avere fino a un account Azure Cosmos DB del livello gratuito per ogni sottoscrizione di Azure ed è necessario acconsentire esplicitamente durante la creazione dell'account. Se questo comando non applica lo sconto del livello gratuito, significa che un altro account nella sottoscrizione è già stato abilitato con il livello gratuito.

  5. Ottenere l'API per gremlin endpoint NAME per l'account usando az cosmosdb show.

    az cosmosdb show \
        --resource-group $resourceGroupName \
        --name $accountName \
        --query "name"
    
  6. Trovare la CHIAVE dall'elenco di chiavi per l'account con az-cosmosdb-keys-list.

    az cosmosdb keys list \
        --resource-group $resourceGroupName \
        --name $accountName \
        --type "keys" \
        --query "primaryMasterKey"
    
  7. Registrare i valori NAME e KEY . Queste credenziali verranno usate in un secondo momento.

  8. Creare un database denominato cosmicworks usando az cosmosdb gremlin database create.

    az cosmosdb gremlin database create \
        --resource-group $resourceGroupName \
        --account-name $accountName \
        --name "cosmicworks"
    
  9. Creare un grafo usando az cosmosdb gremlin graph create. Assegnare al grafo productsil nome , quindi impostare la velocità effettiva su 400e infine impostare il percorso della chiave di partizione su /category.

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

Avviare e configurare la console Gremlin con Docker

Per la console gremlin, questa guida introduttiva usa l'immagine del tinkerpop/gremlin-console contenitore dall'hub Docker. Questa immagine garantisce che si stia usando la versione appropriata della console (3.4) per la connessione con l'API per Gremlin. Dopo aver eseguito la console, connettersi dall'host Docker locale all'API remota per l'account Gremlin.

  1. Eseguire il pull della 3.4 versione dell'immagine del tinkerpop/gremlin-console contenitore.

    docker pull tinkerpop/gremlin-console:3.4
    
  2. Creare una cartella di lavoro vuota. Nella cartella vuota creare un file remote-secure.yaml . Aggiungere questa configurazione YAML al file.

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

    Nota

    Sostituire i <account-name> segnaposto e <account-key> con i valori NAME e KEY ottenuti in precedenza in questa guida introduttiva.

  3. Aprire un nuovo terminale nel contesto della cartella di lavoro che include il file remote-secure.yaml .

  4. Eseguire l'immagine del contenitore Docker in modalità interattiva (--interactive --tty). Assicurarsi di montare la cartella di lavoro corrente nel /opt/gremlin-console/conf/ percorso all'interno del contenitore.

    docker run -it --mount type=bind,source=.,target=/opt/gremlin-console/conf/ tinkerpop/gremlin-console:3.4
    
  5. All'interno del contenitore della console Gremlin connettersi all'account remoto (API per Gremlin) usando il file di configurazione remote-secure.yaml .

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

Creare e attraversare vertici e archi

Ora che la console è connessa all'account, usare la sintassi Gremlin standard per creare e attraversare sia vertici che archi.

  1. Aggiungere un vertice per un prodotto con le proprietà seguenti:

    Valore
    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')
    

    Importante

    Non foget il :> prefisso. Il prefisso THis è necessario per eseguire il comando in modalità remota.

  2. Aggiungere un altro vertice del prodotto con queste proprietà:

    Valore
    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. Creare un bordo denominato replaces per definire una relazione tra i due prodotti.

    :> g.V(['surfboards', '68719518403']).addE('replaces').to(g.V(['surfboards', '68719518371']))
    
  4. Conteggia tutti i vertici all'interno del grafico.

    :> g.V().count()
    
  5. Attraversare il grafico per trovare tutti i vertici che sostituiscono .Kiama classic surfboard

    :> g.V().hasLabel('product').has('category', 'surfboards').has('name', 'Kiama classic surfboard').inE('replaces').outV()
    
  6. Attraversare il grafico per trovare tutti i vertici che Montau Turtle Surfboard sostituiscono.

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

Pulire le risorse

Quando l'API per l'account Gremlin non è più necessaria, eliminare il gruppo di risorse corrispondente.

  1. Creare una variabile shell per resourceGroupName , se non esiste già.

    # Variable for resource group name
    resourceGroupName="msdocs-cosmos-gremlin-quickstart"
    
  2. Usare az group delete per eliminare il gruppo di risorse.

    az group delete \
        --name $resourceGroupName
    

Come abbiamo risolto il problema?

Azure Cosmos DB per Apache Gremlin ha risolto il problema offrendo Gremlin come servizio. Con questa offerta, non è necessario modificare le proprie istanze del server Gremlin o gestire la propria infrastruttura. Ancora di più, è possibile ridimensionare la soluzione man mano che le esigenze aumentano nel tempo.

Per connettersi all'API per l'account Gremlin, è stata usata l'immagine tinkerpop/gremlin-console del contenitore per eseguire la console gremlin in modo che non richiedeva un'installazione locale. È stata quindi usata la configurazione archiviata nel file remote-secure.yaml per connettersi dal contenitore in esecuzione dell'API per l'account Gremlin. Da qui sono stati eseguiti più comandi Gremlin comuni.

Passaggio successivo