Schnellstart: Azure Cosmos DB for Apache Gremlin-Bibliothek für Node.js
GILT FÜR: Gremlin
Azure Cosmos DB for Apache Gremlin ist ein vollständig verwalteter Graphdatenbankdienst, der das beliebte Graphcomputingframework Apache Tinkerpop
mit der Abfragesprache Gremlin implementiert. Die API für Gremlin ermöglicht mit einem Dienst, der mit minimalem Verwaltungsaufwand beliebig wachsen und skaliert werden kann, einen reibungslosen Einstieg in die Verwendung von Gremlin.
In dieser Schnellstartanleitung verwenden Sie die gremlin
-Bibliothek, um eine Verbindung mit einem neu erstellten Azure Cosmos DB for Gremlin-Konto herzustellen.
Quellcode der Bibliothek | Paket (npm)
Voraussetzungen
- Ein Azure-Konto mit einem aktiven Abonnement.
- Kein Azure-Abonnement? Registrieren Sie sich für ein kostenloses Azure-Konto.
- Sie möchten kein Azure-Abonnement? Sie können Azure Cosmos DB kostenlos testen, ohne dass ein Abonnement erforderlich ist.
- Node.js (LTS)
- Sie haben nicht Node.js installiert? Probieren Sie diese Schnellstartanleitung in GitHub Codespaces aus.codespaces.new/github/codespaces-blank?quickstart=1)
- Azure-Befehlszeilenschnittstelle (CLI)
Azure Cloud Shell
Azure hostet Azure Cloud Shell, eine interaktive Shell-Umgebung, die Sie über Ihren Browser nutzen können. Sie können entweder Bash oder PowerShell mit Cloud Shell verwenden, um mit Azure-Diensten zu arbeiten. Sie können die vorinstallierten Befehle von Cloud Shell verwenden, um den Code in diesem Artikel auszuführen, ohne etwas in Ihrer lokalen Umgebung installieren zu müssen.
Starten von Azure Cloud Shell:
Option | Beispiel/Link |
---|---|
Wählen Sie rechts oben in einem Code- oder Befehlsblock die Option Ausprobieren aus. Durch die Auswahl von Ausprobieren wird der Code oder Befehl nicht automatisch in Cloud Shell kopiert. | |
Rufen Sie https://shell.azure.com auf, oder klicken Sie auf die Schaltfläche Cloud Shell starten, um Cloud Shell im Browser zu öffnen. | |
Wählen Sie im Azure-Portal rechts oben im Menü die Schaltfläche Cloud Shell aus. |
So verwenden Sie Azure Cloud Shell:
Starten Sie Cloud Shell.
Wählen Sie die Schaltfläche Kopieren für einen Codeblock (oder Befehlsblock) aus, um den Code oder Befehl zu kopieren.
Fügen Sie den Code oder Befehl mit STRG+UMSCHALT+V unter Windows und Linux oder CMD+UMSCHALT+V unter macOS in die Cloud Shell-Sitzung ein.
Drücken Sie die EINGABETASTE, um den Code oder Befehl auszuführen.
Einrichten
In diesem Abschnitt erfahren Sie, wie Sie ein API für Gremlin-Konto erstellen und ein Node.js-Projekt einrichten, um die Bibliothek zum Herstellen einer Verbindung mit dem Konto zu verwenden.
Erstellen eines API für Gremlin-Kontos
Das API für Gremlin-Konto sollte vor der Verwendung der Node.js-Bibliothek erstellt werden. Darüber hinaus ist es hilfreich, wenn die Datenbank und der Graph bereits vorhanden sind.
Erstellen Sie Shellvariablen für accountName, resourceGroupName und 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"
Melden Sie sich mithilfe von
az login
bei der Azure CLI an, falls Sie dies noch nicht getan haben.Verwenden Sie
az group create
, um eine neue Ressourcengruppe in Ihrem Abonnement zu erstellen.az group create \ --name $resourceGroupName \ --location $location
Verwenden Sie
az cosmosdb create
, um ein neues „API für Gremlin“-Konto mit Standardeinstellungen zu erstellen.az cosmosdb create \ --resource-group $resourceGroupName \ --name $accountName \ --capabilities "EnableGremlin" \ --locations regionName=$location \ --enable-free-tier true
Hinweis
Sie können pro Azure-Abonnement maximal ein Azure Cosmos DB-Konto im Free-Tarif einrichten und müssen sich beim Erstellen des Kontos anmelden. Ist dieser Befehl zum Anwenden des tarifspezifischen Rabatts für den Free-Tarif nicht erfolgreich, bedeutet dies, dass bereits ein anderes Konto im Abonnement mit dem Free-Tarif aktiviert wurde.
Rufen Sie mithilfe von
az cosmosdb show
den API für Gremlin-Endpunkt NAME für das Konto ab:az cosmosdb show \ --resource-group $resourceGroupName \ --name $accountName \ --query "name"
Ermitteln Sie mit
az-cosmosdb-keys-list
den SCHLÜSSEL in der Liste der Schlüssel für das Konto:az cosmosdb keys list \ --resource-group $resourceGroupName \ --name $accountName \ --type "keys" \ --query "primaryMasterKey"
Notieren Sie sich die Werte für NAME und SCHLÜSSEL. Sie verwenden diese Anmeldeinformationen später.
Erstellen Sie mithilfe von
az cosmosdb gremlin database create
eine Datenbank mit der Bezeichnungcosmicworks
:az cosmosdb gremlin database create \ --resource-group $resourceGroupName \ --account-name $accountName \ --name "cosmicworks"
Erstellen Sie mithilfe von
az cosmosdb gremlin graph create
einen Graphen. Nennen Sie den Graphenproducts
, und legen Sie den Durchsatz auf400
und den Partitionsschlüsselpfad auf/category
fest.az cosmosdb gremlin graph create \ --resource-group $resourceGroupName \ --account-name $accountName \ --database-name "cosmicworks" \ --name "products" \ --partition-key-path "/category" \ --throughput 400
Erstellen einer neuen Node.js-Konsolenanwendung:
Erstellen Sie mithilfe Ihres bevorzugten Terminals in einem leeren Ordner eine Node.js-Konsolenanwendung.
Öffnen Sie Ihr Terminal in einem leeren Ordner.
Initialisieren Sie ein neues Modul:
npm init es6 --yes
Erstellen Sie die Datei app.js:
touch app.js
Installieren des npm-Pakets
Fügen Sie das npm-Paket gremlin
zum Node.js-Projekt hinzu.
Öffnen Sie die Datei package.json, und ersetzen Sie den Inhalt durch die folgende JSON-Konfiguration:
{ "main": "app.js", "type": "module", "scripts": { "start": "node app.js" }, "dependencies": { "gremlin": "^3.*" } }
Verwenden Sie den Befehl
npm install
, um alle Pakete zu installieren, die in der Datei package.json angegeben sind:npm install
Konfigurieren von Umgebungsvariablen
Um die zuvor in diesem Schnellstart abgerufenen Werte von NAME und URI zu verwenden, speichern Sie sie in neuen Umgebungsvariablen auf dem lokalen Computer, auf dem die Anwendung ausgeführt wird.
Um die Umgebungsvariable festzulegen, verwenden Sie Ihr Terminal, um die Werte als
COSMOS_ENDPOINT
bzw.COSMOS_KEY
zu speichern.export COSMOS_GREMLIN_ENDPOINT="<account-name>" export COSMOS_GREMLIN_KEY="<account-key>"
Überprüfen Sie, ob die Umgebungsvariablen richtig festgelegt wurden.
printenv COSMOS_GREMLIN_ENDPOINT printenv COSMOS_GREMLIN_KEY
Codebeispiele
- Authentifizieren des Clients
- Erstellen von Vertices
- Erstellen von Kanten
- Abfragescheitelpunkte und Kanten
Der Code in diesem Artikel stellt eine Verbindung mit einer Datenbank namens cosmicworks
und einem Graphen mit dem Namen products
her. Der Code fügt dem Graphen dann Vertices und Kanten hinzu, bevor die hinzugefügten Elemente durchlaufen werden.
Authentifizieren des Clients
Anwendungsanforderungen an die meisten Azure-Dienste müssen autorisiert werden. Verwenden Sie für die API für Gremlin die Werte für NAME und URI, die Sie zuvor in dieser Schnellstartanleitung abgerufen haben.
Öffnen Sie die Datei app.js.
Importieren Sie das
gremlin
Modul.import gremlin from 'gremlin'
Erstellen Sie die Variablen
accountName
undaccountKey
. Speichern Sie die UmgebungsvariablenCOSMOS_GREMLIN_ENDPOINT
undCOSMOS_GREMLIN_KEY
als Werte für die jeweiligen Variablen.const accountName = process.env.COSMOS_GREMLIN_ENDPOINT const accountKey = process.env.COSMOS_GREMLIN_KEY
Verwenden Sie
PlainTextSaslAuthenticator
, um ein neues Objekt für die Anmeldeinformationen des Kontos zu erstellen:const credentials = new gremlin.driver.auth.PlainTextSaslAuthenticator( '/dbs/cosmicworks/colls/products', `${accountKey}` )
Verwenden Sie
Client
, um unter Verwendung der Remoteserveranmeldeinformationen und des Serialisierungsmoduls GraphSON 2.0 eine Verbindung herzustellen. Verwenden Sie dannOpen
, um eine neue Verbindung mit dem Server zu erstellen.const client = new gremlin.driver.Client( `wss://${accountName}.gremlin.cosmos.azure.com:443/`, { credentials, traversalsource: 'g', rejectUnauthorized: true, mimeType: 'application/vnd.gremlin-v2.0+json' } ) client.open()
Erstellen von Vertices
Nachdem die Anwendung mit dem Konto verbunden wurde, verwenden Sie die Gremlin-Standardsyntax, um Vertices zu erstellen.
Verwenden Sie
submit
, um serverseitig einen Befehl für das API für Gremlin-Konto auszuführen. Erstellen Sie den Vertex product mit den folgenden Eigenschaften:Wert label product
id 68719518371
name
Kiama classic surfboard
price
285.55
category
surfboards
await client.submit( 'g.addV(\'product\').property(\'id\', prop_id).property(\'name\', prop_name).property(\'price\', prop_price).property(\'category\', prop_partition_key)', { prop_id: '68719518371', prop_name: 'Kiama classic surfboard', prop_price: 285.55, prop_partition_key: 'surfboards' } )
Erstellen Sie einen zweiten Vertex vom Typ product mit den folgenden Eigenschaften:
Wert label product
id 68719518403
name
Montau Turtle Surfboard
price
600.00
category
surfboards
await client.submit( 'g.addV(\'product\').property(\'id\', prop_id).property(\'name\', prop_name).property(\'price\', prop_price).property(\'category\', prop_partition_key)', { prop_id: '68719518403', prop_name: 'Montau Turtle Surfboard', prop_price: 600.00, prop_partition_key: 'surfboards' } )
Erstellen Sie einen dritten Vertex vom Typ product mit den folgenden Eigenschaften:
Wert label product
id 68719518409
name
Bondi Twin Surfboard
price
585.50
category
surfboards
await client.submit( 'g.addV(\'product\').property(\'id\', prop_id).property(\'name\', prop_name).property(\'price\', prop_price).property(\'category\', prop_partition_key)', { prop_id: '68719518409', prop_name: 'Bondi Twin Surfboard', prop_price: 585.50, prop_partition_key: 'surfboards' } )
Erstellen von Kanten
Erstellen Sie Kanten mithilfe der Gremlin-Syntax, um Beziehungen zwischen Vertices zu definieren.
Erstellen Sie zwischen dem Produkt
Montau Turtle Surfboard
und dem ProduktKiama classic surfboard
eine Kante mit dem Namen replaces.await client.submit( 'g.V([prop_partition_key, prop_source_id]).addE(\'replaces\').to(g.V([prop_partition_key, prop_target_id]))', { prop_partition_key: 'surfboards', prop_source_id: '68719518403', prop_target_id: '68719518371' } )
Tipp
Diese Kantendefinition verwendet die Syntax
g.V(['<partition-key>', '<id>'])
. Alternativ können Sieg.V('<id>').has('category', '<partition-key>')
verwenden.Erstellen Sie eine weitere Kante vom Typ replaces zwischen demselben Produkt und
Bondi Twin Surfboard
.await client.submit( 'g.V([prop_partition_key, prop_source_id]).addE(\'replaces\').to(g.V([prop_partition_key, prop_target_id]))', { prop_partition_key: 'surfboards', prop_source_id: '68719518403', prop_target_id: '68719518409' } )
Abfragescheitelpunkte und Kanten
Verwenden Sie die Gremlin-Syntax, um den Graphen zu durchlaufen und Beziehungen zwischen Vertices zu ermitteln.
Durchlaufen Sie den Graphen, und suchen Sie alle Vertices, die durch
Montau Turtle Surfboard
ersetzt werden.const result = await client.submit( 'g.V().hasLabel(\'product\').has(\'category\', prop_partition_key).has(\'name\', prop_name).outE(\'replaces\').inV()', { prop_partition_key: 'surfboards', prop_name: 'Montau Turtle Surfboard' } )
Schreiben Sie das Ergebnis dieses Durchlaufs in die Konsole.
console.dir(result)
Ausführen des Codes
Überprüfen Sie, ob Ihre Anwendung wie erwartet funktioniert, indem Sie die Anwendung ausführen. Die Anwendung sollte ohne Fehler oder Warnungen ausgeführt werden. Die Ausgabe der Anwendung enthält Daten zu den erstellten und abgefragten Elementen.
Öffnen Sie das Terminal im Node.js-Projektordner.
Verwenden Sie
npm <script>
, um die Anwendung auszuführen: Beachten Sie die Ausgabe der Anwendung:npm start
Bereinigen von Ressourcen
Wenn Sie das API für Gremlin-Konto nicht mehr benötigen, löschen Sie die entsprechende Ressourcengruppe.
Erstellen Sie eine Shell-Variable für resourceGroupName, wenn sie noch nicht vorhanden ist.
# Variable for resource group name resourceGroupName="msdocs-cosmos-gremlin-quickstart"
Verwenden Sie
az group delete
, um die Ressourcengruppe zu löschen:az group delete \ --name $resourceGroupName