Apache Gremlin için Azure Cosmos DB hakkında sık sorulan sorular

Important

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'yi 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? Graph in Microsoft Fabric'ı göz önünde bulundurun.

Gremlin sorguları

Gremlin sorgularının verimliliğini değerlendirme

executionProfile() önizleme adımı, sorgu yürütme planının analizini sağlamak için kullanılabilir. Bu adımın herhangi bir Gremlin sorgusunun sonuna eklenmesi gerekir. Örneğin, g.V('example').out('relationship') sorgusunun sonuna g.V('example').out('relationship').executionProfile() adımını ekleyerek sonucu elde edebilirsiniz.

Profilin çıkışı köşe nesnelerini, kenar nesnelerini ve çalışma veri kümesinin boyutunu elde etmek için harcanan süreyi gösterir. Bu çıkış, Azure Cosmos DB sorguları için standart maliyet ölçümleriyle ilgilidir.

Diğer sık sorulan sorular

Graf veritabanında sorgu çalıştırırken RU/sn ücretleri nasıl alınır?

Tüm grafik nesneleri, köşeleri ve kenarları arka uçta JSON belgeleri olarak görünür. Gremlin sorgusu bir kerede bir veya birden çok grafik nesnesini değiştirebilir ve maliyet doğrudan sorgu tarafından işlenen nesnelere ve kenarlara bağlıdır. Bu işlem, diğer tüm Azure Cosmos DB API'lerinde olduğu gibi çalışır.

RU ücreti, sonuç kümesine değil, geçişin çalışma verisi kümesine bağlıdır. Bir sorgunun sonuç olarak tek bir köşe aldığı ancak yol boyunca diğer birkaç nesneden geçmesi gerektiği bir örneği düşünün. Bu örnekte maliyet, sonuç köşesini hesaplamada yer alan tüm grafik nesnelerini temel alır.

Apache Gremlin için Azure Cosmos DB'de grafik veritabanının sahip olabileceği en yüksek ölçek nedir?

Azure Cosmos DB, depolamayı ve aktarım hızını gerektiği gibi otomatik olarak ölçeklendirmek için yatay bölümleme kullanır. Kapsayıcıdaki bölüm sayısı, en yüksek aktarım hızını ve depolama kapasitesini belirler. Uygun ölçekte en iyi performans için Gremlin kapsayıcıları için API'ye özgü yönergeleri izleyin. Bölümleme ve en iyi yöntemler hakkında daha fazla bilgi edinmek için [Azure Cosmos DB'de bölümleme makalesine bakın.

C#/.NET geliştirmesi için Microsoft.Azure.Graphs paketini mi yoksa Gremlin.NET mi kullanmalıyım?

Apache Gremlin için Azure Cosmos DB, hizmetin ana bağlayıcıları olarak açık kaynak sürücüleri kullanır. Bu nedenle önerilen seçenek Apache tarafından desteklenen sürücüleri kullanmaktır.

Gremlin sürücülerini kullanarak ekleme saldırılarına karşı nasıl koruma sağlayabilirim?

Çoğu yerel Apache Gremlin sürücüsü, sorgu yürütme için parametre sözlüğü sağlama seçeneğine izin verir. Bu işlev ve (Node.js) kitaplıklarında desteklenir.

Neden "Gremlin Sorgu Derleme Hatası: Herhangi bir yöntem bulunamadı" hatasını alıyorum?

Apache Gremlin için Azure Cosmos DB, Gremlin yüzey alanının bir alt kümesini destekler. Desteklenen adımlar hakkında ayrıntılı bilgi için Gremlin destek makalesine bakın.

Azure Cosmos DB tüm temel Gremlin işlevlerini sağladığından bu hatayı düzeltmek için desteklenen adımları kullanarak Gremlin sorgularınızı yeniden yazın.

Neden "WebSocketException: '101' durum kodu beklendiğinde sunucu '200' durum kodunu döndürdü" hatasını alıyorum?

