Aracılığıyla paylaş


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

UYGULANANLAR: 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.

öğesini ayarlayarak MaxItemCountsorgu 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 sınır getirmek istemiyorsanız olarak ayarlayabilirsiniz MaxItemCount-1 .

Ayrıca, 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ütmenin yanıtı çok büyük
  • Sorgu yürütme süresi çok uzundu
  • Sorgu altyapısının ek yürütmelerle 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 MaxItemCounteşittir. 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; 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 olmasını sağlamak için tüm sayfalarda ilerlemeniz gerekir. Ek sayfa kalmayıncaya kadar sorgu yürütmeye devam etmeniz gerekir.

Birden çok sayfaya sahip sorgulardan 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 her zaman 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ı seçenekler nesnesinde belirtilmelidir.

Devamlılık belirteçlerini kullanmaya yönelik bazı örnekler aşağıda verilmiştir:

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, üst bilgiyle x-ms-continuation devamlılık belirteçlerini yönetebilirsiniz. .NET veya Java SDK'sı ile sorgulamada olduğu gibi, x-ms-continuation yanıt üst bilgisi boş değilse, 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çleri kullanamazsınız çünkü bu sorgular önemli miktarda durum depolamayı gerektirebilir. 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