Mulai cepat: Azure Cosmos DB untuk pustaka Apache Gremlin untuk Python
BERLAKU UNTUK: Gremlin
Azure Cosmos DB for Apache Gremlin adalah layanan database grafik yang dikelola sepenuhnya yang mengimplementasikan kerangka kerja komputasi grafik yang populer Apache Tinkerpop
menggunakan bahasa kueri Gremlin. API untuk Gremlin memberi Anda cara gesekan rendah untuk mulai menggunakan Gremlin dengan layanan yang dapat tumbuh dan meluaskan skala sebanyak yang Anda butuhkan dengan manajemen minimal.
Dalam mulai cepat ini, Anda menggunakan gremlinpython
pustaka untuk menyambungkan ke akun Azure Cosmos DB for Gremlin yang baru dibuat.
Kode sumber pustaka | Paket (PyPi)
Prasyarat
- Akun Azure dengan langganan aktif.
- Tidak ada langganan Azure? Daftar untuk akun Azure gratis.
- Tidak ingin langganan Azure? Anda dapat mencoba Azure Cosmos DB gratis tanpa memerlukan langganan.
- Python (terbaru)
- Belum menginstal Python? Coba mulai cepat ini di GitHub Codespaces.
- Azure Command-Line Interface (CLI)
Azure Cloud Shell
Azure meng-hosting Azure Cloud Shell, lingkungan shell interaktif yang dapat Anda gunakan melalui browser. Anda dapat menggunakan Bash atau PowerShell dengan Cloud Shell untuk bekerja dengan layanan Azure. Anda dapat menggunakan perintah Cloud Shell yang telah diinstal sebelumnya untuk menjalankan kode dalam artikel ini tanpa harus menginstal apa-apa di lingkungan lokal Anda.
Untuk memulai Azure Cloud Shell:
Opsi | Contoh/Tautan |
---|---|
Pilih Coba di pojok kanan atas blok kode atau perintah. Memilih Coba tidak otomatis menyalin kode atau perintah ke Cloud Shell. | ![]() |
Buka https://shell.azure.com, atau pilih tombol Luncurkan Cloud Shell untuk membuka Cloud Shell di browser Anda. | ![]() |
Pilih tombol Cloud Shell pada bilah menu di kanan atas di portal Microsoft Azure. | ![]() |
Untuk menggunakan Azure Cloud Shell:
Mulai Cloud Shell.
Pilih tombol Salin pada blok kode (atau blok perintah) untuk menyalin kode atau perintah.
Tempel kode atau perintah ke dalam sesi Cloud Shell dengan memilih Ctrl+Shift+V di Windows dan Linux, atau dengan memilih Cmd+Shift+V di macOS.
Pilih Masukkan untuk menjalankan kode atau perintah.
Menyiapkan
Bagian ini memandu Anda membuat API untuk akun Gremlin dan menyiapkan proyek Python untuk menggunakan pustaka untuk menyambungkan ke akun.
Membuat API untuk akun Gremlin
API untuk akun Gremlin harus dibuat sebelum menggunakan pustaka Python. Selain itu, ini membantu juga memiliki database dan grafik di tempat.
Buat variabel shell untuk accountName, resourceGroupName, dan location.
# 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"
Jika Anda belum melakukannya, masuk ke Azure CLI menggunakan
az login
.Gunakan
az group create
untuk membuat grup sumber daya baru di langganan Anda.az group create \ --name $resourceGroupName \ --location $location
Gunakan
az cosmosdb create
untuk membuat API baru untuk akun Gremlin dengan pengaturan default.az cosmosdb create \ --resource-group $resourceGroupName \ --name $accountName \ --capabilities "EnableGremlin" \ --locations regionName=$location \ --enable-free-tier true
Catatan
Anda dapat memiliki hingga satu akun Azure Cosmos DB tingkat gratis per langganan Azure dan harus ikut serta saat membuat akun. Jika perintah ini gagal menerapkan diskon tingkat gratis, ini berarti akun lain dalam langganan telah diaktifkan dengan tingkat gratis.
Dapatkan API untuk NAMA titik akhir Gremlin untuk akun menggunakan
az cosmosdb show
.az cosmosdb show \ --resource-group $resourceGroupName \ --name $accountName \ --query "name"
Temukan KEY dari daftar kunci untuk akun dengan
az-cosmosdb-keys-list
.az cosmosdb keys list \ --resource-group $resourceGroupName \ --name $accountName \ --type "keys" \ --query "primaryMasterKey"
Catat nilai NAME dan KEY . Anda menggunakan kredensial ini nanti.
Buat database bernama
cosmicworks
menggunakanaz cosmosdb gremlin database create
.az cosmosdb gremlin database create \ --resource-group $resourceGroupName \ --account-name $accountName \ --name "cosmicworks"
Buat grafik menggunakan
az cosmosdb gremlin graph create
. Beri nama grafikproducts
, lalu atur throughput ke400
, dan akhirnya atur jalur kunci partisi ke/category
.az cosmosdb gremlin graph create \ --resource-group $resourceGroupName \ --account-name $accountName \ --database-name "cosmicworks" \ --name "products" \ --partition-key-path "/category" \ --throughput 400
Membuat aplikasi konsol Python baru
Buat aplikasi konsol Python di folder kosong menggunakan terminal pilihan Anda.
Buka terminal Anda di folder kosong.
Buat file app.py.
touch app.py
Menginstal paket PyPI
gremlinpython
Tambahkan paket PyPI ke proyek Python.
Buat file requirements.txt.
touch requirements.txt
gremlinpython
Tambahkan paket dari Indeks Paket Python ke file persyaratan.gremlinpython==3.7.0
Instal semua persyaratan untuk proyek Anda.
python install -r requirements.txt
Mengonfigurasi variabel lingkungan
Untuk menggunakan nilai NAME dan URI yang diperoleh sebelumnya dalam mulai cepat ini, pertahankan ke variabel lingkungan baru pada komputer lokal yang menjalankan aplikasi.
Untuk mengatur variabel lingkungan, gunakan terminal Anda untuk mempertahankan nilai sebagai
COSMOS_ENDPOINT
danCOSMOS_KEY
masing-masing.export COSMOS_GREMLIN_ENDPOINT="<account-name>" export COSMOS_GREMLIN_KEY="<account-key>"
Validasi bahwa variabel lingkungan diatur dengan benar.
printenv COSMOS_GREMLIN_ENDPOINT printenv COSMOS_GREMLIN_KEY
Contoh kode
Kode dalam artikel ini tersambung ke database bernama cosmicworks
dan grafik bernama products
. Kode kemudian menambahkan simpul dan tepi ke grafik sebelum melintas item yang ditambahkan.
Mengautentikasi klien
Permintaan aplikasi ke sebagian besar layanan Azure harus diotorisasi. Untuk API untuk Gremlin, gunakan nilai NAME dan URI yang diperoleh sebelumnya dalam mulai cepat ini.
Buka file app.py.
Impor
client
danserializer
darigremlin_python.driver
modul.import os from gremlin_python.driver import client, serializer
Peringatan
Bergantung pada versi Python, Anda mungkin juga perlu mengimpor
asyncio
dan mengambil alih kebijakan perulangan peristiwa:import asyncio import sys if sys.platform == "win32": asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
Buat
ACCOUNT_NAME
danACCOUNT_KEY
variabel.COSMOS_GREMLIN_ENDPOINT
Simpan variabel lingkungan danCOSMOS_GREMLIN_KEY
sebagai nilai untuk setiap variabel masing-masing.ACCOUNT_NAME = os.environ["COSMOS_GREMLIN_ENDPOINT"] ACCOUNT_KEY = os.environ["COSMOS_GREMLIN_KEY"]
Gunakan
Client
untuk menyambungkan menggunakan kredensial akun dan serializer 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(), )
Membuat simpul
Sekarang setelah aplikasi terhubung ke akun, gunakan sintaks Gremlin standar untuk membuat simpul.
Gunakan
submit
untuk menjalankan sisi server perintah di API untuk akun Gremlin. Buat vertex produk dengan properti berikut:Nilai label 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", }, )
Buat verteks produk kedua dengan properti ini:
Nilai label 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", }, )
Buat verteks produk ketiga dengan properti ini:
Nilai label 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", }, )
Membuat tepi
Buat tepi menggunakan sintaks Gremlin untuk menentukan hubungan antar simpul.
Buat tepi dari
Montau Turtle Surfboard
produk bernama menggantikan keKiama classic surfboard
produk.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
Penentuan tepi ini menggunakan
g.V(['<partition-key>', '<id>'])
sintaks. Atau, Anda dapat menggunakang.V('<id>').has('category', '<partition-key>')
.Buat yang lain menggantikan tepi dari produk yang sama ke
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", }, )
Simpul kueri & tepi
Gunakan sintaks Gremlin untuk melintasi grafik dan menemukan hubungan antar simpul.
Melintasi grafik dan menemukan semua simpul yang
Montau Turtle Surfboard
menggantikan.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", }, )
Tulis ke konsol hasil traversal ini.
print(result)
Menjalankan kode
Validasi bahwa aplikasi Anda berfungsi seperti yang diharapkan dengan menjalankan aplikasi. Aplikasi harus dijalankan tanpa kesalahan atau peringatan. Output aplikasi mencakup data tentang item yang dibuat dan dikueri.
Buka terminal di folder proyek Python.
Gunakan
python <filename>
untuk menjalankan aplikasi. Amati output dari aplikasi.python app.py
Membersihkan sumber daya
Ketika Anda tidak lagi memerlukan API untuk akun Gremlin, hapus grup sumber daya yang sesuai.
Buat variabel shell untuk resourceGroupName jika belum ada.
# Variable for resource group name resourceGroupName="msdocs-cosmos-gremlin-quickstart"
Gunakan
az group delete
untuk menghapus grup sumber daya.az group delete \ --name $resourceGroupName