Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Hasil query tabel paginasi di DynamoDB
DynamoDB memberi nomor halaman hasil dari operasi Query
. Dengan pemberian nomor halaman, hasil Query
dibagi menjadi "halaman" data berukuran 1 MB (atau kurang). Aplikasi bisa memproses halaman pertama hasil, lalu halaman kedua, dan seterusnya.
Query
tunggal hanya mengembalikan set hasil yang sesuai dalam batas ukuran 1 MB. Untuk menentukan apakah terdapat lebih banyak hasil, dan untuk mengambilkan satu halaman sekaligus, aplikasi harus melakukan hal berikut:
-
Periksa hasil
Query
tingkat rendah:-
Jika hasilnya berisi elemen
LastEvaluatedKey
dan elemen tersebut non-null, lanjutkan ke langkah 2. -
Jika tidak ada
LastEvaluatedKey
pada hasilnya, tidak ada lagi item yang dapat diambil.
-
-
Buat permintaan
Query
baru, dengan parameter yang sama seperti yang sebelumnya. Namun, kali ini, ambil nilaiLastEvaluatedKey
dari langkah 1 dan gunakan sebagai parameterExclusiveStartKey
dalam permintaanQuery
baru. -
Jalankan permintaan
Query
baru. -
Lanjutkan ke langkah 1.
Dengan kata lain, LastEvaluatedKey
dari respons Query
harus digunakan sebagai ExclusiveStartKey
untuk permintaan Query
berikutnya. Jika tidak ada elemen LastEvaluatedKey
dalam respons Query
, maka Anda telah mengambil halaman hasil akhir. Jika LastEvaluatedKey
tidak kosong, bukan berarti ada lebih banyak data di set hasil. Satu-satunya cara untuk mengetahui kapan Anda telah mencapai akhir kumpulan hasil adalah ketika LastEvaluatedKey
kosong.
Anda dapat menggunakan AWS CLI untuk melihat perilaku ini. AWS CLI Mengirimkan Query
permintaan tingkat rendah ke DynamoDB berulang kali, LastEvaluatedKey
hingga tidak ada lagi dalam hasil. Perhatikan AWS CLI contoh berikut yang mengambil judul film dari tahun tertentu.
aws dynamodb query --table-name Movies \ --projection-expression "title" \ --key-condition-expression "#y = :yyyy" \ --expression-attribute-names '{"#y":"year"}' \ --expression-attribute-values '{":yyyy":{"N":"1993"}}' \ --page-size 5 \ --debug
Biasanya, AWS CLI menangani pagination secara otomatis. Namun, dalam contoh ini, AWS CLI --page-size
parameter membatasi jumlah item per halaman. Parameter --debug
mencetak informasi tingkat rendah tentang permintaan dan respons.
Jika Anda menjalankan contoh ini, respons pertama dari DynamoDB terlihat serupa dengan yang berikut ini.
2017-07-07 11:13:15,603 - MainThread - botocore.parsers - DEBUG - Response body: b'{"Count":5,"Items":[{"title":{"S":"A Bronx Tale"}}, {"title":{"S":"A Perfect World"}},{"title":{"S":"Addams Family Values"}}, {"title":{"S":"Alive"}},{"title":{"S":"Benny & Joon"}}], "LastEvaluatedKey":{"year":{"N":"1993"},"title":{"S":"Benny & Joon"}}, "ScannedCount":5}'
LastEvaluatedKey
dalam responsnya menunjukkan bahwa tidak semua item telah diambil. AWS CLI Kemudian mengeluarkan Query
permintaan lain ke DynamoDB. Pola permintaan dan respons ini berlanjut hingga respons akhir.
2017-07-07 11:13:16,291 - MainThread - botocore.parsers - DEBUG - Response body: b'{"Count":1,"Items":[{"title":{"S":"What\'s Eating Gilbert Grape"}}],"ScannedCount":1}'
Tidak adanya LastEvaluatedKey
menunjukkan bahwa tidak ada lagi item yang dapat diambil.
catatan
AWS SDKsMenangani respons DynamoDB tingkat rendah (termasuk ada atau tidak adanya) dan memberikan berbagai LastEvaluatedKey
abstraksi untuk hasil paginasi. Query
Misalnya, antarmuka dokumen SDK untuk Java menyediakan java.util.Iterator
dukungan sehingga Anda dapat berjalan melalui hasil satu per satu.
Untuk contoh kode dalam berbagai bahasa pemrograman, lihat Panduan Memulai Amazon DynamoDB dan AWS SDK dokumentasi untuk bahasa Anda.
Anda juga dapat mengurangi ukuran halaman dengan membatasi jumlah item dalam set hasil, dengan parameter Limit
operasi Query
.
Untuk informasi selengkapnya tentang pembuatan kueri dengan DynamoDB, lihat Menanyakan tabel di DynamoDB.