Hızlı Başlangıç: Python için Apache Gremlin kitaplığı için Azure Cosmos DB
ŞUNLAR IÇIN GEÇERLIDIR: Gremlin
Apache Gremlin için Azure Cosmos DB, Gremlin sorgu dilini kullanan popüler Apache Tinkerpop
bir graf bilgi işlem çerçevesi uygulayan tam olarak yönetilen bir graf veritabanı hizmetidir. Gremlin API'si, minimum yönetimle gremlin'i istediğiniz kadar büyüyebilen ve ölçeği genişletebilen bir hizmetle kullanmaya başlamanız için düşük uyuşmalı bir yol sunar.
Bu hızlı başlangıçta kitaplığını gremlinpython
kullanarak yeni oluşturulan Gremlin için Azure Cosmos DB hesabına bağlanacaksınız.
Kitaplık kaynak kodu | Paketi (PyPi)
Önkoşullar
- Etkin aboneliği olan bir Azure hesabı.
- Azure aboneliği yok mu? Ücretsiz bir Azure hesabına kaydolun.
- Azure aboneliği istemiyor musunuz? Abonelik gerektirmeden Azure Cosmos DB'i ücretsiz deneyebilirsiniz.
- Python (en son)
- Azure Komut Satırı Arabirimi (CLI)
Azure Cloud Shell
Azure, tarayıcınız aracılığıyla kullanabileceğiniz etkileşimli bir kabuk ortamı olan Azure Cloud Shell'i barındırıyor. Azure hizmetleriyle çalışmak için Cloud Shell ile Bash veya PowerShell kullanabilirsiniz. Yerel ortamınıza herhangi bir şey yüklemek zorunda kalmadan bu makaledeki kodu çalıştırmak için Cloud Shell önceden yüklenmiş komutlarını kullanabilirsiniz.
Azure Cloud Shell'i başlatmak için:
Seçenek | Örnek/Bağlantı |
---|---|
Kodun veya komut bloğunun sağ üst köşesindeki Deneyin'i seçin. Deneyin seçildiğinde kod veya komut otomatik olarak Cloud Shell'e kopyalanmaz. | |
https://shell.azure.comadresine gidin veya Cloud Shell'i tarayıcınızda açmak için Cloud Shell'i Başlat düğmesini seçin. | |
Azure portalının sağ üst kısmındaki menü çubuğunda Cloud Shell düğmesini seçin. |
Azure Cloud Shell'i kullanmak için:
Cloud Shell'i başlatın.
Kodu veya komutu kopyalamak için kod bloğundaki (veya komut bloğundaki) Kopyala düğmesini seçin.
Windows ve Linux'ta Ctrl+Shift V'yi seçerek veya macOS üzerinde Cmd+Shift++V'yi seçerek kodu veya komutu Cloud Shell oturumuna yapıştırın.
Kodu veya komutu çalıştırmak için Enter'ı seçin.
Ayarlama
Bu bölümde Gremlin hesabı için API oluşturma ve hesaba bağlanmak üzere kitaplığı kullanacak bir Python projesi ayarlama adımları açıklanmıştır.
Gremlin hesabı için API oluşturma
Python kitaplığını kullanmadan önce Gremlin hesabı için API oluşturulmalıdır. Ayrıca, veritabanının ve grafiğin yerinde olması da yardımcı olur.
accountName, resourceGroupName ve location için kabuk değişkenleri oluşturun.
# 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"
Henüz yapmadıysanız kullanarak
az login
Azure CLI'da oturum açın.Aboneliğinizde yeni bir kaynak grubu oluşturmak için kullanın
az group create
.az group create \ --name $resourceGroupName \ --location $location
Varsayılan ayarlarla Gremlin hesabı için yeni bir API oluşturmak için kullanın
az cosmosdb create
.az cosmosdb create \ --resource-group $resourceGroupName \ --name $accountName \ --capabilities "EnableGremlin" \ --locations regionName=$location \ --enable-free-tier true
Not
Azure aboneliği başına bir ücretsiz katman Azure Cosmos DB hesabına sahip olabilirsiniz. Bunu hesabı oluştururken kabul etmeniz gerekir. Bu komut ücretsiz katman indirimini uygulayamazsa, bu abonelikteki başka bir hesabın ücretsiz katmanla zaten etkinleştirildiği anlamına gelir.
kullanarak
az cosmosdb show
hesabın Gremlin uç nokta ADı API'sini alın.az cosmosdb show \ --resource-group $resourceGroupName \ --name $accountName \ --query "name"
ile hesabın
az-cosmosdb-keys-list
anahtar listesinden KEY değerini bulun.az cosmosdb keys list \ --resource-group $resourceGroupName \ --name $accountName \ --type "keys" \ --query "primaryMasterKey"
AD ve ANAHTAR değerlerini kaydedin. Bu kimlik bilgilerini daha sonra kullanacaksınız.
kullanarak
az cosmosdb gremlin database create
adlıcosmicworks
bir veritabanı oluşturun.az cosmosdb gremlin database create \ --resource-group $resourceGroupName \ --account-name $accountName \ --name "cosmicworks"
kullanarak
az cosmosdb gremlin graph create
bir grafik oluşturun. Grafıproducts
adlandırın, ardından aktarım hızını olarak400
ayarlayın ve son olarak bölüm anahtarı yolunu olarak/category
ayarlayın.az cosmosdb gremlin graph create \ --resource-group $resourceGroupName \ --account-name $accountName \ --database-name "cosmicworks" \ --name "products" \ --partition-key-path "/category" \ --throughput 400
Yeni python konsol uygulaması oluşturma
Tercih ettiğiniz terminali kullanarak boş bir klasörde Python konsol uygulaması oluşturun.
Terminalinizi boş bir klasörde açın.
app.py dosyasını oluşturun.
touch app.py
PyPI paketini yükleme
Python projesine gremlinpython
PyPI paketini ekleyin.
requirements.txt dosyasını oluşturun.
touch requirements.txt
gremlinpython
Paketi Python Paket Dizini'nden gereksinimler dosyasına ekleyin.gremlinpython==3.7.0
Tüm gereksinimleri projenize yükleyin.
python install -r requirements.txt
Ortam değişkenlerini yapılandırma
Bu hızlı başlangıçta daha önce elde edilen AD ve URI değerlerini kullanmak için, bunları uygulamayı çalıştıran yerel makinedeki yeni ortam değişkenlerinde kalıcı hale getirin.
Ortam değişkenini ayarlamak için, değerleri sırasıyla ve
COSMOS_KEY
olarakCOSMOS_ENDPOINT
kalıcı hale getirmek için terminalinizi kullanın.export COSMOS_GREMLIN_ENDPOINT="<account-name>" export COSMOS_GREMLIN_KEY="<account-key>"
Ortam değişkenlerinin doğru ayarlandığını doğrulayın.
printenv COSMOS_GREMLIN_ENDPOINT printenv COSMOS_GREMLIN_KEY
Kod örnekleri
Bu makaledeki kod adlı bir veritabanına ve adlı cosmicworks
products
bir grafa bağlanır. Kod daha sonra eklenen öğeleri geçirmeden önce grafiğe köşeler ve kenarlar ekler.
İstemcinin kimliğini doğrulama
Çoğu Azure hizmeti için uygulama istekleri yetkilendirilmelidir. Gremlin API'sinde , bu hızlı başlangıçta daha önce elde edilen AD ve URI değerlerini kullanın.
app.py dosyasını açın.
Modülden ve
serializer
modülden içeri aktarın.client
gremlin_python.driver
import os from gremlin_python.driver import client, serializer
Uyarı
Python sürümünüze bağlı olarak olay döngüsü ilkesini içeri aktarmanız
asyncio
ve geçersiz kılmanız da gerekebilir:import asyncio import sys if sys.platform == "win32": asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
ve
ACCOUNT_KEY
değişkenleri oluşturunACCOUNT_NAME
.COSMOS_GREMLIN_ENDPOINT
veCOSMOS_GREMLIN_KEY
ortam değişkenlerini ilgili her değişkenin değerleri olarak depolayın.ACCOUNT_NAME = os.environ["COSMOS_GREMLIN_ENDPOINT"] ACCOUNT_KEY = os.environ["COSMOS_GREMLIN_KEY"]
Hesabın kimlik bilgilerini ve GraphSON 2.0 seri hale getiricisini kullanarak bağlanmak için kullanın
Client
.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(), )
Köşe oluşturma
Uygulama hesaba bağlı olduğuna göre köşe oluşturmak için standart Gremlin söz dizimini kullanın.
Gremlin hesabı için API'de sunucu tarafında bir komut çalıştırmak için kullanın
submit
. Aşağıdaki özelliklere sahip bir ürün köşesi oluşturun:Değer etiket 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", }, )
Şu özelliklere sahip ikinci bir ürün köşesi oluşturun:
Değer etiket 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", }, )
Şu özelliklere sahip üçüncü bir ürün köşesi oluşturun:
Değer etiket 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", }, )
Kenar oluşturma
Köşeler arasındaki ilişkileri tanımlamak için Gremlin söz dizimini kullanarak kenarlar oluşturun.
Yerine
Kiama classic surfboard
ürün olarakMontau Turtle Surfboard
adlandırılan üründen bir kenar oluşturun.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", }, )
İpucu
Bu kenar tanımlayıcısı söz dizimini
g.V(['<partition-key>', '<id>'])
kullanır. Alternatif olarak, kullanabilirsinizg.V('<id>').has('category', '<partition-key>')
.Başka bir oluşturma, aynı üründeki kenarı ile
Bondi Twin Surfboard
değiştirir.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", }, )
Sorgu köşeleri ve kenarlar
Grafta geçiş yapmak ve köşeler arasındaki ilişkileri bulmak için Gremlin söz dizimini kullanın.
Grafı çapraz geçin ve yerini alan
Montau Turtle Surfboard
tüm köşeleri bulun.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", }, )
Konsola bu geçişin sonucunu yazın.
print(result)
Kodu çalıştırma
Uygulamayı çalıştırarak uygulamanızın beklendiği gibi çalıştığını doğrulayın. Uygulama hiçbir hata veya uyarı olmadan yürütülmelidir. Uygulamanın çıktısı, oluşturulan ve sorgulanan öğeler hakkındaki verileri içerir.
Python proje klasöründe terminali açın.
Uygulamayı çalıştırmak için kullanın
python <filename>
. Uygulamanın çıkışını gözlemleyin.python app.py
Kaynakları temizleme
Gremlin hesabı için API'ye artık ihtiyacınız kalmadığında ilgili kaynak grubunu silin.
Henüz yoksa resourceGroupName için bir kabuk değişkeni oluşturun.
# Variable for resource group name resourceGroupName="msdocs-cosmos-gremlin-quickstart"
Kaynak grubunu silmek için kullanın
az group delete
.az group delete \ --name $resourceGroupName