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
- Compte Azure avec un abonnement actif.
- Vous ne possédez pas d’abonnement Azure ? Ouvrez gratuitement un compte Azure.
- Vous ne voulez pas d’abonnement Azure ? Vous pouvez essayer Azure Cosmos DB gratuitement sans abonnement.
- Hôte Docker
- Vous n’avez pas installé Docker ? Essayez ce guide de démarrage rapide dans GitHub Codespaces.
- Azure CLI
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. | |
Accédez à https://shell.azure.com ou sélectionnez le bouton Lancer Cloud Shell pour ouvrir Cloud Shell dans votre navigateur. | |
Sélectionnez le bouton Cloud Shell dans la barre de menus en haut à droite du portail Azure. |
Pour utiliser Azure Cloud Shell :
Démarrez Cloud Shell.
Sélectionnez le bouton Copier sur un bloc de codes (ou un bloc de commandes) pour copier le code ou la commande.
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.
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.
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"
Si vous ne l’avez pas déjà fait, connectez-vous à Azure CLI avec
az login
.Utilisez
az group create
pour créer un groupe de ressources dans votre abonnement.az group create \ --name $resourceGroupName \ --location $location
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.
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"
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"
Enregistrez les valeurs de NOM et CLÉ. Vous utilisez ces informations d’identification par la suite.
Créez une base de données nommée
cosmicworks
en utilisantaz cosmosdb gremlin database create
.az cosmosdb gremlin database create \ --resource-group $resourceGroupName \ --account-name $accountName \ --name "cosmicworks"
Créez un graphe en utilisant
az cosmosdb gremlin graph create
. Nommez le grapheproducts
, définissez le débit sur400
, 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.
Extrayez la version
3.4
de l’image conteneurtinkerpop/gremlin-console
.docker pull tinkerpop/gremlin-console:3.4
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.Ouvrez un nouveau terminal dans le contexte de votre dossier de travail qui contient le fichier remote-secure.yaml.
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
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.
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.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')
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']))
Comptez tous les sommets du graphe.
:> g.V().count()
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()
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.
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"
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.