Démarrage rapide : Parcourir des sommets et des arêtes avec la console Gremlin et Azure Cosmos DB for Apache Gremlin

S’APPLIQUE À : Gremlin

Azure Cosmos DB for Apache Gremlin est un service de base de données de graphe entièrement managé qui implémente le célèbre Apache Tinkerpop, un framework de calcul de graphe utilisant le langage de requête Gremlin. L’API pour Gremlin vous offre un moyen relativement facile de commencer à utiliser Gremlin avec un service qui peut grandir et effectuer un scale-out tant que vous voulez avec une gestion minimale.

Dans ce guide de démarrage rapide, vous utilisez la console Gremlin pour vous connecter à un compte Azure Cosmos DB for Gremlin nouvellement créé.

Prérequis

Azure Cloud Shell

Azure héberge Azure Cloud Shell, un environnement d’interpréteur de commandes interactif que vous pouvez utiliser dans votre navigateur. Vous pouvez utiliser Bash ou PowerShell avec Cloud Shell pour utiliser les services Azure. Vous pouvez utiliser les commandes préinstallées Cloud Shell pour exécuter le code de cet article sans avoir à installer quoi que ce soit dans votre environnement local.

Pour démarrer Azure Cloud Shell :

Option Exemple/Lien
Sélectionnez Essayer dans le coin supérieur droite d’un bloc de codes ou de commandes. La sélection de Essayer ne copie pas automatiquement le code ni la commande dans Cloud Shell. Screenshot that shows an example of Try It for Azure Cloud Shell.
Accédez à https://shell.azure.com ou sélectionnez le bouton Lancer Cloud Shell pour ouvrir Cloud Shell dans votre navigateur. Button to launch Azure Cloud Shell.
Sélectionnez le bouton Cloud Shell dans la barre de menus en haut à droite du portail Azure. Screenshot that shows the Cloud Shell button in the Azure portal

Pour utiliser Azure Cloud Shell :

  1. Démarrez Cloud Shell.

  2. Sélectionnez le bouton Copier sur un bloc de codes (ou un bloc de commandes) pour copier le code ou la commande.

  3. Collez le code ou la commande dans la session Cloud Shell en sélectionnant Ctrl+Maj+V sur Windows et Linux ou en sélectionnant Cmd+Maj+V sur macOS.

  4. Sélectionnez Entrée pour exécuter le code ou la commande.

Créer un compte API pour Gremlin et les ressources appropriées

Le compte API pour Gremlin doit être créé avant d’utiliser la console Gremlin. Par ailleurs, il est également utile d’avoir la base de données et le graphe en place.

  1. Créez des variables d’interpréteur de commandes pour accountName, resourceGroupName et 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. Si vous ne l’avez pas déjà fait, connectez-vous à Azure CLI avec az login.

  3. Utilisez az group create pour créer un groupe de ressources dans votre abonnement.

    az group create \
        --name $resourceGroupName \
        --location $location
    
  4. Utilisez az cosmosdb create pour créer un nouveau compte API pour Gremlin avec les paramètres par défaut.

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

    Remarque

    Vous pouvez avoir un seul compte Azure Cosmos DB de niveau gratuit par abonnement Azure et vous devez vous inscrire lors de la création du compte. Si la commande n’applique pas la remise du niveau gratuit, cela signifie qu’un autre compte dans l’abonnement a déjà été activé avec le niveau gratuit.

  5. Obtenez le NOM du point de terminaison de l’API pour Gremlin pour le compte en utilisant az cosmosdb show.

    az cosmosdb show \
        --resource-group $resourceGroupName \
        --name $accountName \
        --query "name"
    
  6. Recherchez la CLÉ dans la liste des clés du compte avec az-cosmosdb-keys-list.

    az cosmosdb keys list \
        --resource-group $resourceGroupName \
        --name $accountName \
        --type "keys" \
        --query "primaryMasterKey"
    
  7. Enregistrez les valeurs de NOM et CLÉ. Vous utilisez ces informations d’identification par la suite.

  8. Créez une base de données nommée cosmicworks en utilisant az cosmosdb gremlin database create.

    az cosmosdb gremlin database create \
        --resource-group $resourceGroupName \
        --account-name $accountName \
        --name "cosmicworks"
    
  9. Créez un graphe en utilisantaz cosmosdb gremlin graph create. Nommez le graphe products, définissez le débit sur 400, puis définissez le chemin de la clé de partition sur /category.

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

