Hasil query tabel paginasi di DynamoDB - Amazon DynamoDB

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:

  1. 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.

  2. Buat permintaan Query baru, dengan parameter yang sama seperti yang sebelumnya. Namun, kali ini, ambil nilai LastEvaluatedKey dari langkah 1 dan gunakan sebagai parameter ExclusiveStartKey dalam permintaan Query baru.

  3. Jalankan permintaan Query baru.

  4. 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.