NoSQL için Azure Cosmos DB'de sayfalandırma

ŞUNUN IÇIN GEÇERLIDIR: NoSQL

NoSQL için Azure Cosmos DB'de sorguların birden çok sonuç sayfası olabilir. Bu belgede, NoSQL için Azure Cosmos DB'nin sorgu sonuçlarını birden çok sayfaya bölmeye karar vermek için kullandığı ölçütler açıklanmaktadır. İsteğe bağlı olarak, birden çok sayfaya yayılan sorgu sonuçlarını yönetmek için devamlılık belirteçlerini kullanabilirsiniz.

Sorgu yürütmeleri

Bazen sorgu sonuçları birden çok sayfaya bölünür. Ayrı bir sorgu yürütmesi her sayfanın sonuçlarını oluşturur. Sorgu sonuçları tek bir yürütmede döndürülemiyorsa, NoSQL için Azure Cosmos DB sonuçları otomatik olarak birden çok sayfaya böler.

değerini ayarlayarak MaxItemCountbir sorgu tarafından döndürülen en fazla öğe sayısını belirtebilirsiniz. MaxItemCount istek başına belirtilir ve sorgu altyapısına bu sayıda veya daha az öğe döndürmesini söyler. Sorgu yürütme başına sonuç sayısına bir sınır getirmek istemiyorsanız olarak ayarlayabilirsiniz MaxItemCount-1 .

Buna ek olarak, sorgu altyapısının sorgu sonuçlarını birden çok sayfaya bölmesi gerekebilecek başka nedenler de vardır. Bu nedenler şunlardır:

  • Kapsayıcı kısıtlandı ve daha fazla sorgu sonucu döndürmek için kullanılabilir RU yoktu
  • Sorgu yürütme yanıtı çok büyük
  • Sorgu yürütme süresi çok uzundu
  • Sorgu altyapısının ek yürütmelerde sonuç döndürmesi daha verimliydi

Sorgu yürütme başına döndürülen öğe sayısı değerinden küçük veya buna eşit.MaxItemCount Ancak, diğer ölçütler sorgunun döndürebileceği sonuç sayısını sınırlamış olabilir. Aynı sorguyu birden çok kez yürütürseniz, sayfa sayısı sabit olmayabilir. Örneğin, bir sorgu kısıtlanırsa sayfa başına daha az kullanılabilir sonuç olabilir ve bu da sorgunun ek sayfaları olduğu anlamına gelir. Bazı durumlarda sorgunuz boş bir sonuç sayfası döndürebilir.

Birden çok sonuç sayfasını işleme

Sorgu sonuçlarının doğru olduğundan emin olmak için tüm sayfalarda ilerlemeniz gerekir. Fazladan sayfa kalmayıncaya kadar sorgu yürütmeye devam etmelisiniz.

Birden çok sayfaya sahip sorgulardan alınan sonuçları işlemeye yönelik bazı örnekler aşağıda verilmiştir:

Devamlılık belirteçleri

.NET SDK ve Java SDK'sında, isteğe bağlı olarak devamlılık belirteçlerini sorgunuzun ilerleme durumu için yer işareti olarak kullanabilirsiniz. NoSQL için Azure Cosmos DB sorgu yürütmeleri sunucu tarafında durum bilgisi içermez ve devamlılık belirteci kullanılarak herhangi bir zamanda sürdürülebilir. Python SDK'sı için devamlılık belirteçleri yalnızca tek bölüm sorguları için desteklenir. Sorgunun kendisinde olması yeterli olmadığından bölüm anahtarının options nesnesinde belirtilmesi gerekir.

Devamlılık belirteçlerini kullanmaya yönelik bazı örnekleri aşağıda bulabilirsiniz:

Sorgu bir devamlılık belirteci döndürürse ek sorgu sonuçları vardır.

NoSQL için Azure Cosmos DB REST API'sinde devamlılık belirteçlerini üst bilgiyle x-ms-continuation yönetebilirsiniz. .NET veya Java SDK ile sorgulamada olduğu gibi, yanıt üst bilgisi boş değilse x-ms-continuation sorgunun ek sonuçları olduğu anlamına gelir.

Aynı SDK sürümünü kullandığınız sürece devamlılık belirteçlerinin süresi hiçbir zaman dolmaz. İsteğe bağlı olarak devamlılık belirtecinin boyutunu kısıtlayabilirsiniz. Kapsayıcınızdaki veri miktarından veya fiziksel bölüm sayısından bağımsız olarak sorgular tek bir devamlılık belirteci döndürür.

GROUP BY veya DISTINCT ile sorgular için devamlılık belirteçlerini kullanamazsınız çünkü bu sorgular önemli miktarda durum depolamayı gerektirir. DISTINCT sorguları için, sorguya ORDER BY eklerseniz devamlılık belirteçlerini kullanabilirsiniz.

Devamlılık belirteci kullanabilen bir sorgu DISTINCT örneği aşağıda verilmiştir:

SELECT DISTINCT VALUE
    e.name
FROM
    employees e
ORDER BY
    e.name