Rychlý start: Knihovna Azure Cosmos DB pro Apache Gremlin pro Node.js
PLATÍ PRO: Skřítek
Azure Cosmos DB pro Apache Gremlin je plně spravovaná databázová služba grafů, která implementuje oblíbenou Apache Tinkerpop
architekturu grafových výpočtů pomocí dotazovacího jazyka Gremlin. Rozhraní API pro Gremlin poskytuje rychlý způsob, jak začít používat Gremlin se službou, která může růst a škálovat podle potřeby s minimální správou.
V tomto rychlém startu gremlin
se pomocí knihovny připojíte k nově vytvořenému účtu Azure Cosmos DB pro Gremlin.
Balíček zdrojového kódu | knihovny (npm)
Požadavky
- Účet Azure s aktivním předplatným.
- Žádné předplatné Azure? Zaregistrujte si bezplatný účet Azure.
- Nechcete předplatné Azure? Službu Azure Cosmos DB můžete vyzkoušet zdarma bez nutnosti předplatného.
- Node.js (LTS)
- Nemáte nainstalované Node.js? Vyzkoušejte tento rychlý start v GitHub Codespaces.codespaces.new/github/codespaces-blank?quickstart=1).
- Rozhraní příkazového řádku Azure (CLI)
Azure Cloud Shell
Azure hostí interaktivní prostředí Azure Cloud Shell, které můžete používat v prohlížeči. Pro práci se službami Azure můžete v prostředí Cloud Shell použít buď Bash, nebo PowerShell. Předinstalované příkazy Cloud Shellu můžete použít ke spuštění kódu v tomto článku, aniž byste museli instalovat cokoli do místního prostředí.
Spuštění služby Azure Cloud Shell:
Možnost | Příklad nebo odkaz |
---|---|
Vyberte Vyzkoušet v pravém horním rohu bloku kódu nebo příkazu. Výběrem možnosti Vyzkoušet se kód ani příkaz automaticky nekopíruje do Cloud Shellu. | |
Přejděte na adresu https://shell.azure.com nebo výběrem tlačítka Spustit Cloud Shell otevřete Cloud Shell v prohlížeči. | |
Zvolte tlačítko Cloud Shell v pruhu nabídky v pravém horním rohu webu Azure Portal. |
Použití Azure Cloud Shellu:
Spusťte Cloud Shell.
Výběrem tlačítka Kopírovat v bloku kódu (nebo bloku příkazů) zkopírujte kód nebo příkaz.
Vložte kód nebo příkaz do relace Cloud Shellu tak, že ve Windows a Linuxu vyberete ctrl+Shift+V nebo vyberete Cmd+Shift+V v macOS.
Stisknutím klávesy Enter spusťte kód nebo příkaz.
Nastavení
Tato část vás provede vytvořením rozhraní API pro účet Gremlin a nastavením projektu Node.js pro připojení k účtu pomocí knihovny.
Vytvoření rozhraní API pro účet Gremlin
Rozhraní API pro účet Gremlin by se mělo vytvořit před použitím knihovny Node.js. Kromě toho pomáhá mít také databázi a graf na místě.
Vytvořte proměnné prostředí pro accountName, resourceGroupName a umístění.
# 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"
Pokud jste to ještě neudělali, přihlaste se k Azure CLI pomocí
az login
.Slouží
az group create
k vytvoření nové skupiny prostředků ve vašem předplatném.az group create \ --name $resourceGroupName \ --location $location
Slouží
az cosmosdb create
k vytvoření nového rozhraní API pro účet Gremlin s výchozím nastavením.az cosmosdb create \ --resource-group $resourceGroupName \ --name $accountName \ --capabilities "EnableGremlin" \ --locations regionName=$location \ --enable-free-tier true
Poznámka:
Pro každé předplatné Azure můžete mít maximálně jeden účet Azure Cosmos DB úrovně Free a při vytváření tohoto účtu se musíte přihlásit. Pokud se tomuto příkazu nepodaří uplatnit slevu na úroveň Free, znamená to, že u úrovně Free už byl povolený jiný účet v předplatném.
Získejte rozhraní API pro název koncového bodu Gremlin pro účet pomocí
az cosmosdb show
.az cosmosdb show \ --resource-group $resourceGroupName \ --name $accountName \ --query "name"
Najděte klíč ze seznamu klíčů pro účet pomocí
az-cosmosdb-keys-list
.az cosmosdb keys list \ --resource-group $resourceGroupName \ --name $accountName \ --type "keys" \ --query "primaryMasterKey"
Poznamenejte si hodnoty NAME a KEY . Tyto přihlašovací údaje použijete později.
Vytvořte databázi s názvem
cosmicworks
usingaz cosmosdb gremlin database create
.az cosmosdb gremlin database create \ --resource-group $resourceGroupName \ --account-name $accountName \ --name "cosmicworks"
Vytvoření grafu pomocí
az cosmosdb gremlin graph create
. Pojmenujte grafproducts
, nastavte propustnost400
na a nakonec nastavte cestu ke klíči oddílu na/category
hodnotu .az cosmosdb gremlin graph create \ --resource-group $resourceGroupName \ --account-name $accountName \ --database-name "cosmicworks" \ --name "products" \ --partition-key-path "/category" \ --throughput 400
Vytvoření nové konzolové aplikace Node.js
Pomocí upřednostňovaného terminálu vytvořte konzolovou aplikaci Node.js v prázdné složce.
Otevřete terminál v prázdné složce.
Inicializace nového modulu
npm init es6 --yes
Vytvoření souboru app.js
touch app.js
Instalace balíčku npm
gremlin
Přidejte balíček npm do projektu Node.js.
Otevřete soubor package.json a nahraďte obsah touto konfigurací JSON.
{ "main": "app.js", "type": "module", "scripts": { "start": "node app.js" }, "dependencies": { "gremlin": "^3.*" } }
npm install
Pomocí příkazu nainstalujte všechny balíčky zadané v souboru package.json.npm install
Konfigurace proměnných prostředí
Pokud chcete použít hodnoty NAME a URI získané dříve v tomto rychlém startu, zachovají se do nových proměnných prostředí na místním počítači, na kterém běží aplikace.
Pokud chcete nastavit proměnnou prostředí, použijte terminál k uchování hodnot jako
COSMOS_ENDPOINT
aCOSMOS_KEY
v uvedeném pořadí.export COSMOS_GREMLIN_ENDPOINT="<account-name>" export COSMOS_GREMLIN_KEY="<account-key>"
Ověřte, že proměnné prostředí byly správně nastaveny.
printenv COSMOS_GREMLIN_ENDPOINT printenv COSMOS_GREMLIN_KEY
Příklady kódu
Kód v tomto článku se připojí k databázi pojmenované cosmicworks
a grafu s názvem products
. Kód pak přidá vrcholy a hrany do grafu před procházením přidaných položek.
Ověření klienta
Žádosti o aplikace na většinu služeb Azure musí být autorizované. Pro rozhraní API pro Gremlin použijte hodnoty NAME a URI získané dříve v tomto rychlém startu.
Otevřete soubor app.js.
Importujte
gremlin
modul.import gremlin from 'gremlin'
Vytváření
accountName
aaccountKey
proměnnéCOSMOS_GREMLIN_ENDPOINT
Uložte proměnné prostředí aCOSMOS_GREMLIN_KEY
proměnné prostředí jako hodnoty pro každou příslušnou proměnnou.const accountName = process.env.COSMOS_GREMLIN_ENDPOINT const accountKey = process.env.COSMOS_GREMLIN_KEY
Slouží
PlainTextSaslAuthenticator
k vytvoření nového objektu pro přihlašovací údaje účtu.const credentials = new gremlin.driver.auth.PlainTextSaslAuthenticator( '/dbs/cosmicworks/colls/products', `${accountKey}` )
Slouží
Client
k připojení pomocí přihlašovacích údajů vzdáleného serveru a serializátoru GraphSON 2.0 . Pak použijteOpen
k vytvoření nového připojení k serveru.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()
Vytváření vrcholů
Teď, když je aplikace připojená k účtu, použijte k vytvoření vrcholů standardní syntaxi Gremlin.
Slouží
submit
ke spuštění příkazového serveru na straně rozhraní API pro účet Gremlin. Vytvořte vrchol produktu s následujícími vlastnostmi:Hodnota označit 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' } )
Vytvořte druhý vrchol produktu s těmito vlastnostmi:
Hodnota označit 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' } )
Vytvořte třetí vrchol produktu s těmito vlastnostmi:
Hodnota označit 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' } )
Vytvoření okrajů
Vytvořte hrany pomocí syntaxe Gremlin k definování relací mezi vrcholy.
Vytvořte hranu z
Montau Turtle Surfboard
produktu s názvem nahradit produktemKiama classic 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: '68719518371' } )
Tip
Toto definování hrany používá
g.V(['<partition-key>', '<id>'])
syntaxi. Alternativně můžete použítg.V('<id>').has('category', '<partition-key>')
.Vytvořte další hranu ze stejného produktu do objektu
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' } )
Vrcholy dotazů a hrany
Pomocí syntaxe Gremlin můžete procházet graf a zjišťovat vztahy mezi vrcholy.
Projděte graf a najděte všechny vrcholy, které
Montau Turtle Surfboard
nahradí.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' } )
Napište do konzoly výsledek této procházení.
console.dir(result)
Spuštění kódu
Spuštěním aplikace ověřte, že aplikace funguje podle očekávání. Aplikace by se měla spouštět bez chyb nebo upozornění. Výstup aplikace obsahuje data o vytvořených a dotazovaných položkách.
Otevřete terminál ve složce projektu Node.js.
Slouží
npm <script>
ke spuštění aplikace. Sledujte výstup z aplikace.npm start
Vyčištění prostředků
Pokud už rozhraní API pro účet Gremlin nepotřebujete, odstraňte odpovídající skupinu prostředků.
Vytvořte proměnnou prostředí pro resourceGroupName , pokud ještě neexistuje.
# Variable for resource group name resourceGroupName="msdocs-cosmos-gremlin-quickstart"
Slouží
az group delete
k odstranění skupiny prostředků.az group delete \ --name $resourceGroupName