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 MaxItemCount
adhatja 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