Rövid útmutató: Azure Cosmos DB for Apache Gremlin library for Python

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 gremlinpython 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 | (PyPi)

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 beállíthat egy Python-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 Python-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 Python-konzolalkalmazás létrehozása

Hozzon létre egy Python-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. Hozza létre a app.py fájlt.

    touch app.py
    

A PyPI-csomag telepítése

Adja hozzá a gremlinpython PyPI-csomagot a Python-projekthez.

  1. Hozza létre a requirements.txt fájlt.

    touch requirements.txt
    
  2. Adja hozzá a csomagot a gremlinpython Python-csomagindexből a követelmények fájlhoz.

    gremlinpython==3.7.0
    
  3. Telepítse a projekt összes követelményét.

    python install -r requirements.txt
    

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.py fájlt.

  2. Importálás client és serializer a gremlin_python.driver modulból.

    import os
    from gremlin_python.driver import client, serializer
    

    Figyelmeztetés

    A Python verziójától függően előfordulhat, hogy importálnia asyncio kell és felül kell bírálnia az eseményhurok szabályzatát:

    import asyncio
    import sys
    
    if sys.platform == "win32":
        asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
    
  3. Létrehozás ACCOUNT_NAME és ACCOUNT_KEY 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.

    ACCOUNT_NAME = os.environ["COSMOS_GREMLIN_ENDPOINT"]
    ACCOUNT_KEY = os.environ["COSMOS_GREMLIN_KEY"]
    
  4. A Client csatlakozáshoz használja a fiók hitelesítő adatait és a GraphSON 2.0 szerializálót.

    client = client.Client(
        url=f"wss://{ACCOUNT_NAME}.gremlin.cosmos.azure.com:443/",
        traversal_source="g",
        username="/dbs/cosmicworks/colls/products",
        password=f"{ACCOUNT_KEY}",
        message_serializer=serializer.GraphSONSerializersV2d0(),
    )
    

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
    client.submit(
        message=(
            "g.addV('product')"
            ".property('id', prop_id)"
            ".property('name', prop_name)"
            ".property('price', prop_price)"
            ".property('category', prop_partition_key)"
        ),
        bindings={
            "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
    client.submit(
        message=(
            "g.addV('product')"
            ".property('id', prop_id)"
            ".property('name', prop_name)"
            ".property('price', prop_price)"
            ".property('category', prop_partition_key)"
        ),
        bindings={
            "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
    client.submit(
        message=(
            "g.addV('product')"
            ".property('id', prop_id)"
            ".property('name', prop_name)"
            ".property('price', prop_price)"
            ".property('category', prop_partition_key)"
        ),
        bindings={
            "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.

    client.submit(
        message=(
            "g.V([prop_partition_key, prop_source_id])"
            ".addE('replaces')"
            ".to(g.V([prop_partition_key, prop_target_id]))"
        ),
        bindings={
            "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.

    client.submit(
        message=(
            "g.V([prop_partition_key, prop_source_id])"
            ".addE('replaces')"
            ".to(g.V([prop_partition_key, prop_target_id]))"
        ),
        bindings={
            "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.

    result = client.submit(
        message=(
            "g.V().hasLabel('product')"
            ".has('category', prop_partition_key)"
            ".has('name', prop_name)"
            ".outE('replaces').inV()"
        ),
        bindings={
            "prop_partition_key": "surfboards",
            "prop_name": "Montau Turtle Surfboard",
        },
    )
    
  2. Írja be a konzolra a bejárás eredményét.

    print(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 Python-projektmappában.

  2. Az alkalmazás futtatásához használható python <filename> . Figyelje meg az alkalmazás kimenetét.

    python app.py
    

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