Quickstart: Azure Cosmos DB voor Apache Gremlin-bibliotheek voor Node.js
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
bibliotheek om verbinding te maken met een zojuist gemaakt Azure Cosmos DB voor Gremlin-account.
| Broncodepakket voor bibliotheek (npm)
Vereisten
- Een Azure-account met een actief abonnement.
- Geen Azure-abonnement? Meld u aan voor een gratis Azure-account.
- Wilt u geen Azure-abonnement? U kunt Azure Cosmos DB gratis proberen zonder dat u een abonnement nodig hebt.
- Node.js (LTS)
- Hebt u Node.js niet geïnstalleerd? Probeer deze quickstart in GitHub Codespaces.codespaces.new/github/codespaces-blank?quickstart=1)
- Azure-opdrachtregelinterface (CLI)
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. | |
Ga naar https://shell.azure.com, of selecteer de knop Cloud Shell starten om Cloud Shell in uw browser te openen. | |
Klik op de knop Cloud Shell in het menu in de balk rechtsboven in de Azure-portal. |
Azure Cloud Shell gebruiken:
Start Cloud Shell.
Selecteer de knop Kopiëren op een codeblok (of opdrachtblok) om de code of opdracht te kopiëren.
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.
Selecteer Enter om de code of opdracht uit te voeren.
Instellen
In deze sectie wordt u begeleid bij het maken van een API voor een Gremlin-account en het instellen van een Node.js project om de bibliotheek te gebruiken om verbinding te maken met het account.
Een API voor Gremlin-account maken
De API voor het Gremlin-account moet worden gemaakt voordat u de Node.js-bibliotheek gebruikt. Daarnaast helpt het ook om de database en grafiek op hun plaats te krijgen.
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"
Als u dat nog niet hebt gedaan, meldt u zich aan bij de Azure CLI met behulp van
az login
.Hiermee
az group create
maakt u een nieuwe resourcegroep in uw abonnement.az group create \ --name $resourceGroupName \ --location $location
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.
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"
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"
Noteer de waarden NAME en KEY . U gebruikt deze referenties later.
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"
Een grafiek maken met behulp van
az cosmosdb gremlin graph create
. Geef de grafiekproducts
een naam en stel vervolgens de doorvoer400
in 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
Een nieuwe Node.js-consoletoepassing maken
Maak een Node.js consoletoepassing in een lege map met behulp van de gewenste terminal.
Open de terminal in een lege map.
Een nieuwe module initialiseren
npm init es6 --yes
Het app.js-bestand maken
touch app.js
Installeer het npm-pakket
Voeg het gremlin
npm-pakket toe aan het Node.js project.
Open het package.json-bestand en vervang de inhoud door deze JSON-configuratie.
{ "main": "app.js", "type": "module", "scripts": { "start": "node app.js" }, "dependencies": { "gremlin": "^3.*" } }
Gebruik de
npm install
opdracht om alle pakketten te installeren die zijn opgegeven in het package.json-bestand .npm install
Omgevingsvariabelen configureren
Als u de eerder in deze quickstart verkregen NAAM - en URI-waarden wilt gebruiken, moet u deze behouden tot nieuwe omgevingsvariabelen op de lokale computer waarop de toepassing wordt uitgevoerd.
Als u de omgevingsvariabele wilt instellen, gebruikt u de terminal om de waarden als
COSMOS_ENDPOINT
enCOSMOS_KEY
respectievelijk vast te houden.export COSMOS_GREMLIN_ENDPOINT="<account-name>" export COSMOS_GREMLIN_KEY="<account-key>"
Controleer of de omgevingsvariabelen juist zijn ingesteld.
printenv COSMOS_GREMLIN_ENDPOINT printenv COSMOS_GREMLIN_KEY
Codevoorbeelden
De code in dit artikel maakt verbinding met een database met de naam cosmicworks
en een grafiek met de naam products
. De code voegt vervolgens hoekpunten en randen toe aan de grafiek voordat u de toegevoegde items doorkruist.
De client verifiëren
Toepassingsaanvragen voor de meeste Azure-services moeten worden geautoriseerd. Gebruik voor de API voor Gremlin de waarden NAME en URI die u eerder in deze quickstart hebt verkregen.
Open het app.js-bestand .
Importeer de
gremlin
module.import gremlin from 'gremlin'
Maken
accountName
enaccountKey
variabelen. Sla deCOSMOS_GREMLIN_ENDPOINT
enCOSMOS_GREMLIN_KEY
omgevingsvariabelen op als de waarden voor elke respectieve variabele.const accountName = process.env.COSMOS_GREMLIN_ENDPOINT const accountKey = process.env.COSMOS_GREMLIN_KEY
Hiermee
PlainTextSaslAuthenticator
maakt u een nieuw object voor de referenties van het account.const credentials = new gremlin.driver.auth.PlainTextSaslAuthenticator( '/dbs/cosmicworks/colls/products', `${accountKey}` )
Gebruik
Client
deze optie om verbinding te maken met behulp van de referenties van de externe server en de GraphSON 2.0-serializer . Gebruik vervolgensOpen
om een nieuwe verbinding met de server te maken.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()
Hoekpunten maken
Nu de toepassing is verbonden met het account, gebruikt u de standaard Gremlin-syntaxis om hoekpunten te maken.
Gebruik
submit
dit om een opdrachtserverzijde uit te voeren op de API voor het Gremlin-account. Maak een productpunt met de volgende eigenschappen:Waarde etiket 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' } )
Maak een tweede productpunt met de volgende eigenschappen:
Waarde etiket 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' } )
Maak een derde productpunt met de volgende eigenschappen:
Waarde etiket 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' } )
Randen maken
Maak randen met behulp van de Gremlin-syntaxis om relaties tussen hoekpunten te definiëren.
Maak een rand van het product met de
Montau Turtle Surfboard
naam vervangt door hetKiama classic surfboard
product.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' } )
Tip
Deze randaffintion maakt gebruik van de
g.V(['<partition-key>', '<id>'])
syntaxis. U kuntg.V('<id>').has('category', '<partition-key>')
ook .Als u een andere rand maakt, vervangt u de rand van hetzelfde product in het
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' } )
Hoekpunten en randen van query's
Gebruik de Gremlin-syntaxis om de grafiek te doorlopen en relaties tussen hoekpunten te ontdekken.
Ga door de grafiek en zoek alle hoekpunten die
Montau Turtle Surfboard
worden vervangen.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' } )
Schrijf naar de console het resultaat van deze doorkruising.
console.dir(result)
De code uitvoeren
Controleer of uw toepassing werkt zoals verwacht door de toepassing uit te voeren. De toepassing moet zonder fouten of waarschuwingen worden uitgevoerd. De uitvoer van de toepassing bevat gegevens over de gemaakte en opgevraagde items.
Open de terminal in de Node.js projectmap.
Gebruik
npm <script>
dit om de toepassing uit te voeren. Bekijk de uitvoer van de toepassing.npm start
Resources opschonen
Wanneer u de API voor het Gremlin-account niet meer nodig hebt, verwijdert u de bijbehorende resourcegroep.
Maak een shellvariabele voor resourceGroupName als deze nog niet bestaat.
# Variable for resource group name resourceGroupName="msdocs-cosmos-gremlin-quickstart"
Gebruik
az group delete
dit om de resourcegroep te verwijderen.az group delete \ --name $resourceGroupName