Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Önemli
99,999% kullanılabilirlik hizmet düzeyi sözleşmesi (SLA), anında otomatik ölçeklendirme ve birden çok bölgede otomatik yük devretme ile yüksek ölçekli senaryolar için bir veritabanı çözümü mü arıyorsunuz? NoSQL için Azure Cosmos DB'ye göz önünde bulundurun.
Çevrimiçi analitik işleme (OLAP) grafı uygulamak mı yoksa mevcut bir Apache Gremlin uygulamasını geçirmek mi istiyorsunuz? Microsoft Fabric'te Graph'i göz önünde bulundurun.
Yapılandırılmamış verileri depolamak, yönetmek ve sorgulamak için .NET için Apache Gremlin için Azure Cosmos DB istemci kitaplığını kullanmaya başlayın. Yeni bir hesap oluşturmak, .NET istemci kitaplığı yüklemek, hesaba bağlanmak, yaygın işlemler gerçekleştirmek ve son örnek verilerinizi sorgulamak için bu kılavuzdaki adımları izleyin.
Kitaplık kaynak kodu | Paketi (NuGet)
Önkoşullar
Azure aboneliği
- Eğer bir Azure aboneliğiniz yoksa, başlamadan önce ücretsiz bir hesap oluşturun.
Azure Cloud Shell'deAzure CLI'nın en son sürümü.
- CLI başvuru komutlarını yerel olarak çalıştırmayı tercih ediyorsanız komutunu kullanarak
az loginAzure CLI'da oturum açın.
- CLI başvuru komutlarını yerel olarak çalıştırmayı tercih ediyorsanız komutunu kullanarak
- .NET SDK 9.0 veya üzeri
Ayarlama
İlk olarak, bu kılavuz için hesap ve geliştirme ortamını ayarlayın. Bu bölümde hesap oluşturma, kimlik bilgilerini alma ve geliştirme ortamınızı hazırlama işlemi boyunca size yol gösterilir.
Hesap oluştur
Apache Gremlin hesabı için bir API oluşturarak başlayın. Hesap oluşturulduktan sonra veritabanı ve grafik kaynaklarını oluşturun.
Henüz bir hedef kaynak grubunuz yoksa, aboneliğinizde yeni bir kaynak grubu oluşturmak için komutunu kullanın
az group create.az group create \ --name "<resource-group-name>" \ --location "<location>"az cosmosdb createVarsayılan ayarlarla Apache Gremlin için yeni bir Azure Cosmos DB hesabı oluşturmak için komutunu kullanın.az cosmosdb create \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --locations "regionName=<location>" \ --capabilities "EnableGremlin"adlı
az cosmosdb gremlin database createyeni bir veritabanıcosmicworksoluşturun.az cosmosdb gremlin database create \ --resource-group "<resource-group-name>" \ --account-name "<account-name>" \ --name "cosmicworks"az cosmosdb gremlin graph createadlıproductsyeni bir grafik oluşturmak için komutunu kullanın.az cosmosdb gremlin graph create \ --resource-group "<resource-group-name>" \ --account-name "<account-name>" \ --database-name "cosmicworks" \ --name "products" \ --partition-key-path "/category"
Kimlik bilgilerini alma
Şimdi, son oluşturulan hesaba bağlantı oluşturmak için kullanılacak istemci kitaplığının parolasını alın.
Hesabın ana bilgisayarını almak için
az cosmosdb showkullanın.az cosmosdb show \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --query "{host:name}"Önceki komutların çıkışından
hostözelliğinin değerini kaydedin. Bu özelliğin değeri, bu kılavuzun ilerleyen bölümlerinde kütüphaneye bağlantı kurmak için kullandığınız ana bilgisayardır.az cosmosdb keys list, hesabın anahtarlarını almak için kullanın.az cosmosdb keys list \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --type "keys"Önceki komutların çıkışından
primaryMasterKeyözelliğinin değerini kaydedin. Bu özelliğin değeri, bu kılavuzun ilerleyen bölümlerinde kitaplığa bağlanmak için kullandığınız anahtardır .
Geliştirme ortamını hazırlama
Ardından geliştirme ortamınızı yeni bir proje ve istemci kitaplığıyla yapılandırın. Bu adım, bu kılavuzun geri kalanına geçmeden önce gereken son önkoşuldur.
Boş bir klasörden başlayın.
Yeni bir .NET konsol uygulaması oluşturma
dotnet new consoleGremlin.NetPaketi NuGet'ten içeri aktarın.dotnet add package Gremlin.NetProjeyi oluşturun.
dotnet build
Nesne modeli
| Açıklama | |
|---|---|
GremlinClient |
Gremlin sunucusuna bağlanmak ve sunucuyla etkileşim kurmak için kullanılan istemciyi temsil eder |
GraphTraversalSource |
Gremlin dolaşmalarını oluşturmak ve yürütmek için kullanılır |
Kod örnekleri
İstemcinin kimliğini doğrulama
Bu kılavuzda daha önce toplanan kimlik bilgilerini kullanarak istemcinin kimliğini doğrulayarak başlayın.
tümleşik geliştirme ortamınızda (IDE) Program.cs dosyasını açın.
Dosyadaki mevcut tüm içeriği silin.
Aşağıdaki ad alanları için using yönergeleri ekleyin:
Gremlin.Net.DriverGremlin.Net.Structure.IO.GraphSON
using Gremlin.Net.Driver; using Gremlin.Net.Structure.IO.GraphSON;Bu kılavuzun önceki bölümlerinde toplanan kimlik bilgileri için dize değişkenleri oluşturun. Değişkenleri
hostnameveprimaryKeyolarak adlandırın.string hostname = "<host>"; string primaryKey = "<key>";Önceki adımlarda oluşturulan kimlik bilgilerini ve yapılandırma değişkenlerini kullanarak bir
GremlinServeroluşturun. değişkeniniserverolarak adlandırın.GremlinServer server = new( $"{hostname}.gremlin.cosmos.azure.com", 443, enableSsl: true, username: "/dbs/cosmicworks/colls/products", password: primaryKey );Şimdi
GremlinClientdeğişkeni veserveryapılandırmasını kullanarak birGraphSON2MessageSerializeroluşturun.GremlinClient client = new( server, new GraphSON2MessageSerializer() );
Veri ekleme
Ardından, grafiğe yeni köşe ve kenar verileri ekleyin. Yeni verileri oluşturmadan önce mevcut verilerin grafiğini temizleyin.
Graftan
g.V().drop()tüm köşeleri ve kenarları temizlemek için sorguyu çalıştırın.await client.SubmitAsync("g.V().drop()");Gremlin sorgusu ile bir düğüm ekleyin.
string insertVertexQuery = """ 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) """;Tek bir ürün için bir düğüm ekleyin.
await client.SubmitAsync(insertVertexQuery, new Dictionary<string, object> { ["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 });İki ekstra ürün için iki köşe daha ekleyin.
await client.SubmitAsync(insertVertexQuery, new Dictionary<string, object> { ["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 }); await client.SubmitAsync(insertVertexQuery, new Dictionary<string, object> { ["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 });Kenar ekleyen başka bir Gremlin sorgusu oluşturun.
string insertEdgeQuery = """ g.V([prop_partition_key, prop_source_id]) .addE('replaces') .to(g.V([prop_partition_key, prop_target_id])) """;İki kenar ekleyin.
await client.SubmitAsync(insertEdgeQuery, new Dictionary<string, object> { ["prop_partition_key"] = "gear-surf-surfboards", ["prop_source_id"] = "bbbbbbbb-1111-2222-3333-cccccccccccc", ["prop_target_id"] = "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb" }); await client.SubmitAsync(insertEdgeQuery, new Dictionary<string, object> { ["prop_partition_key"] = "gear-surf-surfboards", ["prop_source_id"] = "bbbbbbbb-1111-2222-3333-cccccccccccc", ["prop_target_id"] = "cccccccc-2222-3333-4444-dddddddddddd" });
Veriyi oku
Ardından, daha önce grafiğe eklenmiş olan verileri okuyun.
Benzersiz tanımlayıcıyı ve bölüm anahtarı değerini kullanarak köşeyi okuyan bir sorgu oluşturun.
string readVertexQuery = "g.V([prop_partition_key, prop_id])";Ardından, gerekli parametreleri sağlayarak bir düğüm noktası okuyun.
ResultSet<Dictionary<string, object>> readResults = await client.SubmitAsync<Dictionary<string, object>>(readVertexQuery, new Dictionary<string, object> { ["prop_partition_key"] = "gear-surf-surfboards", ["prop_id"] = "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb" }); Dictionary<string, object> matchedItem = readResults.Single();
Sorgu verileri
Son olarak, grafikteki belirli bir dolaşma veya filtreyle eşleşen tüm verileri bulmak için sorgu kullanın.
Belirli bir düğümden dışarıya doğru giden tüm düğümleri bulan bir sorgu oluşturun.
string findVerticesQuery = """ g.V().hasLabel('product') .has('category', prop_partition_key) .has('name', prop_name) .outE('replaces').inV() """;Belirli ürünü sorgulayan
Montau Turtle Surfboardsorgusunu yürüt.ResultSet<Dictionary<string, object>> findResults = await client.SubmitAsync<Dictionary<string, object>>(findVerticesQuery, new Dictionary<string, object> { ["prop_partition_key"] = "gear-surf-surfboards", ["prop_name"] = "Montau Turtle Surfboard" });Sorgu sonuçları üzerinde yineleme yapın.
foreach (Dictionary<string, object> result in findResults) { // Do something here with each result }
Kodu çalıştırma
Uygulama dizininizde bir terminal kullanarak yeni oluşturulan uygulamayı çalıştırın.
dotnet run
Kaynakları temizleme
Hesaba artık ihtiyacınız kalmadığında, kaynağı silerek hesabı Azure aboneliğinizden kaldırın.
az cosmosdb delete \
--resource-group "<resource-group-name>" \
--name "<account-name>"