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 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 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
- Úč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.
- Python (nejnovější)
- Nemáte nainstalovaný Python? Vyzkoušejte tento rychlý start v GitHub Codespaces.
- 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 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ě.
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 Pythonu
Pomocí upřednostňovaného terminálu vytvořte konzolovou aplikaci Pythonu v prázdné složce.
Otevřete terminál v prázdné složce.
Vytvořte soubor app.py.
touch app.py
Instalace balíčku PyPI
gremlinpython
Přidejte balíček PyPI do projektu Pythonu.
Vytvořte soubor requirements.txt.
touch requirements.txt
Přidejte balíček z indexu
gremlinpython
balíčků Pythonu do souboru požadavků.gremlinpython==3.7.0
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.
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.py.
Importujte
client
aserializer
zgremlin_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())
Vytváření
ACCOUNT_NAME
aACCOUNT_KEY
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.ACCOUNT_NAME = os.environ["COSMOS_GREMLIN_ENDPOINT"] ACCOUNT_KEY = os.environ["COSMOS_GREMLIN_KEY"]
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.
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", }, )
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", }, )
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.
Vytvořte hranu z
Montau Turtle Surfboard
produktu s názvem nahradit produktemKiama 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žítg.V('<id>').has('category', '<partition-key>')
.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.
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", }, )
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.
Otevřete terminál ve složce projektu Pythonu.
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ů.
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