Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Penting
Apakah Anda mencari solusi database untuk skenario skala tinggi dengan perjanjian tingkat layanan ketersediaan (SLA) 99,999%, skala otomatis instan, dan failover otomatis di beberapa wilayah? Pertimbangkan Azure Cosmos DB untuk NoSQL.
Apakah Anda ingin menerapkan grafik pemrosesan analitik online (OLAP) atau memigrasikan aplikasi Apache Gremlin yang ada? Pertimbangkan Graph di Microsoft Fabric.
Mulai menggunakan pustaka klien Azure Cosmos DB for Apache Gremlin di Python untuk menyimpan, mengelola, dan mengkueri data yang tidak terstruktur. Ikuti langkah-langkah dalam panduan ini untuk membuat akun baru, menginstal pustaka klien Python, menyambungkan ke akun, melakukan operasi umum, dan mengkueri data sampel akhir Anda.
Kode sumber pustaka | Paket (PyPi)
Prasyarat
Langganan Azure
- Jika Anda tidak memiliki langganan Azure, buatlah akun gratis sebelum Anda memulai.
Versi terbaru Azure CLI di Azure Cloud Shell.
- Jika Anda lebih suka menjalankan perintah referensi CLI secara lokal, masuk ke Azure CLI dengan menggunakan
az loginperintah .
- Jika Anda lebih suka menjalankan perintah referensi CLI secara lokal, masuk ke Azure CLI dengan menggunakan
- Python 3.12 atau yang lebih baru
Menyiapkan
Pertama, siapkan akun dan lingkungan pengembangan untuk panduan ini. Bagian ini memandu Anda melalui proses pembuatan akun, mendapatkan kredensial akun, lalu menyiapkan lingkungan pengembangan Anda.
Buat akun
Mulailah dengan membuat API untuk akun Apache Gremlin. Setelah akun dibuat, buat database dan sumber daya grafik.
Jika Anda belum memiliki grup sumber daya target, gunakan
az group createperintah untuk membuat grup sumber daya baru di langganan Anda.az group create \ --name "<resource-group-name>" \ --location "<location>"az cosmosdb createGunakan perintah untuk membuat akun Azure Cosmos DB for Apache Gremlin baru dengan pengaturan default.az cosmosdb create \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --locations "regionName=<location>" \ --capabilities "EnableGremlin"Buat database baru menggunakan
az cosmosdb gremlin database createbernamacosmicworks.az cosmosdb gremlin database create \ --resource-group "<resource-group-name>" \ --account-name "<account-name>" \ --name "cosmicworks"az cosmosdb gremlin graph createGunakan perintah untuk membuat grafik baru bernamaproducts.az cosmosdb gremlin graph create \ --resource-group "<resource-group-name>" \ --account-name "<account-name>" \ --database-name "cosmicworks" \ --name "products" \ --partition-key-path "/category"
Mendapatkan kredensial
Sekarang, dapatkan kata sandi untuk pustaka klien yang akan digunakan guna membuat koneksi ke akun yang baru saja dibuat.
Gunakan
az cosmosdb showuntuk mendapatkan host untuk akun tersebut.az cosmosdb show \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --query "{host:name}"Catat nilai
hostproperti dari output perintah sebelumnya. Nilai properti ini adalah host yang Anda gunakan nanti dalam panduan ini untuk menyambungkan ke akun dengan pustaka.Gunakan
az cosmosdb keys listuntuk mendapatkan kunci untuk akun tersebut.az cosmosdb keys list \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --type "keys"Catat nilai
primaryMasterKeyproperti dari output perintah sebelumnya. Nilai properti ini adalah kunci yang Anda gunakan nanti dalam panduan ini untuk menyambungkan ke akun dengan pustaka.
Menyiapkan lingkungan pengembangan
Kemudian, konfigurasikan lingkungan pengembangan Anda dengan proyek baru dan pustaka klien. Langkah ini adalah prasyarat terakhir yang diperlukan sebelum beralih ke sisa panduan ini.
Mulai dalam folder kosong.
gremlinpythonImpor paket dari Indeks Paket Python (PyPI).pip install gremlinpythonBuat file app.py.
Model objek
| Deskripsi | |
|---|---|
GremlinClient |
Mewakili klien yang digunakan untuk menyambungkan dan berinteraksi dengan server Gremlin |
GraphTraversalSource |
Digunakan untuk membangun dan menjalankan traversal Gremlin |
Contoh kode
Mengautentikasi klien
Mulailah dengan mengautentikasi klien menggunakan kredensial yang dikumpulkan sebelumnya dalam panduan ini.
Buka file app.py di lingkungan pengembangan terintegrasi (IDE) Anda.
Memasukkan jenis berikut ini dari pustaka
gremlin_python.driver:gremlin_python.driver.clientgremlin_python.driver.serializer
from gremlin_python.driver import client, serializerBuat variabel string untuk kredensial yang dikumpulkan sebelumnya dalam panduan ini. Beri nama variabel
hostnamedanprimary_key.hostname = "<host>" primary_key = "<key>"Buat
Clientobjek menggunakan kredensial dan variabel konfigurasi yang dibuat di langkah-langkah sebelumnya. Beri nama variabelclient.client = client.Client( url=f"wss://{hostname}.gremlin.cosmos.azure.com:443/", traversal_source="g", username="/dbs/cosmicworks/colls/products", password=f"{primary_key}", message_serializer=serializer.GraphSONSerializersV2d0() )
Sisipkan data
Selanjutnya, sisipkan data vertex dan edge baru ke dalam grafik. Sebelum membuat data baru, hapus grafik data yang ada.
Jalankan
g.V().drop()kueri untuk menghapus semua simpul dan tepi dari grafik.client.submit("g.V().drop()").all().result()Buat kueri Gremlin yang menambahkan vertex.
insert_vertex_query = ( "g.addV('product')" ".property('id', prop_id)" ".property('name', prop_name)" ".property('category', prop_category)" ".property('quantity', prop_quantity)" ".property('price', prop_price)" ".property('clearance', prop_clearance)" )Tambahkan vertex untuk satu produk.
client.submit( message=insert_vertex_query, bindings={ "prop_id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb", "prop_name": "Yamba Surfboard", "prop_category": "gear-surf-surfboards", "prop_quantity": 12, "prop_price": 850.00, "prop_clearance": False, }, ).all().result()Tambahkan dua simpul lagi untuk dua produk tambahan.
client.submit( message=insert_vertex_query, bindings={ "prop_id": "bbbbbbbb-1111-2222-3333-cccccccccccc", "prop_name": "Montau Turtle Surfboard", "prop_category": "gear-surf-surfboards", "prop_quantity": 5, "prop_price": 600.00, "prop_clearance": True, }, ).all().result() client.submit( message=insert_vertex_query, bindings={ "prop_id": "cccccccc-2222-3333-4444-dddddddddddd", "prop_name": "Noosa Surfboard", "prop_category": "gear-surf-surfboards", "prop_quantity": 31, "prop_price": 1100.00, "prop_clearance": False, }, ).all().result()Buat kueri Gremlin lain yang menambahkan tepi.
insert_edge_query = ( "g.V([prop_partition_key, prop_source_id])" ".addE('replaces')" ".to(g.V([prop_partition_key, prop_target_id]))" )Tambahkan dua tepi.
client.submit( message=insert_edge_query, bindings={ "prop_partition_key": "gear-surf-surfboards", "prop_source_id": "bbbbbbbb-1111-2222-3333-cccccccccccc", "prop_target_id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb", }, ).all().result() client.submit( message=insert_edge_query, bindings={ "prop_partition_key": "gear-surf-surfboards", "prop_source_id": "bbbbbbbb-1111-2222-3333-cccccccccccc", "prop_target_id": "cccccccc-2222-3333-4444-dddddddddddd", }, ).all().result()
Baca data
Kemudian, baca data yang sebelumnya disisipkan ke dalam grafik.
Buat kueri yang membaca vertex menggunakan pengidentifikasi unik dan nilai kunci partisi.
read_vertex_query = "g.V([prop_partition_key, prop_id])"Kemudian, baca titik sudut dengan menyediakan parameter yang diperlukan.
matched_item = client.submit( message=read_vertex_query, bindings={ "prop_partition_key": "gear-surf-surfboards", "prop_id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb" } ).one()
Mencari data
Terakhir, gunakan kueri untuk menemukan semua data yang cocok dengan traversal atau filter tertentu dalam grafik.
Buat kueri yang menemukan semua simpul yang melintasi keluar dari vertex tertentu.
find_vertices_query = ( "g.V().hasLabel('product')" ".has('category', prop_partition_key)" ".has('name', prop_name)" ".outE('replaces').inV()" )Jalankan kueri yang menentukan produk
Montau Turtle Surfboard.find_results = client.submit( message=find_vertices_query, bindings={ "prop_partition_key": "gear-surf-surfboards", "prop_name": "Montau Turtle Surfboard", }, ).all().result()Lakukan iterasi terhadap hasil kueri.
for result in find_results: # Do something here with each result
Menjalankan kode
Jalankan aplikasi yang baru dibuat menggunakan terminal di direktori aplikasi Anda.
python app.py
Membersihkan sumber daya
Saat Anda tidak lagi memerlukan akun, hapus akun dari langganan Azure Anda dengan menghapus sumber daya.
az cosmosdb delete \
--resource-group "<resource-group-name>" \
--name "<account-name>"