Démarrer et configurer la console Gremlin avec Docker

Pour la console Gremlin, ce guide de démarrage rapide utilise l’image conteneur tinkerpop/gremlin-console de Docker Hub. Cette image garantit que vous utilisez la version appropriée de la console (3.4) pour la connexion avec l’API pour Gremlin. Une fois la console en cours d’exécution, connectez-vous à partir de votre hôte Docker local au compte API pour Gremlin distant.

  1. Extrayez la version 3.4 de l’image conteneur tinkerpop/gremlin-console.

    docker pull tinkerpop/gremlin-console:3.4
    
  2. Créez un dossier de travail vide. Dans le dossier vide, créez un fichier remote-secure.yaml. Ajoutez cette configuration YAML au fichier.

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

    Remarque

    Remplacez les espaces réservés <account-name> et <account-key> par les valeurs de NOM et CLÉ obtenues précédemment dans ce guide de démarrage rapide.

  3. Ouvrez un nouveau terminal dans le contexte de votre dossier de travail qui contient le fichier remote-secure.yaml.

  4. Exécutez l’image conteneur Docker en mode interactif (--interactive --tty). Veillez à monter le dossier de travail actuel sur le chemin /opt/gremlin-console/conf/ dans le conteneur.

    docker run -it --mount type=bind,source=.,target=/opt/gremlin-console/conf/ tinkerpop/gremlin-console:3.4
    
  5. Dans le conteneur de la console Gremlin, connectez-vous au compte distant (API pour Gremlin) en utilisant le fichier de configuration remote-secure.yaml.

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

Créer et parcourir des sommets et des arêtes

Maintenant que la console est connectée au compte, utilisez la syntaxe Gremlin standard pour créer et parcourir des sommets et des arêtes.

  1. Ajoutez un sommet pour un produit avec les propriétés suivantes :

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

    Important

    N’oubliez pas le préfixe :>. Ce préfixe est nécessaire pour exécuter la commande à distance.

  2. Créez un autre sommet de produit avec ces propriétés :

    Valeur
    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. Créez une arête nommée replaces pour définir une relation entre les deux produits.

    :> g.V(['surfboards', '68719518403']).addE('replaces').to(g.V(['surfboards', '68719518371']))
    
  4. Comptez tous les sommets du graphe.

    :> g.V().count()
    
  5. Parcourez le graphe pour rechercher tous les sommets que Kiama classic surfboard remplace.

    :> g.V().hasLabel('product').has('category', 'surfboards').has('name', 'Kiama classic surfboard').inE('replaces').outV()
    
  6. Parcourez le graphe pour rechercher tous les sommets que Montau Turtle Surfboard remplace.

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

Nettoyer les ressources

Quand vous n’avez plus besoin du compte API pour Gremlin, supprimez le groupe de ressources correspondant.

  1. Créez une variable d’interpréteur de commandes pour resourceGroupName si elle n’existe pas déjà.

    # Variable for resource group name
    resourceGroupName="msdocs-cosmos-gremlin-quickstart"
    
  2. Utilisez az group delete pour supprimer le groupe de ressources.

    az group delete \
        --name $resourceGroupName
    

Comment avons-nous résolu le problème ?

Azure Cosmos DB for Apache Gremlin a résolu notre problème en offrant Gremlin en tant que service. Avec cette offre, vous n’êtes pas obligé de mettre en place vos propres instances de serveur Gremlin ni de gérer votre propre infrastructure. Plus encore, vous pouvez mettre à l’échelle votre solution quand vos besoins augmentent au fil du temps.

Pour vous connecter au compte API pour Gremlin, vous avez utilisé l’image conteneur tinkerpop/gremlin-console pour exécuter la console Gremlin sans installation locale. Ensuite, vous avez utilisé la configuration stockée dans le fichier remote-secure.yaml pour connecter le compte API pour Gremlin à partir du conteneur en cours d’exécution. À partir de là, vous avez exécuté plusieurs commandes Gremlin courantes.

Étape suivante