Mulai cepat: Pustaka Azure Cosmos DB for Apache Gremlin untuk .NET
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 Gremlin.Net
pustaka untuk menyambungkan ke akun Azure Cosmos DB for Gremlin yang baru dibuat.
Kode sumber pustaka | Paket (NuGet)
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.
- .NET (LTS)
- Belum menginstal .NET? 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 memandikan Anda membuat API untuk akun Gremlin dan menyiapkan proyek .NET untuk menggunakan pustaka untuk menyambungkan ke akun.
Membuat API untuk akun Gremlin
API untuk akun Gremlin harus dibuat sebelum menggunakan pustaka .NET. 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 .NET baru
Buat aplikasi konsol .NET di folder kosong menggunakan terminal pilihan Anda.
Buka terminal Anda di folder kosong.
Gunakan perintah
dotnet new
yang menentukan templat konsol.dotnet new console
Instal paket NuGet
Gremlin.NET
Tambahkan paket NuGet ke proyek .NET.
dotnet add package
Gunakan perintah yang menentukanGremlin.Net
paket NuGet.dotnet add package Gremlin.Net
Buat proyek .NET menggunakan
dotnet build
.dotnet build
Pastikan pembuatan berhasil tanpa kesalahan. Output yang diharapkan dari build akan terlihat seperti ini:
Determining projects to restore... All projects are up-to-date for restore. dslkajfjlksd -> \dslkajfjlksd\bin\Debug\net6.0\dslkajfjlksd.dll Build succeeded. 0 Warning(s) 0 Error(s)
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 Program.cs.
Hapus konten yang ada dalam file.
Tambahkan blok penggunaan untuk
Gremlin.Net.Driver
namespace layanan.using Gremlin.Net.Driver;
Membuat
accountName
variabel string danaccountKey
.COSMOS_GREMLIN_ENDPOINT
Simpan variabel lingkungan danCOSMOS_GREMLIN_KEY
sebagai nilai untuk setiap variabel masing-masing.string accountName = Environment.GetEnvironmentVariable("COSMOS_GREMLIN_ENDPOINT")!; string accountKey = Environment.GetEnvironmentVariable("COSMOS_GREMLIN_KEY")!;
Buat instans baru menggunakan
GremlinServer
kredensial akun.var server = new GremlinServer( hostname: $"{accountName}.gremlin.cosmos.azure.com", port: 443, username: "/dbs/cosmicworks/colls/products", password: $"{accountKey}", enableSsl: true );
Buat instans baru menggunakan
GremlinClient
kredensial server jarak jauh dan serializer GraphSON 2.0 .using var client = new GremlinClient( gremlinServer: server, messageSerializer: new Gremlin.Net.Structure.IO.GraphSON.GraphSON2MessageSerializer() );
Membuat simpul
Sekarang setelah aplikasi terhubung ke akun, gunakan sintaks Gremlin standar untuk membuat simpul.
Gunakan
SubmitAsync
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
await client.SubmitAsync( requestScript: "g.addV('product').property('id', '68719518371').property('name', 'Kiama classic surfboard').property('price', 285.55).property('category', 'surfboards')" );
Buat verteks produk kedua dengan properti ini:
Nilai label product
id 68719518403
name
Montau Turtle Surfboard
price
600.00
category
surfboards
await client.SubmitAsync( requestScript: "g.addV('product').property('id', '68719518403').property('name', 'Montau Turtle Surfboard').property('price', 600.00).property('category', 'surfboards')" );
Buat verteks produk ketiga dengan properti ini:
Nilai label product
id 68719518409
name
Bondi Twin Surfboard
price
585.50
category
surfboards
await client.SubmitAsync( requestScript: "g.addV('product').property('id', '68719518409').property('name', 'Bondi Twin Surfboard').property('price', 585.50).property('category', '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.await client.SubmitAsync( requestScript: "g.V(['surfboards', '68719518403']).addE('replaces').to(g.V(['surfboards', '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
.await client.SubmitAsync( requestScript: "g.V(['surfboards', '68719518403']).addE('replaces').to(g.V(['surfboards', '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.var results = await client.SubmitAsync<Dictionary<string, object>>( requestScript: "g.V().hasLabel('product').has('category', 'surfboards').has('name', 'Montau Turtle Surfboard').outE('replaces').inV()" );
Tulis ke konsol string
[CREATED PRODUCT]\t68719518403
statis . Kemudian, iterasi setiap vertex yang cocok menggunakan perulanganforeach
dan tulis ke konsol pesan yang dimulai dengan[REPLACES PRODUCT]
dan menyertakan bidang produkid
yang cocok sebagai akhiran.Console.WriteLine($"[CREATED PRODUCT]\t68719518403"); foreach (var result in results ?? Enumerable.Empty<Dictionary<string, object>>()) { Console.WriteLine($"[REPLACES PRODUCT]\t{result["id"]}"); }
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 .NET.
Gunakan
dotnet run
untuk menjalankan aplikasi.dotnet run
Amati output dari aplikasi.
[CREATED PRODUCT] 68719518403 [REPLACES PRODUCT] 68719518371 [REPLACES PRODUCT] 68719518409
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