Rövid útmutató: Azure Cosmos DB for Apache Gremlin library for Node.js
A KÖVETKEZŐKRE VONATKOZIK: Gremlin
Az Apache Gremlinhez készült Azure Cosmos DB egy teljes körűen felügyelt gráfadatbázis-szolgáltatás, amely a gremlin lekérdezési nyelv használatával implementálja a népszerű Apache Tinkerpop
gráf-számítási keretrendszert. A Gremlin API-ja alacsony súrlódási módot kínál a Gremlin használatának megkezdéséhez egy olyan szolgáltatással, amely minimális felügyelet mellett a lehető legtöbb növekedést és skálázást teszi lehetővé.
Ebben a rövid útmutatóban a gremlin
kódtár segítségével csatlakozhat egy újonnan létrehozott Azure Cosmos DB for Gremlin-fiókhoz.
Kódtár forráskódcsomagja | (npm)
Előfeltételek
- Egy Azure-fiók, aktív előfizetéssel.
- Nincs Azure-előfizetés? Regisztráljon egy ingyenes Azure-fiókra.
- Nem szeretne Azure-előfizetést? Ingyenesen kipróbálhatja az Azure Cosmos DB-t előfizetés nélkül.
- Node.js (LTS)
- Nincs telepítve Node.js? Próbálja ki ezt a rövid útmutatót a GitHub Codespaces.codespaces.new/github/codespaces-blank?quickstart=1)
- Azure parancssori felület (CLI)
Azure Cloud Shell
Az Azure által üzemeltetett Azure Cloud Shell egy interaktív felület, amelyet a böngészőből használhat. A Bash vagy a PowerShell segítségével is használhatja a Cloud Shellt az Azure-szolgáltatásokhoz. A Cloud Shell előre telepített parancsaival futtathatja a jelen cikkben szereplő kódot anélkül, hogy bármit telepítenie kellene a helyi környezetben.
Az Azure Cloud Shell indítása:
Lehetőség | Példa/hivatkozás |
---|---|
Válassza a Kipróbálás lehetőséget egy kód vagy parancsblokk jobb felső sarkában. A Kipróbálás lehetőség választása nem másolja automatikusan a kódot vagy a parancsot a Cloud Shellbe. | ![]() |
Látogasson el a https://shell.azure.com webhelyre, vagy kattintson a Cloud Shell indítása gombra a böngészőben. | ![]() |
Az Azure Portal jobb felső sarkában található menüben kattintson a Cloud Shell gombra. | ![]() |
Az Azure Cloud Shell használata:
Indítsa el a Cloud Shellt.
A kód vagy parancs másolásához kattintson a Másolás gombra egy kódblokkon (vagy parancsblokkon).
Illessze be a kódot vagy parancsot a Cloud Shell-munkamenetbe a Windows és Linux rendszeren a Ctrl Shift+V billentyűkombinációval+, vagy a Cmd+Shift+V macOS rendszeren való kiválasztásával.
A kód vagy parancs futtatásához válassza az Enter lehetőséget .
Beállítás
Ez a szakasz bemutatja, hogyan hozhat létre API-t Gremlin-fiókhoz, és hogyan állíthat be egy Node.js projektet a tár használatával a fiókhoz való csatlakozáshoz.
API létrehozása Gremlin-fiókhoz
A Gremlin API-fiókot a Node.js kódtár használata előtt kell létrehozni. Emellett segít az adatbázis és a gráf helyének megőrzésében is.
Hozzon létre rendszerhéjváltozókat az accountName, a resourceGroupName és a hely számára.
# 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"
Ha még nem tette meg, jelentkezzen be az Azure CLI-be a használatával
az login
.Új
az group create
erőforráscsoport létrehozása az előfizetésben.az group create \ --name $resourceGroupName \ --location $location
Új
az cosmosdb create
API létrehozása Gremlin-fiókhoz alapértelmezett beállításokkal.az cosmosdb create \ --resource-group $resourceGroupName \ --name $accountName \ --capabilities "EnableGremlin" \ --locations regionName=$location \ --enable-free-tier true
Feljegyzés
Azure-előfizetésenként egy ingyenes szintű Azure Cosmos DB-fiókkal rendelkezhet, és a fiók létrehozásakor kell feliratkoznia. Ha ez a parancs nem alkalmazza az ingyenes szintű kedvezményt, ez azt jelenti, hogy az előfizetés egy másik fiókja már engedélyezve lett az ingyenes szinttel.
Kérje le a Gremlin api-végpontjának NEVÉT a fiókhoz a használatával
az cosmosdb show
.az cosmosdb show \ --resource-group $resourceGroupName \ --name $accountName \ --query "name"
Keresse meg a KULCSOT a fiók
az-cosmosdb-keys-list
kulcsainak listájából.az cosmosdb keys list \ --resource-group $resourceGroupName \ --name $accountName \ --type "keys" \ --query "primaryMasterKey"
Jegyezze fel a NAME és a KEY értékeket. Ezeket a hitelesítő adatokat később fogja használni.
Hozzon létre egy, a következővel elnevezett
cosmicworks
adatbázistaz cosmosdb gremlin database create
: .az cosmosdb gremlin database create \ --resource-group $resourceGroupName \ --account-name $accountName \ --name "cosmicworks"
Diagram létrehozása a következő használatával
az cosmosdb gremlin graph create
: . Nevezze el a gráfotproducts
, majd állítsa be az átviteli sebességet400
, és végül állítsa a partíciókulcs elérési útját a következőre/category
: .az cosmosdb gremlin graph create \ --resource-group $resourceGroupName \ --account-name $accountName \ --database-name "cosmicworks" \ --name "products" \ --partition-key-path "/category" \ --throughput 400
Új Node.js konzolalkalmazás létrehozása
Hozzon létre egy Node.js konzolalkalmazást egy üres mappában az előnyben részesített terminál használatával.
Nyissa meg a terminált egy üres mappában.
Új modul inicializálása
npm init es6 --yes
A app.js fájl létrehozása
touch app.js
Az npm-csomag telepítése
Adja hozzá az gremlin
npm-csomagot a Node.js projekthez.
Nyissa meg a package.json fájlt, és cserélje le a tartalmat erre a JSON-konfigurációra.
{ "main": "app.js", "type": "module", "scripts": { "start": "node app.js" }, "dependencies": { "gremlin": "^3.*" } }
A parancs használatával telepítse a
npm install
package.json fájlban megadott összes csomagot.npm install
Környezeti változók konfigurálása
A rövid útmutatóban korábban beszerzett NÉV és URI értékek használatához őrizze meg azokat az alkalmazást futtató helyi gépen lévő új környezeti változókhoz.
A környezeti változó beállításához használja a terminált az értékek
COSMOS_ENDPOINT
COSMOS_KEY
megőrzéséhez.export COSMOS_GREMLIN_ENDPOINT="<account-name>" export COSMOS_GREMLIN_KEY="<account-key>"
Ellenőrizze, hogy a környezeti változók helyesen lettek-e beállítva.
printenv COSMOS_GREMLIN_ENDPOINT printenv COSMOS_GREMLIN_KEY
Kódpéldák
A cikkben szereplő kód egy elnevezett cosmicworks
adatbázishoz és egy gráfhoz products
csatlakozik. A kód ezután a hozzáadott elemek bejárása előtt csúcsokat és éleket ad hozzá a gráfhoz.
Az ügyfél hitelesítése
A legtöbb Azure-szolgáltatáshoz irányuló alkalmazáskéréseket engedélyezni kell. A Gremlin API-hoz használja a rövid útmutatóban korábban beszerzett NAME és URI értékeket.
Nyissa meg a app.js fájlt.
Importálja a modult
gremlin
.import gremlin from 'gremlin'
Létrehozás
accountName
ésaccountKey
változók. Az egyes változók értékeiként tárolja a környezeti ésCOSMOS_GREMLIN_KEY
aCOSMOS_GREMLIN_ENDPOINT
környezeti változókat.const accountName = process.env.COSMOS_GREMLIN_ENDPOINT const accountKey = process.env.COSMOS_GREMLIN_KEY
Új
PlainTextSaslAuthenticator
objektum létrehozása a fiók hitelesítő adataihoz.const credentials = new gremlin.driver.auth.PlainTextSaslAuthenticator( '/dbs/cosmicworks/colls/products', `${accountKey}` )
A
Client
csatlakozáshoz használja a távoli kiszolgáló hitelesítő adatait és a GraphSON 2.0 szerializálót.Open
Ezután hozzon létre egy új kapcsolatot a kiszolgálóval.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()
Csúcspontok létrehozása
Most, hogy az alkalmazás csatlakozott a fiókhoz, használja a standard Gremlin szintaxist csúcspontok létrehozásához.
Parancskiszolgálói oldal futtatására használható
submit
a Gremlin-fiók API-ján. Hozzon létre egy termék csúcspontot a következő tulajdonságokkal:Érték címke 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' } )
Hozzon létre egy második termékcsúcsot az alábbi tulajdonságokkal:
Érték címke 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' } )
Hozzon létre egy harmadik termékcsúcsot az alábbi tulajdonságokkal:
Érték címke 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' } )
Élek létrehozása
Élek létrehozása a Gremlin szintaxissal a csúcsok közötti kapcsolatok definiálásához.
Hozzon létre egy élet a
Montau Turtle Surfboard
csereként elnevezett termékből aKiama classic surfboard
termékre.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.
Ez a peremvonal-definíció a szintaxist
g.V(['<partition-key>', '<id>'])
használja. Másik lehetőségként használhatjag.V('<id>').has('category', '<partition-key>')
a következőt:Hozzon létre egy másik helyettesítő élet ugyanabból a termékből a
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' } )
Lekérdezési csúcsok > élek
A Gremlin szintaxis használatával lépkedhet a gráfon, és felfedezheti a csúcsok közötti kapcsolatokat.
Lépkedje át a gráfot, és keresse meg az
Montau Turtle Surfboard
összes lecserélt csúcsot.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' } )
Írja be a konzolra a bejárás eredményét.
console.dir(result)
A kód futtatása
Ellenőrizze, hogy az alkalmazás az elvárt módon működik-e az alkalmazás futtatásával. Az alkalmazásnak hibák és figyelmeztetések nélkül kell futnia. Az alkalmazás kimenete tartalmazza a létrehozott és lekérdezett elemek adatait.
Nyissa meg a terminált a Node.js projektmappában.
Az alkalmazás futtatásához használható
npm <script>
. Figyelje meg az alkalmazás kimenetét.npm start
Az erőforrások eltávolítása
Ha már nincs szüksége a Gremlin-fiók API-jára, törölje a megfelelő erőforráscsoportot.
Hozzon létre egy rendszerhéjváltozót a resourceGroupName számára, ha még nem létezik.
# Variable for resource group name resourceGroupName="msdocs-cosmos-gremlin-quickstart"
Az erőforráscsoport törlésére használható
az group delete
.az group delete \ --name $resourceGroupName