Megosztás a következőn keresztül:


Lapozás az Azure Cosmos DB for NoSQL-ben

A KÖVETKEZŐRE VONATKOZIK: NoSQL

Az Azure Cosmos DB for NoSQL-ben a lekérdezések több oldalnyi eredménnyel rendelkezhetnek. Ez a dokumentum azOkat a feltételeket ismerteti, amelyeket az Azure Cosmos DB for NoSQL lekérdezési motorja használ annak eldöntésére, hogy a lekérdezési eredményeket több oldalra osztja-e. A több oldalra kiterjedő lekérdezési eredmények kezeléséhez szükség esetén folytatási jogkivonatokat is használhat.

Lekérdezésvégrehajtások

Előfordulhat, hogy a lekérdezési eredmények több oldalra vannak felosztva. Az egyes lapok eredményeit külön lekérdezésvégrehajtás hozza létre. Ha a lekérdezési eredmények nem adhatók vissza egyetlen végrehajtás során, az Azure Cosmos DB for NoSQL automatikusan több lapra osztja az eredményeket.

A lekérdezés által visszaadott elemek maximális számát a lekérdezés beállításával MaxItemCountadhatja meg. A MaxItemCount kérésenként megadott érték arra utasítja a lekérdezési motort, hogy adja vissza az elemek számát vagy kevesebbet. MaxItemCount Beállíthatja, -1 hogy ha nem szeretné korlátozni a lekérdezés-végrehajtásonkénti eredmények számát.

Emellett a lekérdezési motornak más oka is lehet, hogy több lapra kell osztania a lekérdezési eredményeket. Ezek az okok a következők:

  • A tároló szabályozva lett, és nem voltak elérhető kérelemegységek a további lekérdezési eredmények visszaadásához
  • A lekérdezés végrehajtásának válasza túl nagy volt
  • A lekérdezés végrehajtásának ideje túl hosszú volt
  • Hatékonyabb volt a lekérdezési motornak az eredmények extra végrehajtásban való visszaadása

A lekérdezés-végrehajtásonként visszaadott elemek száma kisebb vagy egyenlő MaxItemCount. Előfordulhat azonban, hogy más feltételek korlátozták a lekérdezés által visszaadható eredmények számát. Ha ugyanazt a lekérdezést többször hajtja végre, előfordulhat, hogy a lapok száma nem állandó. Ha például egy lekérdezés szabályozva van, előfordulhat, hogy oldalanként kevesebb elérhető eredmény érhető el, ami azt jelenti, hogy a lekérdezés további oldalakkal rendelkezik. Bizonyos esetekben előfordulhat, hogy a lekérdezés üres találati lapot ad vissza.

Több oldalnyi eredmény kezelése

A pontos lekérdezési eredmények biztosítása érdekében minden oldalon haladjon végig. Folytassa a lekérdezések végrehajtását, amíg nincsenek további lapok.

Íme néhány példa a többoldalat tartalmazó lekérdezések eredményeinek feldolgozására:

Folytatási jogkivonatok

A .NET SDK-ban és a Java SDK-ban opcionálisan használhat folytatási jogkivonatokat könyvjelzőként a lekérdezés előrehaladásához. Az Azure Cosmos DB for NoSQL-lekérdezések végrehajtása a kiszolgáló oldalán állapot nélküli, és bármikor folytatható a folytatási jogkivonat használatával. A Python SDK esetében a folytatási jogkivonatok csak egyetlen partíciós lekérdezésekhez támogatottak. A partíciókulcsot meg kell adni a beállításobjektumban, mert nem elegendő magát a lekérdezést használni.

Íme néhány példa a folytatási jogkivonatok használatára:

Ha a lekérdezés egy folytatási jogkivonatot ad vissza, akkor további lekérdezési eredmények is vannak.

Az Azure Cosmos DB for NoSQL REST API-jában a fejléc használatával kezelheti a x-ms-continuation folytatási jogkivonatokat. A .NET- vagy Java SDK-lekérdezéshez hasonlóan, ha a x-ms-continuation válaszfejléc nem üres, az azt jelenti, hogy a lekérdezés további eredményekkel rendelkezik.

Amíg ugyanazt az SDK-verziót használja, a folytatási jogkivonatok soha nem járnak le. Tetszés szerint korlátozhatja a folytatási jogkivonat méretét. A tárolóban lévő adatok mennyiségétől vagy a fizikai partíciók számától függetlenül a lekérdezések egyetlen folytatási jogkivonatot adnak vissza.

A GROUP BY vagy DISTINCT típusú lekérdezésekhez nem használhat folytatási jogkivonatokat, mert ezek a lekérdezések jelentős mennyiségű állapot tárolását igényelnék. A DISTINCT kulcsszót tartalmazó lekérdezésekhez akkor használható folytatási token, ha hozzáadja az ORDER BY kulcsszót a lekérdezéshez.

Íme egy példa egy olyan lekérdezésre, amely DISTINCT egy folytatási jogkivonatot használhat:

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