Sdílet prostřednictvím


Rychlý start: Knihovna Azure Cosmos DB pro Apache Gremlin pro Python

PLATÍ PRO: Skřítek

Azure Cosmos DB pro Apache Gremlin je plně spravovaná databázová služba grafů, která implementuje oblíbenou Apache Tinkerpoparchitekturu 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 gremlinpython se pomocí knihovny připojíte k nově vytvořenému účtu Azure Cosmos DB pro Gremlin.

Balíček zdrojového kódu | knihovny (PyPi)

Požadavky

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. Snímek obrazovky znázorňující příklad možnosti Vyzkoušet pro Azure Cloud Shell
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. Tlačítko pro spuštění Azure Cloud Shellu
Zvolte tlačítko Cloud Shell v pruhu nabídky v pravém horním rohu webu Azure Portal. Snímek obrazovky znázorňující tlačítko Cloud Shell na webu Azure Portal

Použití Azure Cloud Shellu:

  1. Spusťte Cloud Shell.

  2. Výběrem tlačítka Kopírovat v bloku kódu (nebo bloku příkazů) zkopírujte kód nebo příkaz.

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

  4. 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 Pythonu 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 Pythonu. Kromě toho pomáhá mít také databázi a graf na místě.

  1. 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"
    
  2. Pokud jste to ještě neudělali, přihlaste se k Azure CLI pomocí az login.

  3. Slouží az group create k vytvoření nové skupiny prostředků ve vašem předplatném.

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

  5. 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"
    
  6. 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"
    
  7. Poznamenejte si hodnoty NAME a KEY . Tyto přihlašovací údaje použijete později.

  8. Vytvořte databázi s názvem cosmicworks using az cosmosdb gremlin database create.

    az cosmosdb gremlin database create \
        --resource-group $resourceGroupName \
        --account-name $accountName \
        --name "cosmicworks"
    
  9. Vytvoření grafu pomocí az cosmosdb gremlin graph create. Pojmenujte graf products, nastavte propustnost 400na a nakonec nastavte cestu ke klíči oddílu na /categoryhodnotu .

    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 Pythonu

Pomocí upřednostňovaného terminálu vytvořte konzolovou aplikaci Pythonu v prázdné složce.

  1. Otevřete terminál v prázdné složce.

  2. Vytvořte soubor app.py.

    touch app.py
    

Instalace balíčku PyPI

gremlinpython Přidejte balíček PyPI do projektu Pythonu.

  1. Vytvořte soubor requirements.txt.

    touch requirements.txt
    
  2. Přidejte balíček z indexu gremlinpython balíčků Pythonu do souboru požadavků.

    gremlinpython==3.7.0
    
  3. Nainstalujte všechny požadavky na projekt.

    python install -r requirements.txt
    

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.

  1. Pokud chcete nastavit proměnnou prostředí, použijte terminál k uchování hodnot jako COSMOS_ENDPOINT a COSMOS_KEY v uvedeném pořadí.

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

  1. Otevřete soubor app.py.

  2. Importujte client a serializer z gremlin_python.driver modulu.

    import os
    from gremlin_python.driver import client, serializer
    

    Upozorňující

    V závislosti na vaší verzi Pythonu možná budete muset také importovat asyncio a přepsat zásady smyčky událostí:

    import asyncio
    import sys
    
    if sys.platform == "win32":
        asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
    
  3. Vytváření ACCOUNT_NAME a ACCOUNT_KEY proměnné COSMOS_GREMLIN_ENDPOINT Uložte proměnné prostředí a COSMOS_GREMLIN_KEY proměnné prostředí jako hodnoty pro každou příslušnou proměnnou.

    ACCOUNT_NAME = os.environ["COSMOS_GREMLIN_ENDPOINT"]
    ACCOUNT_KEY = os.environ["COSMOS_GREMLIN_KEY"]
    
  4. Slouží Client k připojení pomocí přihlašovacích údajů účtu a serializátoru GraphSON 2.0 .

    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(),
    )
    

Vytváření vrcholů

Teď, když je aplikace připojená k účtu, použijte k vytvoření vrcholů standardní syntaxi Gremlin.

  1. 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
    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. Vytvořte druhý vrchol produktu s těmito vlastnostmi:

    Hodnota
    označit 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. 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
    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",
        },
    )
    

Vytvoření okrajů

Vytvořte hrany pomocí syntaxe Gremlin k definování relací mezi vrcholy.

  1. Vytvořte hranu z Montau Turtle Surfboard produktu s názvem nahradit produktem Kiama classic 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": "68719518371",
        },
    )
    

    Tip

    Toto definování hrany používá g.V(['<partition-key>', '<id>']) syntaxi. Alternativně můžete použít g.V('<id>').has('category', '<partition-key>').

  2. Vytvořte další hranu ze stejného produktu do objektu 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",
        },
    )
    

Vrcholy dotazů a hrany

Pomocí syntaxe Gremlin můžete procházet graf a zjišťovat vztahy mezi vrcholy.

  1. Projděte graf a najděte všechny vrcholy, které Montau Turtle Surfboard nahradí.

    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. Napište do konzoly výsledek této procházení.

    print(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.

  1. Otevřete terminál ve složce projektu Pythonu.

  2. Slouží python <filename> ke spuštění aplikace. Sledujte výstup z aplikace.

    python app.py
    

Vyčištění prostředků

Pokud už rozhraní API pro účet Gremlin nepotřebujete, odstraňte odpovídající skupinu prostředků.

  1. Vytvořte proměnnou prostředí pro resourceGroupName , pokud ještě neexistuje.

    # Variable for resource group name
    resourceGroupName="msdocs-cosmos-gremlin-quickstart"
    
  2. Slouží az group delete k odstranění skupiny prostředků.

    az group delete \
        --name $resourceGroupName
    

Další krok