Penomoran halaman di Azure Cosmos DB untuk NoSQL
BERLAKU UNTUK: NoSQL
Di Azure Cosmos DB for NoSQL, kueri mungkin memiliki beberapa halaman hasil. Dokumen ini menjelaskan kriteria yang digunakan mesin kueri Azure Cosmos DB untuk NoSQL untuk memutuskan apakah akan membagi hasil kueri menjadi beberapa halaman. Anda dapat secara opsional menggunakan token kelanjutan untuk mengelola hasil kueri yang mencakup beberapa halaman.
Eksekusi kueri
Terkadang hasil kueri dibagi menjadi beberapa halaman. Eksekusi kueri terpisah menghasilkan hasil setiap halaman. Saat hasil kueri tidak dapat dikembalikan dalam satu eksekusi tunggal, Azure Cosmos DB for NoSQL secara otomatis membagi hasil menjadi beberapa halaman.
Anda bisa menentukan jumlah maksimum item yang dikembalikan oleh kueri dengan mengatur MaxItemCount
. MaxItemCount
ditentukan per permintaan dan memberi tahu mesin kueri untuk menampilkan jumlah item tersebut atau jumlah di bawahnya. Anda bisa mengatur MaxItemCount
untuk ini -1
jika Anda tidak ingin membatasi jumlah hasil per eksekusi kueri.
Selain itu, ada alasan lain bahwa mesin kueri mungkin perlu membagi hasil kueri menjadi beberapa halaman. Alasan ini meliputi:
- Kontainer dibatasi dan tidak ada RU yang tersedia untuk mengembalikan lebih banyak hasil kueri
- Respons eksekusi kueri terlalu besar
- Waktu eksekusi kueri terlalu lama
- Lebih efisien bagi mesin kueri untuk mengembalikan hasil dalam eksekusi tambahan
Jumlah item yang dikembalikan per eksekusi kueri kurang dari atau sama dengan MaxItemCount
. Namun, ada kemungkinan bahwa kriteria lain mungkin telah membatasi jumlah hasil yang dapat dikembalikan kueri. Jika Anda menjalankan kueri yang sama beberapa kali, jumlah halaman mungkin tidak konstan. Misalnya, jika kueri dibatasi mungkin ada lebih sedikit hasil yang tersedia per halaman, yang berarti kueri memiliki halaman tambahan. Dalam beberapa kasus, ada kemungkinan juga kueri Anda dapat mengembalikan halaman hasil kosong.
Menangani beberapa halaman hasil
Untuk memastikan hasil kueri akurat, Anda harus meninjau semua halaman. Anda harus terus menjalankan kueri hingga tidak ada halaman tambahan.
Berikut adalah beberapa contoh untuk memproses hasil dari kueri dengan beberapa halaman:
Token Kelanjutan
Di .NET SDK dan Java SDK, Anda dapat secara opsional menggunakan token kelanjutan sebagai marka buku untuk kemajuan kueri Anda. Eksekusi kueri Azure Cosmos DB for NoSQL tanpa status di sisi server dan dapat dilanjutkan kapan saja menggunakan token kelanjutan. Untuk Python SDK, token kelanjutan hanya didukung untuk kueri partisi tunggal. Kunci partisi harus ditentukan dalam objek opsi karena tidak cukup untuk memilikinya dalam kueri itu sendiri.
Berikut adalah beberapa contoh untuk menggunakan token kelanjutan:
Jika kueri mengembalikan token kelanjutan, maka ada hasil kueri tambahan.
Di Azure Cosmos DB untuk REST API NoSQL, Anda dapat mengelola token kelanjutan dengan x-ms-continuation
header . Seperti halnya kueri dengan .NET atau Java SDK, jika x-ms-continuation
header respons tidak kosong, itu berarti kueri memiliki hasil tambahan.
Selama Anda menggunakan versi SDK yang sama, token kelanjutan tidak pernah kedaluwarsa. Anda dapat secara opsional membatasi ukuran token kelanjutan. Terlepas dari jumlah data atau jumlah partisi fisik dalam kontainer Anda, kueri mengembalikan satu token kelanjutan.
Anda tidak dapat menggunakan token kelanjutan untuk kueri dengan GROUP BY atau DISTINCT karena kueri ini akan memerlukan penyimpanan sejumlah besar status. Untuk kueri dengan DISTINCT
, Anda bisa menggunakan token kelanjutan jika Anda menambahkan ORDER BY
ke kueri.
Berikut ini contoh kueri yang DISTINCT
bisa menggunakan token kelanjutan:
SELECT DISTINCT VALUE
e.name
FROM
employees e
ORDER BY
e.name