Bu hata büyük olasılıkla yanlış uç nokta kullanılırken oluşur.

Bu hatayı oluşturan uç nokta şu desene sahiptir: https://<account-name>.documents.azure.com:443/. Bu uç nokta aslında grafik veritabanınızın belge uç noktasıdır.

Kullanılacak doğru uç nokta, şu biçime sahip Gremlin uç noktasıdır: https://<account-name>.gremlin.cosmosdb.azure.com:443/.

Neden "RequestRateIsTooLarge" hatasını alıyorum?

Bu hata, saniye başına ayrılan İstek Birimlerinin sorguya hizmet vermek için yeterli olmadığını gösterir. Bu hata, tüm köşeleri alan bir sorgu çalıştırdığınızda görülür:

g.V()

Bu sorgu, grafikteki tüm köşeleri almayı dener. Bu nedenle, bu sorgunun maliyeti, istek birimleri (RU) açısından en az köşe sayısına eşittir. Saniye başına istek birimi (RU/sn) ayarı bu sorguyu ele almak için ayarlanmalıdır.

Gremlin sürücü bağlantılarım neden sonunda bırakıIıyor?

WebSocket bağlantısı üzerinden Gremlin bağlantısı yapılır. WebSocket bağlantılarının belirli bir yaşam süresi olmasa da Apache Gremlin için Azure Cosmos DB, 30 dakika işlem yapılmadığında boştaki bağlantıları sonlandırır.

Neden yerel Gremlin sürücülerinde akıcı API çağrılarını kullanamıyorum?

Apache Gremlin için Azure Cosmos DB henüz akıcı API çağrılarını desteklememektedir. Akıcı API çağrıları, Apache Gremlin için Azure Cosmos DB'nin şu anda sağlamadığı bayt kodu desteği adlı bir iç biçimlendirme özelliğine dayanır. Bu nedenle en son Gremlin-JavaScript sürücüsü de desteklenmez.

Sorgu için istek birimi ücretini nasıl bulabilirim?

Apache Gremlin için Azure Cosmos DB sorgusunun istek birimi (RU) ücretini birkaç yöntemden birini kullanarak bulabilirsiniz:

  • Azure portalını kullanma

    1. Azure portalınaoturum açın.

    2. Apache Gremlin için yeni bir Azure Cosmos DB hesabı oluşturun ve içine veri yükleyerek başlatın ya da zaten veri içeren mevcut bir hesabı seçin.

    3. Veri Gezgini bölmesine gidin ve üzerinde çalışmak istediğiniz kapsayıcıyı seçin.

    4. Geçerli bir sorgu girin ve Gremlin Sorgusunu Yürüt'e tıklayın.

    5. Yürüttüğüniz isteğin gerçek istek ücretini görüntülemek için Sorgu İstatistikleri'ni seçin.

  • .NET yazılım geliştirme setini (SDK) kullanma

    1. Sonucu ResultSet<> türünde bir nesne olarak almak için bir sorgu çalıştırın: ResultSet<dynamic> results = client.SubmitAsync<dynamic>("g.V().count()").Result;

    2. StatusAttributes dizisini ve x-ms-request-charge dizin oluşturucusunu kullanarak sonuçlardan istek ücretini alın:double requestCharge = (double)results.StatusAttributes["x-ms-request-charge"];

  • Java SDK'sını kullanma

    1. Sonucu ResultSet türünde bir nesne olarak almak için bir sorgu çalıştırın: ResultSet results = client.submit("g.V().count()");

    2. Sonuçlardan, statusAttributes yöntemini ve x-ms-request-charge anahtarını kullanarak istek ücretini alın:Map<String, Object> attributes = results.statusAttributes(); Double requestCharge = (Double) attributes.get("x-ms-request-charge");

İstek ücreti, Gremlin api'sinin döndürdiği yanıt üst bilgilerindeki anahtarın altında x-ms-request-charge kullanılabilir.