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 Tinkerpopgrá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

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. Screenshot that shows an example of Try It for Azure Cloud Shell.
Látogasson el a https://shell.azure.com webhelyre, vagy kattintson a Cloud Shell indítása gombra a böngészőben. Button to launch Azure Cloud Shell.
Az Azure Portal jobb felső sarkában található menüben kattintson a Cloud Shell gombra. Screenshot that shows the Cloud Shell button in the Azure portal

Az Azure Cloud Shell használata:

  1. Indítsa el a Cloud Shellt.

  2. A kód vagy parancs másolásához kattintson a Másolás gombra egy kódblokkon (vagy parancsblokkon).

  3. 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.

  4. 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.

  1. 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"
    
  2. Ha még nem tette meg, jelentkezzen be az Azure CLI-be a használatával az login.

  3. Új az group create erőforráscsoport létrehozása az előfizetésben.

    az group create \
        --name $resourceGroupName \
        --location $location
    
  4. Ú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.

  5. 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"
    
  6. Keresse meg a KULCSOT a fiók az-cosmosdb-keys-listkulcsainak listájából.

    az cosmosdb keys list \
        --resource-group $resourceGroupName \
        --name $accountName \
        --type "keys" \
        --query "primaryMasterKey"
    
  7. Jegyezze fel a NAME és a KEY értékeket. Ezeket a hitelesítő adatokat később fogja használni.

  8. 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"
    
  9. Diagram létrehozása a következő használatávalaz cosmosdb gremlin graph create: . Nevezze el a gráfot products, majd állítsa be az átviteli sebességet 400, é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.

  1. Nyissa meg a terminált egy üres mappában.

  2. Új modul inicializálása

    npm init es6 --yes
    
  3. 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.

  1. 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.*"
      }
    }
    
  2. 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.

  1. A környezeti változó beállításához használja a terminált az értékek COSMOS_ENDPOINTCOSMOS_KEY megőrzéséhez.

    export COSMOS_GREMLIN_ENDPOINT="<account-name>"
    export COSMOS_GREMLIN_KEY="<account-key>"
    
  2. 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 productscsatlakozik. 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.

  1. Nyissa meg a app.js fájlt.

  2. Importálja a modult gremlin .

    import gremlin from 'gremlin'
    
  3. Létrehozás accountName és accountKey változók. Az egyes változók értékeiként tárolja a környezeti és COSMOS_GREMLIN_KEY a COSMOS_GREMLIN_ENDPOINT környezeti változókat.

    const accountName = process.env.COSMOS_GREMLIN_ENDPOINT
    const accountKey = process.env.COSMOS_GREMLIN_KEY
    
  4. Új PlainTextSaslAuthenticator objektum létrehozása a fiók hitelesítő adataihoz.

    const credentials = new gremlin.driver.auth.PlainTextSaslAuthenticator(
      '/dbs/cosmicworks/colls/products',
      `${accountKey}`
    )
    
  5. 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.

  1. 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'
      }
    )
    
  2. 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'
      }
    )
    
  3. 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.

  1. Hozzon létre egy élet a Montau Turtle Surfboard csereként elnevezett termékből a Kiama 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álhatja g.V('<id>').has('category', '<partition-key>')a következőt:

  2. 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.

  1. 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'
      }
    )
    
  2. Í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.

  1. Nyissa meg a terminált a Node.js projektmappában.

  2. 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.

  1. 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"
    
  2. Az erőforráscsoport törlésére használható az group delete .

    az group delete \
        --name $resourceGroupName
    

Következő lépés